Python中如何将含不等长列表的字典转为指定格式pandas DataFrame
解决方案
你遇到的报错是因为pandas默认将传入字典的键识别为列名,要求所有键对应的数值长度一致,而你的字典中既有列表类型的值、也有标量值,长度不匹配才触发错误。要实现你需要的行式存储的输出效果,先将字典展开为逐行的键值对结构再转DataFrame即可。
实现代码
完整分步写法
import pandas as pd my_dict = {"Column A":[1,2,3], "ABC":456, "CDE":[12,11]} # 展开字典为键值对列表 processed_data = [] for key, value in my_dict.items(): # 统一处理为列表格式,避免标量无法遍历的问题 value_list = value if isinstance(value, list) else [value] for single_val in value_list: processed_data.append((key, single_val)) # 生成DataFrame,不需要列名可直接不传columns参数 df = pd.DataFrame(processed_data) print(df)
简洁列表推导式写法
df = pd.DataFrame([ (key, val) for key, values in my_dict.items() for val in (values if isinstance(values, list) else [values]) ])
运行后输出的结果和你要求的效果完全一致,如果不需要展示列名,可额外添加代码df.columns = ['', '']后再打印。
内容的提问来源于stack exchange,提问作者biggboss2019
相关产品推荐
相关产品推荐

