python - 字典的字典到 Pandas 数据框的字典-将多索引行更改为列

标签 python pandas dictionary

我有这样一本字典:

my_dict = {'Key': {'Service': {'Number': 61, 'Percent': 2.54 }, 'Service2': {'Number': 42, 'Percent': 2.2 } }, 'Key2': {'Service3': {'Number': 8, 'Percent': 2.74}, 'Service2': {'Number': 52, 'Percent': 2.5 } }}

我正在尝试将其转换为 Pandas 数据框。我得到了这个解决方案工作

pandas.concat(map(pandas.DataFrame, my_dict.itervalues()), keys=my_dict.keys()).stack().unstack(0)

但是,我的问题是我得到一个表,其中行索引是服务和数字/百分比的多重索引。相反,我希望索引只是出现的不同服务(不是多索引),并希望列像现在一样成为键,但 1 列部分是数字,第二列部分是所有键百分比,如果这有意义的话。转置不是我想要的,因为我不想改变整个索引,只改变数字/百分比部分。我希望它看起来像这样,在将它从我上面写的字典中转换为数据框之后:

          Number         Percent
          Key    Key2    Key     Key2
Service   61     NaN     2.54    NaN
Service2  42     52      2.2     2.5
Service3  NaN    8       NaN     2.74

对此有什么建议吗?

最佳答案

pd.concat({k: pd.DataFrame(v) for k, v in my_dict.items()})

              Service  Service2  Service3
Key  Number     61.00      42.0       NaN
     Percent     2.54       2.2       NaN
Key2 Number       NaN      52.0      8.00
     Percent      NaN       2.5      2.74

pd.concat({k: pd.DataFrame(v) for k, v in my_dict.items()}, axis=1).stack(0).T

         Number       Percent      
            Key  Key2     Key  Key2
Service    61.0   NaN    2.54   NaN
Service2   42.0  52.0    2.20  2.50
Service3    NaN   8.0     NaN  2.74

这不依赖于理解

pd.DataFrame(my_dict).stack().apply(pd.Series).unstack()
# pandas.DataFrame(i).stack().apply(pandas.Series).unstack()

         Number       Percent      
            Key  Key2     Key  Key2
Service    61.0   NaN    2.54   NaN
Service2   42.0  52.0    2.20  2.50
Service3    NaN   8.0     NaN  2.74

关于python - 字典的字典到 Pandas 数据框的字典-将多索引行更改为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43809016/

相关文章:

c# - 从字典中获取最大值的键

python - 改变字典字典中的值

Java相当于python的json.dumps

python - 3d Numpy 数组到 2d

Python Pandas 下一个序列号

python - 如何有效地将多个列添加到 pandas 数据框中,其值依赖于其他动态列

python - Brewer.py 将 x 轴转换为日期

python - 如何从值列表中将新列附加到 pandas groupby 对象

python - 完全丢失: Python configure script runs with errors

c++ - 将带有可变参数构造函数的对象放入映射中