pandas:从字典创建数据框
Posted
技术标签:
【中文标题】pandas:从字典创建数据框【英文标题】:pandas: creating a dataframe from a dictionary 【发布时间】:2017-07-03 03:08:41 【问题描述】:拿词典:
dict = 'a':'ham', 'b': 'ham', 'c': 'chicken', 'd': 'beef', 'e': 'chicken'
如何获取此字典并将其转换为以列为值的数据框?即我想要一个数据框显示:
ham chicken beef
0 a c d
1 b e
似乎根本无法得到这种形式!
谢谢
这是一个不同的问题,另一个只是询问如何将字典的值放入数据框中,我在询问如何获得我概述的特定表格
【问题讨论】:
这是一个不同的问题,我不知道为什么这被标记为重复 顺序重要吗?您可能需要将其转换为某种记录形式的有序数据。 【参考方案1】:一点点转换“魔法”:
import pandas as pd
d = 'a':'ham', 'b': 'ham', 'c': 'chicken', 'd': 'beef', 'e': 'chicken'
new_dict = dict()
for key in d:
col = d[key]
try:
new_dict[col].append(key)
except:
new_dict[col] = [key]
df = pd.DataFrame.from_dict(new_dict, orient='index').transpose()
print(df)
# chicken ham beef
# 0 c a d
# 1 e b None
首先,浏览您的原始字典并在名为new_dict
的新字典中创建一个列表。从这个电话from_dict()
和orient='index'
。
【讨论】:
【参考方案2】:我看到 Jan 刚刚发布了一个很好的答案,但我想表明您也可以使用 defaultdict
和列表推导来做到这一点。
import pandas as pd
from collections import defaultdict
dict1 = 'a':'ham', 'b': 'ham', 'c': 'chicken', 'd': 'beef', 'e': 'chicken'
# Set the default as an empty list to store multiple strings with an order
reversed_dict = defaultdict(list)
# Reverse the key-value pairs
for k, v in dict1.items():
reversed_dict[v].append(k)
# Convert each list to a Series and make the dataframe
pd.DataFrame(dict([(k, pd.Series(v)) for k, v in reversed_dict.items()]))
# beef chicken ham
# 0 d c a
# 1 NaN e b
【讨论】:
以上是关于pandas:从字典创建数据框的主要内容,如果未能解决你的问题,请参考以下文章