我给出了一个 Python 字典,看起来像这样:
myDict = {'A':['a','b','c','d','e'],
'B':['f','g','h']}
我想将其转换为具有以下结构的 Pandas 数据框:
key val
0 B f
1 B g
2 B h
3 A a
4 A b
5 A c
6 A d
7 A e
我无法使用标准方法将字典输入 Pandas 数据框中,但我想出了一种可行的方法,但看起来很笨拙。基本上,我创建 2 个包含键和值的列表,转换为另一个字典并将该字典导入到 Pandas 数据框中。我确信我可以使用列表或字典理解来组合一些行,但最终的命令将不可读。我暂时将每一行分开,以便更轻松地阅读代码。
myDict = {'A':['a','b','c','d','e'],
'B':['f','g','h']}
# Column of keys
keys = [[k]*len(v) for k,v in myDict.items()]
# Flatten list
keys = [item for sublist in keys for item in sublist]
# Column of values
values = [v for k,v in myDict.items()]
# Flatten list
values = [item for sublist in values for item in sublist]
key = 'key'
value = 'val'
df = pd.DataFrame({key:keys,value:values})
print(df)
也许我已经盯着这个太久了,但我的问题是是否有一个更简单的内置命令来实现相同的目标。
最佳答案
您可以简单地迭代字典,然后迭代每个列表:
df = pd.DataFrame(
data=[(k, v) for k, l in myDict.items() for v in l],
columns=['key', 'value']
)
关于python - 将 Python 字典 reshape 为 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54368318/