web-dev-qa-db-ja.com

辞書をpandasデータフレームに変換します

レコードが1つしかない辞書をpandasデータフレームに変換しようとしています。他のソリューションの次のコードを使用しました。

d =  {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'}

pd.DataFrame(d.items(), columns=['id', 'cost','name'])

しかし、次のエラーが表示されます。

PandasError: DataFrame constructor not properly called!
13
user3302483

Dictには1つのレコード使用リストのみがあります。

import pandas as pd
d =  {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'}
df = pd.DataFrame([d], columns=d.keys())
print df

出力:

   id  cost name
0  CS2_056     2  Tap
31
Serenity

Python3を使用している可能性があります。 python3にはリストがあります

pd.DataFrame(list(d.items()), columns=['id', 'cost','name'])
5

辞書から単一行のデータフレームを作成する別の方法は、最初に空のデータフレームを作成し、次に appending を作成することです。

import pandas as pd 
d =  {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'}
df = pd.DataFrame().append(d, ignore_index=True)
print(df)

   cost       id name
0   2.0  CS2_056  Tap

この方法は@Serenityのソリューションよりもかなり遅いため、パフォーマンスが心配な場合はこの方法を選択しないでください。しかし、オプションがあることは常に素晴らしいことです。

2
bunji

この質問には重複しています( Python Dictionary to Pandas Dataframe )、そこに提供されているものよりも簡単な答えがあると思います。

値をリストに変換します。

d = {'id': ['CS2_056'], 'cost': [2], 'name': ['Tap']}

その後、単に:

df = pd.DataFrame(d)
print(df)
#     cost       id name
#  0     2  CS2_056  Tap


列の順序が重要な場合は、columnsDataFrameを明示的に指定する必要があることに注意してください。

df = pd.DataFrame(d, columns=['id', 'cost', 'name'])
print(df)
#          id  cost name
#  0  CS2_056     2  Tap
1
DeepSpace