次のようなデータフレームdf
があります。
| name | coverage |
|-------|----------|
| Jason | 25.1 |
辞書に変換したいです。 pandas
で次のコマンドを使用しました。
dict=df.to_dict()
dict
の出力により、次のことがわかりました。
{'coverage': {0: 25.1}, 'name': {0: 'Jason'}}
出力に0
は必要ありません。これは、データフレームdf
の列インデックスが原因でキャプチャされると思います。出力から0
を削除するために何ができますか(インデックスをキャプチャしたくない)。期待される出力:
{'coverage': 25.1, 'name': 'Jason'}
2列のデータセットを表示すると、データフレームではなくシリーズが表示されます。
これを試してください:d = df.set_index('name')['coverage'].to_dict()
これはデータフレームをシリーズに変換して出力します。
ただし、共通キーではなく列を増やすことを目的とする場合は、代わりに「レコード」を使用して配列に格納できます。 d = df.to_dict('r')
。 `
実行可能なコード:
import pandas as pd
df = pd.DataFrame({
'name': ['Jason'],
'coverage': [25.1]
})
print(df.to_dict())
print(df.set_index('name')['coverage'].to_dict())
print(df.to_dict('r'))
返却値:
{'name': {0: 'Jason'}, 'coverage': {0: 25.1}}
{'Jason': 25.1}
[{'name': 'Jason', 'coverage': 25.1}]
そしてもう1つ、予約されている変数名の辞書を使用しないようにしてください。
dict1 = df.to_dict('records')
または
dict2 = df.to_dict('list')
list
:キーは列名、値は列データのリスト
records
:各行は辞書になり、キーは列名、値はセル内のデータになります