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

Python DataFrame读取CSV中JSON格式列的问题求助

处理CSV中JSON格式数组列的正确方案

一、先正确解析JSON格式列

直接替换单引号为双引号容易踩坑(比如数据里存在转义单引号、混合引号的情况),用ast.literal_eval更适配CSV中常见的类JSON格式(比如用单引号的Python字典数组),步骤如下:

import pandas as pd
import ast

# 读取目标CSV
df = pd.read_csv('你的文件路径.csv')

# 定义解析函数,兼容空值和格式异常
def parse_questions(x):
    if pd.isna(x):
        return []
    try:
        # 优先用ast解析类JSON数据
        return ast.literal_eval(x)
    except SyntaxError:
        # 解析失败时,尝试替换单引号为双引号后用json解析
        x = x.replace("'", "\"")
        return pd.read_json(x)

# 生成解析后的列
df['questions_parsed'] = df['questions'].apply(parse_questions)

二、展开数组并关联原数据

解析完成后,用explode展开数组,再将字典拆分为独立列:

# 展开数组,每个字典单独占一行
df_exploded = df.explode('questions_parsed', ignore_index=True)

# 将字典列拆分为多列,和原表其他字段拼接
df_final = pd.concat([
    df_exploded.drop('questions_parsed', axis=1),
    df_exploded['questions_parsed'].apply(pd.Series)
], axis=1)

常见问题处理

  • 若解析时报错,检查原始questions列数据是否存在语法错误(比如缺失逗号、引号不闭合),先清理异常数据
  • 展开后若出现空值,可根据需求用df_final.dropna(subset=['目标字段名'])删除,或用fillna()填充默认值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:27:26