web-dev-qa-db-ja.com

パンダ:シリーズのデータ​​型を文字列に変更

Pandas 2.7でPython 'ver 0.12.0'を使用し、次のようなデータフレームを使用します。

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'])

idシリーズは、いくつかの整数と文字列で構成されています。 dtypeはデフォルトでobjectです。 idのすべてのコンテンツを文字列に変換したい。以下の出力を生成するastype(str)を試しました。

df['id'].astype(str)
0    1
1    5
2    z
3    1
4    1
5    7
6    2
7    6

1)idのすべての要素を文字列に変換するにはどうすればよいですか?

2)私は最終的にデータフレームのインデックス作成にidを使用します。データフレームに文字列インデックスを使用すると、整数インデックスを使用する場合と比べて速度が低下しますか?

43
Zhubarb

strを使用して、idのすべての要素をapplyに変換できます。

df.id.apply(str)

0        123
1        512
2      zhub1
3    12354.3
4        129
5        753
6        295
7        610

OPによる編集:

この問題はPythonバージョン(2.7。)に関連していたと思いますが、これはうまくいきました。

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
71
Amit

このように割り当てる必要があります:-

df['id']= df['id'].astype(str)
37
Rishil Antony

個人的には上記のどれも私にとってはうまくいきませんでした。何をしましたか:

new_str = [str(x) for x in old_obj][0]
1