我给了一本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数据框,但我已经想出了一个有效但看起来笨拙的方法。基本上,我创建了两个包含键和值的列表,转换为另一个dict并将该dict导入到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)
也许我已经盯着这个看太久了,但我的问题是,是否有一个更简单的、内置的命令来实现同样的目标。
最佳答案
您可以使用一行代码:
pd.DataFrame.from_dict(myDict, orient='index')
.stack()
.reset_index()
.drop('level_1', axis=1)
.rename(columns={'level_0': 'key', 0: 'value'})
key value
0 A a
1 A b
2 A c
3 A d
4 A e
5 B f
6 B g
7 B h
关于python - 将Python字典重塑为Pandas数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54368318/