J'utilise Pandas _ 'ver 0.12.0' avec Python 2.7 et j'ai un cadre de données comme ci-dessous:
df = pd.DataFrame({'id' : [123,512,'zhub1', 12354.3, 129, 753, 295, 610],
'colour': ['black', 'white','white','white',
'black', 'black', 'white', 'white'],
'shape': ['round', 'triangular', 'triangular','triangular','square',
'triangular','round','triangular']
}, columns= ['id','colour', 'shape'])
La série id
est composée de quelques entiers et de chaînes. Son dtype
par défaut est object
. Je veux convertir tout le contenu de id
en chaînes. J'ai essayé astype(str)
, qui produit la sortie ci-dessous.
df['id'].astype(str)
0 1
1 5
2 z
3 1
4 1
5 7
6 2
7 6
1) Comment puis-je convertir tous les éléments de id
en String?
2) J'utiliserai finalement id
pour l'indexation de trames de données. Le fait d’avoir des index de chaîne dans une structure de données ralentirait-il les choses par rapport à un index entier?
Vous pouvez convertir tous les éléments de id en str
en utilisant apply
df.id.apply(str)
0 123
1 512
2 zhub1
3 12354.3
4 129
5 753
6 295
7 610
Edité par OP:
Je pense que le problème était lié à la version Python (2.7.), Qui a fonctionné:
df['id'].astype(basestring)
0 123
1 512
2 zhub1
3 12354.3
4 129
5 753
6 295
7 610
Name: id, dtype: object
Vous devez l'assigner, comme ceci: -
df['id']= df['id'].astype(str)
Personnellement, rien de ce qui précède n'a fonctionné pour moi. Qu'est-ce que:
new_str = [str(x) for x in old_obj][0]