Python-Pandas如何将DataFrame转换为双列组合元组为键的字典
问题原因
你写的代码存在两处错误:
set_index方法如果要设置多重索引,需要将多个列名放在列表中作为第一个参数传入,你原写法的第二个参数'Item'实际被识别为append参数的赋值,并没有将Item列加入索引。- 直接对整个DataFrame调用
to_dict()会返回以列名为键的嵌套字典,不符合预期格式。
正确实现代码
costs_dictionary = df.set_index(['Firm', 'Item'])['Cost'].to_dict()
运行后得到的输出和你预期的完全一致:
{('Firm A', 'Books'): 0.55, ('Firm A', 'Pencils'): 0.6, ('Firm B', 'Books'): 0.45, ('Firm B', 'Pencils'): 0.35}
代码逻辑说明
- 先将
Firm、Item两列设置为多重行索引 - 提取
Cost列得到Series对象,对Series调用to_dict()时,默认会把行索引作为字典的键、对应数值作为字典的值,多重行索引的每个索引天然就是元组格式,和你需要的输出完全匹配。
内容的提问来源于stack exchange,提问作者Hookstark
相关产品推荐
相关产品推荐

