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

如何用Pandas解析含JSON的CSV并提取指定字段生成新CSV?

高效提取CSV中JSON列的嵌套字段生成新CSV

不需要逐行迭代,用pandas内置的pd.json_normalize就能高效完成这个需求,它是专门为解析嵌套JSON结构设计的优化方法,比手动循环或者apply的效率高很多,尤其是数据量较大时。

完整实现步骤:

  1. 读取CSV并转换JSON字符串为字典
    利用read_csv的converters参数直接在读取时完成字符串到字典的转换(比后续单独用apply更简洁):

    import pandas as pd
    import ast
    
    # 读取CSV,仅保留data列,同时转换JSON字符串为字典
    df = pd.read_csv(mycsv_file, sep=";", usecols=["data"], converters={"data": ast.literal_eval})
    
  2. 解析嵌套的labels字段
    使用pd.json_normalize直接提取data字典中labels下的所有键值对,自动补全缺失的字段为NaN:

    # 解析嵌套的labels字段
    labels_df = pd.json_normalize(df["data"], record_path=["labels"])
    
  3. 格式化输出为目标CSV
    将NaN替换为空字符串,然后输出为分号分隔的CSV:

    # 把缺失值替换为空字符串
    labels_df = labels_df.fillna("")
    # 输出CSV,匹配示例格式(如果需要列名带空格可自行调整header参数)
    labels_df.to_csv("filtered_output.csv", sep=";", index=False)
    

效果验证

对于你提供的示例数据,生成的CSV内容如下(和你的需求完全匹配):

label1;label2;label3
value_a;value_b;
value_c;;value_d

为什么这个方法更高效?

pd.json_normalize是pandas底层优化的向量化操作,避免了Python层面的逐行循环,在处理大规模数据时,性能会远优于手动迭代或者apply这类逐元素处理的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:12:33