我有几个字典,我想将它们转换为数据帧。
我正在寻找一种方法将整个词典变成一行,同时将词典行名保留在另一列中。
这里有一个简短的例子来澄清。我有一本字典:
example_d= {'R1':[1,2,3,4],'R2':[5,6,7,8],'R3':[10,10,10,10]}
我想将其转换为这样的数据帧:
value R_value
0 1 R1
1 2 R1
2 3 R1
3 4 R1
4 5 R2
5 6 R2
6 7 R2
7 8 R2
8 10 R3
9 10 R3
10 10 R3
11 10 R3
我尝试使用通用字典转换为数据帧命令,例如
pd.DataFrame.from_dict(example_d)
这没有给出预期的结果。
有谁知道一个简单的方法?:-(
使用列表推导和扁平字典来列出元组:
df = pd.DataFrame([(x, k) for k, v in example_d.items() for x in v],
columns = ['value','R_value'])
print (df)
value R_value
0 1 R1
1 2 R1
2 3 R1
3 4 R1
4 5 R2
5 6 R2
6 7 R2
7 8 R2
8 10 R3
9 10 R3
10 10 R3
11 10 R3
大熊猫0.25+的解决方案:
df = pd.Series(example_d).explode().reset_index()
df.columns = ['R_value','value']
print (df)
R_value value
0 R1 1
1 R1 2
2 R1 3
3 R1 4
4 R2 5
5 R2 6
6 R2 7
7 R2 8
8 R3 10
9 R3 10
10 R3 10
11 R3 10