将字典转换为DataFrame时如何避免值被包裹在列表中
解决pandas from_dict转换后值被包裹在列表中的问题
常见场景与对应解决方法
场景1:字典每个值是长度为1的列表,需得到标量值的DataFrame
如果你的字典结构类似 {'col1': ['val1'], 'col2': ['val2']},直接预处理字典提取列表内的元素即可:
import pandas as pd original_dict = {'姓名': ['张三'], '年龄': [28], '城市': ['北京']} # 提取列表中的单个元素 cleaned_dict = {k: v[0] for k, v in original_dict.items()} # 生成单行DataFrame df = pd.DataFrame([cleaned_dict])
转换后的DataFrame每个单元格都是标量值,不再是列表。
场景2:字典中的列表包含多个元素,需展开为多行
如果列表长度大于1,想要把每个列表元素拆成单独的行,使用explode方法:
original_dict = {'姓名': ['张三', '李四'], '年龄': [28, 30]} df = pd.DataFrame.from_dict(original_dict) # 展开所有列的列表元素 df = df.explode(df.columns.tolist())
场景3:调整orient参数适配行式字典结构
如果你的字典是按行组织的(键对应行标识,值是该行的字段值列表),可以指定orient='index'并设置列名:
original_dict = {'行1': ['张三', 28, '北京'], '行2': ['李四', 30, '上海']} df = pd.DataFrame.from_dict(original_dict, orient='index', columns=['姓名', '年龄', '城市'])
内容的提问来源于stack exchange,提问作者Jacob Wright
相关产品推荐
相关产品推荐

