将字典转换为pandas数据帧

use*_*483 14 python dictionary dataframe pandas

我正在尝试将只有1条记录的字典转换为pandas数据帧.我使用了其他解决方案中的以下代码:

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

pd.DataFrame(d.items(), columns=['id', 'cost','name'])
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

PandasError: DataFrame constructor not properly called!
Run Code Online (Sandbox Code Playgroud)

Ser*_*ity 33

你dict只有一个记录使用列表:

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

输出:

   id  cost name
0  CS2_056     2  Tap
Run Code Online (Sandbox Code Playgroud)

  • 已经用 doinf d 而不是 [d] 将近 30 分钟,感谢您的解决方案。 (2认同)

Imr*_*ali 5

你可能正在使用python3.在python3中我们列出了那里

pd.DataFrame(list(d.items()), columns=['id', 'cost','name'])
Run Code Online (Sandbox Code Playgroud)


bun*_*nji 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
Run Code Online (Sandbox Code Playgroud)

请注意,此方法比 @Serenity 的解决方案慢得多,因此如果您担心性能,请绝对不要选择此方法。但是有选择总是好的。


Dou*_*ugR 5

命令很简单,只需确保将字典括在方括号中即可。

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

df = pd.DataFrame([d])
df
Run Code Online (Sandbox Code Playgroud)


Dee*_*ace 1

虽然这个问题确实有重复(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
Run Code Online (Sandbox Code Playgroud)


请记住,如果列顺序很重要,您仍然需要明确columns提供DataFrame

df = pd.DataFrame(d, columns=['id', 'cost', 'name'])
print(df)
#          id  cost name
#  0  CS2_056     2  Tap
Run Code Online (Sandbox Code Playgroud)