如何将Pandas DataFrame转换为指定格式的元组字典?
解决Pandas DataFrame转元组字典的问题
你可以通过stack()方法先将DataFrame的列标签转换为行索引的一部分,再转成字典,就能得到你想要的格式:
步骤示例
- 先构造对应结构的DataFrame(如果还没创建的话):
import pandas as pd data = { 'Customer': ['Customer 1', 'Customer 2'], 'Period 1': [31, 46], 'Period 2': [222, 187] } df = pd.DataFrame(data).set_index('Customer')
- 执行转换操作:
tuple_dict = df.stack().to_dict()
执行后得到的结果完全符合你的需求:
{('Customer 1', 'Period 1'): 31, ('Customer 2', 'Period 1'): 46, ('Customer 1', 'Period 2'): 222, ('Customer 2', 'Period 2'): 187}
原理说明
stack()会把DataFrame的列(Period 1、Period 2)“堆叠”到行索引层面,生成一个带多级索引(MultiIndex)的Series,每个元素的索引是(Customer名称, Period名称)的元组,值就是对应单元格的数值。- 对这个Series直接调用
to_dict(),会自动将多级索引的元组作为字典的键,数值作为对应的值,正好匹配你要的格式。
内容的提问来源于stack exchange,提问作者Tess
相关产品推荐
相关产品推荐

