You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSV文件字典类型列拆分为独立列,pd.Series方法失效如何解决

Pandas字典列拆分为独立列的故障排查方案

你遇到的问题大多由CSV读取后的数据格式异常导致,可按以下步骤排查解决:

  • 原因1:字典列实际为字符串格式
    CSV存储时会自动将字典结构序列化为字符串,直接读取后列元素类型为str而非dict,无法被pd.Series识别拆分。
    修复代码如下:
import pandas as pd
import ast

# 读取CSV后先将字符串格式的字典转为真实字典
df['目标字典列名'] = df['目标字典列名'].apply(lambda x: ast.literal_eval(x) if isinstance(x, str) else x)
# 执行拆分操作
expand_cols = df.set_index('id')['目标字典列名'].apply(pd.Series)
# 拆分结果合并回原表
df = df.join(expand_cols, on='id')
  • 原因2:列内存在非字典异常值
    如果列中存在空值、NaN或其他不符合字典格式的脏数据,会导致拆分逻辑失效。可以先对异常值做统一处理:
# 将非字典值统一填充为空字典,避免拆分报错
df['目标字典列名'] = df['目标字典列名'].apply(lambda x: x if isinstance(x, dict) else {})
expand_cols = df.set_index('id')['目标字典列名'].apply(pd.Series)
  • 更优替代方案
    高版本pandas更推荐使用json_normalize方法实现字典列拆分,兼容性和处理效率优于apply(pd.Series),无需提前设置索引:
# 直接拆分字典列
expand_cols = pd.json_normalize(df['目标字典列名'])
# 合并回原表,同时删除原来的字典列
df = pd.concat([df.drop('目标字典列名', axis=1), expand_cols], axis=1)

内容的提问来源于stack exchange,提问作者sameer abdullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:54:02