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
相关产品推荐
相关产品推荐

