You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含元组键的Python字典转换为Pandas DataFrame?

如何将键为二元组的字典转换为指定结构的DataFrame?

给定如下Python字典,键是由两个字符串组成的元组,值为整数:

mydic = { ('column1', 'index1'):33, 
          ('column1', 'index2'):34, 
          ('column2', 'index1'):35, 
          ('column2', 'index2'):36 }

需要将元组的第一个字符串作为DataFrame的列名,第二个作为行索引,得到如下结构的DataFrame:

(index)column1column2
index13335
index23436

完全不用手动遍历逐个构建,有两种简洁的Pandas方法可以快速实现:

方法1:利用Series多级索引+unstack

Pandas的Series可以直接将元组键解析为多级索引,再通过unstack方法将指定层级转为列:

import pandas as pd

mydic = { ('column1', 'index1'):33, 
          ('column1', 'index2'):34, 
          ('column2', 'index1'):35, 
          ('column2', 'index2'):36 }

# 将字典转为带多级索引的Series
s = pd.Series(mydic)
# 将多级索引的第0层(元组第一个元素)转为列
df = s.unstack(level=0)

执行后df就是你需要的结构,unstack(level=0)指定把元组的第一个元素作为列,剩下的第二个元素自动成为行索引。

方法2:字典转列表+Pivot透视

先把字典的键值对拆分为包含列名、索引、值的三元组列表,再用pivot方法构建DataFrame:

import pandas as pd

mydic = { ('column1', 'index1'):33, 
          ('column1', 'index2'):34, 
          ('column2', 'index1'):35, 
          ('column2', 'index2'):36 }

# 拆分键值对为三元组列表
df_list = [(col, idx, val) for (col, idx), val in mydic.items()]
# 构建DataFrame并透视
df = pd.DataFrame(df_list, columns=['column', 'index', 'value']).pivot(
    index='index', 
    columns='column', 
    values='value'
)

这种方法逻辑更直观,适合理解数据结构转换的过程。

两种方法都避免了手动遍历,Pandas内置方法在处理大数据量时效率远高于手动循环。

内容的提问来源于stack exchange,提问作者Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:55:27