将字典转换为数据帧的一列,同时将字典行名称保留在另一列 (python) 中



我有几个字典,我想将它们转换为数据帧。

我正在寻找一种方法将整个词典变成一行,同时将词典行名保留在另一列中。

这里有一个简短的例子来澄清。我有一本字典:

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

最新更新