将字典保存到 Pandas 数据框,键作为列并合并索引

Save dictionary to Pandas dataframe with keys as columns and merge indices

我知道已经有很多关于如何将 pandas 字典转换为数据框的帖子,但是我找不到讨论我遇到的问题的帖子。 我的词典如下所示:

[Out 23]:
{'atmosphere':       0
 2     5
 9     4
 15    1
 26    5
 29    5
 ...  ..
 2621  4
 6419  3
 
 [6934 rows x 1 columns],
 'communication':       0
 13    1
 15    1
 26    1
 2621  2
 3119  5
 ...  ..
 6419  4
 6532  1
 
 [714 rows x 1 columns]

现在,我想要的是从这个字典中创建一个数据框,其中 'atmosphere' 和 'communication' 是列,并且合并两个项目的索引,以便数据框看起来如下:

index    atmosphere    commmunication
2           5
9           4
13                           1
15          1                1
26          5                1
29          5
2621        4                2
3119                         5
6419        3                4
6532                         1

我已经尝试过 pd.DataFrame.from_dict,但它会将所有值保存在一行中。 非常感谢任何帮助!

使用 concat with DataFrame.droplevelMultiIndex in columns 中移除二级 0:

d = {'atmosphere':pd.DataFrame({0: {2: 5, 9: 4, 15: 1, 26: 5, 29: 5, 
                                    2621: 4, 6419: 3}}),
     'communication':pd.DataFrame({0: {13: 1, 15: 1, 26: 1, 2621: 2,
                                       3119: 5, 6419: 4, 6532: 1}})}

print (d['atmosphere'])
      0
2     5
9     4
15    1
26    5
29    5
2621  4
6419  3

print (d['communication'])
      0
13    1
15    1
26    1
2621  2
3119  5
6419  4
6532  1

df = pd.concat(d, axis=1).droplevel(1, axis=1)
print (df)
      atmosphere  communication
2            5.0            NaN
9            4.0            NaN
13           NaN            1.0
15           1.0            1.0
26           5.0            1.0
29           5.0            NaN
2621         4.0            2.0
3119         NaN            5.0
6419         3.0            4.0
6532         NaN            1.0

备选方案:

df = pd.concat({k: v[0] for k, v in d.items()}, axis=1)

您可以将 pandas.concat on the values and set_axis 与字典键一起使用:

out = pd.concat(d.values(), axis=1).set_axis(d, axis=1)

输出:

      atmosphere  communication
2            5.0            NaN
9            4.0            NaN
13           NaN            1.0
15           1.0            1.0
26           5.0            1.0
29           5.0            NaN
2621         4.0            2.0
3119         NaN            5.0
6419         3.0            4.0
6532         NaN            1.0