如何解决Python字典转pandas DataFrame时元素顺序引发的from_dict报错
问题原因
pd.DataFrame.from_dict指定orient='index'参数时,pandas会优先读取字典第一个值的类型推断解析规则:
- 若第一个值为字典:触发嵌套字典解析逻辑,尝试将所有值视为字典提取子键作为列,后续遇到int等非字典类型就会抛出
AttributeError: 'int' object has no attribute 'items' - 若第一个值为列表:尝试按列表长度拆分为多行,后续遇到无长度属性的单值就会抛出
TypeError: object of type 'int' has no len()
这就是转换结果受字典键顺序影响的核心原因。
通用解决方案
直接通过字典的键值对构造DataFrame,绕开pandas的自动类型推断逻辑,不管字典值类型、键顺序如何都可以得到预期结果:
import pandas as pd # 测试用字典,首元素为字典类型 my_dict2 = {'c': {'x': 'aa', 'y': 'bb'}, 'a': 1, 'b': [1, 2, 3]} df = pd.DataFrame(my_dict2.items(), columns=['prop_name', 'prop_value']) print(df)
输出结果:
prop_name prop_value 0 c {'x': 'aa', 'y': 'bb'} 1 a 1 2 b [1, 2, 3]
该方案逻辑是直接将dict.items()返回的每一组(键, 值)元组作为DataFrame的一行,不会对值做任何自动展开或解析,完全匹配需求效果。
内容的提问来源于stack exchange,提问作者webe3
相关产品推荐
相关产品推荐

