我有以下字典:
{
'aaa':
{
'x1': 879,
'x2': 861,
'x3': 876,
'x4': 873
},
'bbb':
{
'y1': 700,
'y2': 801,
'y3': 900
}
}`
我需要将它转换成 pandas DataFrame:
col1 col2 col3
aaa x1 879
aaa x2 861
aaa x3 876
aaa x4 873
bbb y1 700
bbb y2 801
bbb y3 900
如果我使用 from_dict
函数,则输出不同。
如何获取如上所示的DataFrame?
最佳答案
尝试堆栈
:
d = {
'aaa':
{
'x1': 879,
'x2': 861,
'x3': 876,
'x4': 873
},
'bbb':
{
'y1': 700,
'y2': 801,
'y3': 900
}
}
df = pd.DataFrame(d)
df.stack()
输出:
x1 aaa 879.0
x2 aaa 861.0
x3 aaa 876.0
x4 aaa 873.0
y1 bbb 700.0
y2 bbb 801.0
y3 bbb 900.0
dtype: float64
或获得准确的输出:
df.stack().reset_index().set_axis(['col1', 'col2', 'col3'], axis=1, inplace=False)
输出:
col1 col2 col3
0 x1 aaa 879.0
1 x2 aaa 861.0
2 x3 aaa 876.0
3 x4 aaa 873.0
4 y1 bbb 700.0
5 y2 bbb 801.0
6 y3 bbb 900.0
或者使用melt
:
df.reset_index().melt('index').dropna()
输出:
index variable value
0 x1 aaa 879.0
1 x2 aaa 861.0
2 x3 aaa 876.0
3 x4 aaa 873.0
11 y1 bbb 700.0
12 y2 bbb 801.0
13 y3 bbb 900.0
要获得正确的列命名:
df.rename_axis(['col1']).reset_index().melt('col1', var_name='col2',value_name='col3').dropna()
输出:
col1 col2 col3
0 x1 aaa 879.0
1 x2 aaa 861.0
2 x3 aaa 876.0
3 x4 aaa 873.0
11 y1 bbb 700.0
12 y2 bbb 801.0
13 y3 bbb 900.0
关于python - 如何从字典中获取 pandas DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55462042/