1. ホーム
  2. パイソン

[解決済み】Pandasで列を文字列に変換する

2022-04-01 09:41:12

質問

SQLクエリから以下のDataFrameを取得しました。

(Pdb) pp total_rows
     ColumnID  RespondentCount
0          -1                2
1  3030096843                1
2  3030096845                1

で、このようにピボットしたいのです。

total_data = total_rows.pivot_table(cols=['ColumnID'])

(Pdb) pp total_data
ColumnID         -1            3030096843   3030096845
RespondentCount            2            1            1

[1 rows x 3 columns]


total_rows.pivot_table(cols=['ColumnID']).to_dict('records')[0]

{3030096843: 1, 3030096845: 1, -1: 2}

しかし、303カラムが整数ではなく文字列としてキャストされ、このようになることを確認したいと思います。

{'3030096843': 1, '3030096845': 1, -1: 2}

解決方法は?

文字列に変換する方法の1つは アスタイプ :

total_rows['ColumnID'] = total_rows['ColumnID'].astype(str)

しかし、おそらくあなたが探しているのは to_json この関数は、キーを有効な json に変換します (つまり、キーを文字列に変換します)。

In [11]: df = pd.DataFrame([['A', 2], ['A', 4], ['B', 6]])

In [12]: df.to_json()
Out[12]: '{"0":{"0":"A","1":"A","2":"B"},"1":{"0":2,"1":4,"2":6}}'

In [13]: df[0].to_json()
Out[13]: '{"0":"A","1":"A","2":"B"}'

注意: 他のオプションと一緒に、これを保存するためのバッファ/ファイルを渡すことができます...