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

如何解析包含嵌套JSON的CSV文件并生成结构完整的Pandas DataFrame

解决方案

场景1:CSV每行仅包含单个嵌套JSON,无其他字段

这是最常见的数据库导出单字段JSON的场景,默认read_csv会误把JSON内部的逗号当做分隔符拆分列,需要强制禁用自动分栏逻辑:

import pandas as pd
import json

# 读取时指定不可能出现的分隔符\0,强制每行作为单个字符串读取
# 若CSV首行是表头,删除header=None和names参数即可
df = pd.read_csv('filepath.csv', sep='\0', header=None, names=['raw_json'])

# 得到Pandas Series,每个元素为完整嵌套字典,JSON结构完全保留
json_series = df['raw_json'].apply(json.loads)

# 若需要转为DataFrame,仅展开JSON最高层级的键作为列,嵌套结构保持不变
df_final = pd.json_normalize(json_series, max_level=0)

场景2:CSV包含多列,其中某一列为嵌套JSON字符串

数据库导出多字段CSV时,包含特殊字符的JSON字段通常会被双引号包裹,需要指定正确的引号和转义参数读取:

import pandas as pd
import json

# 读取时指定字段包裹符和转义符,避免JSON内部的逗号、引号触发错误拆分
# delimiter根据实际导出的分隔符调整,常见为逗号、制表符\t
df = pd.read_csv(
    'filepath.csv',
    quotechar='"',
    escapechar='\\',
    delimiter=','
)

# 假设JSON存储在名为json_data的列中,根据实际列名修改,解析后嵌套结构完整保留
df['json_data'] = df['json_data'].apply(json.loads)

# 若需要展开所有字段的最高层级(含普通字段+JSON最高层级键),嵌套结构保持不变
df_final = pd.json_normalize(df.to_dict('records'), max_level=0)

常见问题处理

  • 若JSON解析报错,可先打印df['raw_json'].head()查看原始字符串的转义异常,针对性做字符串替换后再调用json.loads
  • 大文件处理可在read_csv中添加chunksize=10000参数分批读取解析,避免内存溢出
  • 若需要完整保留原始JSON字符串不解析,跳过apply(json.loads)步骤即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:54:02