如何从值为列表的Python字典创建预期结构的pandas DataFrame
问题根因
代码输出不符合预期的核心错误是传入DataFrame构造器的数据源有误:new_dict.items()返回的是(键, 值列表)格式的元组迭代器,pandas会将每个元组解析为单独一行,因此最终生成的是两行数据,每行分别存储字典的键、以及该键对应的整列值列表,和预期的按列存储结构完全不符。
修正方案
该需求可以直接实现,pandas DataFrame原生支持值为等长列表的字典作为输入,字典的键会自动被识别为列名,不需要调用items()方法:
import pandas as pd new_dict = {'mid': ['1', '2'], 'type': ['a', 'b']} df = pd.DataFrame(new_dict) print(df)
运行后基础输出如下:
mid type 0 1 a 1 2 b
如果你需要行索引从1开始,和你给出的预期输出格式完全匹配,创建DataFrame时指定索引即可:
df = pd.DataFrame(new_dict, index=[1, 2]) print(df)
此时输出完全符合预期:
mid type 1 1 a 2 2 b
补充说明:不需要手动给columns参数传入list(new_dict),直接传入字典时pandas会自动提取键作为列名,多余的参数反而可能引发数据错位问题。
内容的提问来源于stack exchange,提问作者marlon
相关产品推荐
相关产品推荐

