web-dev-qa-db-ja.com

pandasインデックスなしでデータフレームを辞書に変換する方法

次のようなデータフレーム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'} 
9
Symphony

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つ、予約されている変数名の辞書を使用しないようにしてください。

12
Anton vBR
dict1 = df.to_dict('records')

または

dict2 = df.to_dict('list')

list:キーは列名、値は列データのリスト

records:各行は辞書になり、キーは列名、値はセル内のデータになります

7
asimo