将字典转换为 pandas 数据框

Posted

技术标签:

【中文标题】将字典转换为 pandas 数据框【英文标题】:Convert a dictionary to a pandas dataframe 【发布时间】:2017-07-16 22:31:07 【问题描述】:

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

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

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

但我收到以下错误:

PandasError: DataFrame constructor not properly called!

【问题讨论】:

Python Dictionary to Pandas Dataframe的可能重复 【参考方案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

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

这行得通。我从另一个问题中得到了我原来的解决方案,但也许它不起作用的原因是因为它只有 1 条记录? 已经做了将近 30 分钟而不是 [d],感谢您的解决方案。【参考方案3】:

可能你正在使用python3。 在python3中我们有列表

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

【讨论】:

【参考方案4】:

从字典中创建具有单行的数据框的另一种方法是先创建一个空数据框,然后将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 的解决方案慢得多,因此如果您担心性能,请绝对不要选择此方法。 但是有选择总是好的。

【讨论】:

【参考方案5】:

将索引参数传递给 DataFrame 构造函数在 python 3 中有效。

import pandas as pd

d =  'id': 'CS2_056', 'cost': 2, 'name': 'Tap'
df = pd.DataFrame(d, index=[0])
print(df)

# Output:
#           id  cost name
#   0  CS2_056     2  Tap

【讨论】:

【参考方案6】:

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

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

df = pd.DataFrame([d])
df

【讨论】:

以上是关于将字典转换为 pandas 数据框的主要内容,如果未能解决你的问题,请参考以下文章

pandas:如何将字典转换为转置数据框? [复制]

将 Pandas 数据框转换为字典

将字典列表转换为 Pandas 数据框

Python Pandas:将嵌套字典转换为数据框

将嵌套字典转换为 pandas 数据框并绘图

Pandas:如何将具有重复索引值的数据框转换为字典