python - 如何从字典中获取 pandas DataFrame?

标签 python pandas

我有以下字典:

{
  '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/

相关文章:

python - 如何将 Pandas DataFrame 转换为 Discord Embed?

python - Pandas 只识别我的数据框中的一列

python - 在Python中循环找到每个命运的最大值

python - 将打印结果存储在 Python 的数据框中

python - 如何对 list.count() 的结果求和

python - 如何在 Pycharm 中更改终端提示颜色

具有 unicode 范围的 Python 正则表达式匹配不在范围内的字符

python - 在Python程序中使用Linux环境变量

python - 将 python 字典转换为逗号分隔键字符串和逗号分隔值字符串的优雅方法是什么?

python - Pandas :自相关图在哪里?