レコードが1つしかない辞書をpandasデータフレームに変換しようとしています。他のソリューションの次のコードを使用しました。
d = {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'}
pd.DataFrame(d.items(), columns=['id', 'cost','name'])
しかし、次のエラーが表示されます。
PandasError: DataFrame constructor not properly called!
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
Python3を使用している可能性があります。 python3にはリストがあります
pd.DataFrame(list(d.items()), columns=['id', 'cost','name'])
辞書から単一行のデータフレームを作成する別の方法は、最初に空のデータフレームを作成し、次に append
ing を作成することです。
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のソリューションよりもかなり遅いため、パフォーマンスが心配な場合はこの方法を選択しないでください。しかし、オプションがあることは常に素晴らしいことです。
この質問には重複しています( 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
列の順序が重要な場合は、columns
にDataFrame
を明示的に指定する必要があることに注意してください。
df = pd.DataFrame(d, columns=['id', 'cost', 'name'])
print(df)
# id cost name
# 0 CS2_056 2 Tap