【问题标题】:make a panda dataframe from several nested dictionaries从几个嵌套字典制作熊猫数据框
【发布时间】:2018-08-01 02:35:14
【问题描述】:

我有一个字典,里面有两个嵌套字典。这是一个最小的例子:

df = {'line1': {'a': {'a': 1, 'b': 2}, 'b': {'a': 3, 'b': 4}},
      'line2': {'a': {'a': 5, 'b': 6}, 'b': {'a': 7, 'b': 8}},
      'line3': {'a': {'a': 9, 'b': 10}, 'b': {'a': 11, 'b': 12}},
      'line4': {'a': {'a': 13, 'b': 14}, 'b': {'a': 15, 'b': 16}}}

我的程序中有数百行代码,这种结构似乎最容易存储我需要的所有数据。我想像这样创建一个熊猫数据框:

        aa  ab  ba  bb
line1   1   2   3   4
line2   5   6   7   8
line3   9   10  11  12
line4   13  14  15  16

但是 pd.DataFrame(dict) 命令似乎不能正确处理超过 2 个嵌套字典,我得到了这个:

pd.DataFrame(df).T

                          a                     b
line1    {u'a': 1, u'b': 2}    {u'a': 3, u'b': 4}
line2    {u'a': 5, u'b': 6}    {u'a': 7, u'b': 8}
line3   {u'a': 9, u'b': 10}  {u'a': 11, u'b': 12}
line4  {u'a': 13, u'b': 14}  {u'a': 15, u'b': 16}

有没有简单的方法来解决这个问题?还是我必须编写额外的代码来转换我的字典,或者更糟的是,设计另一种存储数据的方式(这会让我重新编写程序的几个部分)?

提前致谢。

【问题讨论】:

标签: python pandas dictionary


【解决方案1】:

concatdict comprehension 一起使用,然后通过unstack 重塑数据并通过map 转换MultiIndex

df = pd.concat({k: pd.DataFrame(v) for k, v in df.items()}).unstack()
df.columns = df.columns.map(''.join)
print (df)
       aa  ab  ba  bb
line1   1   2   3   4
line2   5   6   7   8
line3   9  10  11  12
line4  13  14  15  16

【讨论】:

  • 完美!谢谢 !我在已经存在的问题中进行了快速搜索,但没有找到,抱歉。
猜你喜欢
  • 2019-01-11
  • 2023-03-23
  • 2018-04-14
  • 2021-02-15
  • 2020-05-23
  • 1970-01-01
  • 2017-01-13
相关资源
最近更新 更多