将元组为键、列表为值的字典转换为pandas DataFrame的方法
实现方案
首先修正示例字典的语法,原示例的字典值写法不符合Python规范,正确的嵌套列表写法如下,同时注意不要使用dict作为变量名,会覆盖Python内置的字典类型,容易引发未知错误。
核心实现代码
import pandas as pd # 修正后的符合Python语法的示例字典 data = {('a','b'): [[1,2], [4,5]], ('a','c'): [[7,8], [1,3]], ('b','c'): [[1,8], [1,3]]} # 生成结构化记录:遍历每个键和对应的子列表,拼接元组为字符串,拆分列表元素 records = [[','.join(key), *sub_list] for key, sub_lists in data.items() for sub_list in sub_lists] # 直接生成目标DataFrame df = pd.DataFrame(records, columns=['K', 'X', 'Y'])
输出结果验证
最终生成的df结构完全符合需求:
| K | X | Y |
|---|---|---|
| a,b | 1 | 2 |
| a,b | 4 | 5 |
| a,c | 7 | 8 |
| a,c | 1 | 3 |
| b,c | 1 | 8 |
| b,c | 1 | 3 |
原写法问题说明
你之前使用pd.DataFrame.from_dict(dict, orient='index').T的方式,只会将元组键作为列名,每个键对应的所有子列表作为同一列下的单元格值,既不会自动展开子列表的元素到不同列,也不会将键转换为行维度的K列,因此无法得到预期结果。
内容的提问来源于stack exchange,提问作者Krem
相关产品推荐
相关产品推荐

