如何将带有元组键的 python 字典转换为 pandas 多索引数据框?

Posted

技术标签:

【中文标题】如何将带有元组键的 python 字典转换为 pandas 多索引数据框?【英文标题】:How can i convert a python dictionary with tuple keys to a pandas multi Index data frame? 【发布时间】:2021-01-02 07:36:42 【问题描述】:

我有一个以元组为键的 python 字典:

dict=('m1',17):4,('m1',12):2,('m1',1):5,('m3',11):4,('m3',17):15

我想把它转换成这样的熊猫数据框:

m1 17 4
   12 2
   1  5
m3 11 4
   17 15

我尝试了以下方法:

df1=pd.DataFrame(dict)
df2=pd.DataFrame.from_dict(dict)
df3=pd.Series(dict.values(),index=pd.MultiIndex.from_tuples(dict.keys(), names=['site','id'])

但是,没有任何效果。 (我还需要命名索引列和值列)

【问题讨论】:

【参考方案1】:

这行得通:

from pandas import DataFrame, MultiIndex

d = ('m1', 17): 4, ('m1', 12): 2, ('m1', 1): 5, ('m3', 11): 4, ('m3', 17): 15
data = DataFrame(
    data='column_name': list(d.values()), 
    index=MultiIndex.from_tuples(tuples=d.keys(), names=['site', 'id'])
)

【讨论】:

这几乎可以工作,但是值的列名与键的列名在不同的行中。 pandas 就是这样显示的。答案是正确的。【参考方案2】:

试试Series

s = pd.Series(d)
Out[198]: 
m1  17     4
    12     2
    1      5
m3  11     4
    17    15
dtype: int64

【讨论】:

以上是关于如何将带有元组键的 python 字典转换为 pandas 多索引数据框?的主要内容,如果未能解决你的问题,请参考以下文章

如何保存具有元组键的字典

将带有元组键(key1,key2)的字典转换为数据框,当key1是索引并且key2时,值是列

使用元组键将 Pandas 数据框转换为字典以进行三元图

将带有元组作为键的嵌套字典转换为数据框

Python字典,作为不增加值的元组键

如何在python字典中访问/断言元组键值