2017-07-18 1 views
3

Je veux formater une série de chaînes de sorte que l'index soit dans la chaîne quelque part. Exemple série:Récupère l'index de la série pandas dans les données

ser = pd.Series(['CT', 'NY', 'MT'], index=['Jessica', 'Eric', 'Toby']) 
ser 
Jessica CT 
Eric  NY 
Toby  MT 
dtype: object 

La sortie souhaitée:

Jessica Jessica: CT 
Eric   Eric: NY 
Toby   Toby: MT 
dtype: object 

J'ai essayé des variantes de cette:

ser.apply(lambda x: "{}: {}".format(x.index, x)) 

mais il ne fonctionne pas parce que x.index fait référence à la méthode de l'indice de str, pas la série qui a été répétée.

+0

_Avoid répondre à des questions comments._ – user1717828

+0

double possible de [index d'accès à pandas.Series.apply] (https: // stackoverflow .com/questions/18316211/access-index-in-pandas-series-apply) – taras

Répondre

4

Option 1
pd.Index.to_series

ser.index.to_series() + ': ' + ser 

Jessica Jessica: CT 
Eric   Eric: NY 
Toby   Toby: MT 
dtype: object 

Option 2 Mon préféré!
pd.Series.radd

ser.radd(ser.index + ': ') 

Jessica Jessica: CT 
Eric   Eric: NY 
Toby   Toby: MT 
dtype: object 

Option 3

pd.Series(map(': '.join, zip(ser.index, ser)), ser.index) 

Jessica Jessica: CT 
Eric   Eric: NY 
Toby   Toby: MT 
dtype: object