Python中值为不等长列表的字典如何转换为pandas DataFrame
报错原因
pd.DataFrame.from_dict()默认将字典的键作为DataFrame的列名,要求所有键对应的数组/列表长度完全一致,才能拼接成标准的二维表结构。传入的字典各value列表长度分别为1、2、3,长度不匹配,因此触发ValueError: All arrays must be of the same length报错。
实现方案
目标结构是把字典键单独作为name列、对应列表整体作为value列的行元素,不需要把列表拆成多行多列,直接将字典的键值对转为列表传入DataFrame构造函数,手动指定列名即可,代码如下:
import pandas as pd data = {'A': [1], 'B': [1,2], 'C': [1,2,3]} df = pd.DataFrame(list(data.items()), columns=['name', 'value'])
输出效果
运行上述代码得到的DataFrame结构完全匹配预期:
name value 0 A [1] 1 B [1, 2] 2 C [1, 2, 3]
如果需要name列的字符串值外层自带单引号,可以在构造前对键做格式化处理,用[(f"'{k}'", v) for k,v in data.items()]替换代码里的list(data.items())即可。
内容的提问来源于stack exchange,提问作者Mohammad
相关产品推荐
相关产品推荐

