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

如何将含JSON格式列的CSV文件导入为DataFrame并保留JSON字符串列?

解决CSV中包含JSON列的DataFrame导入问题

遇到CSV里混有JSON格式列的情况确实头疼,不过有几个简单的方法可以直接把JSON列完整保留为字符串导入DataFrame,我给你分情况说明:

情况1:JSON列被双引号包裹(符合CSV规范)

这是最常见的场景,CSV里包含分隔符(逗号)的字段通常会被双引号包裹,只需要给read_csv配置正确参数就能识别:

先导入依赖库:

import pandas as pd
import csv

然后读取文件:

df = pd.read_csv(
    "your_file.csv",
    quotechar='"',       # 指定包裹含分隔符字段的字符
    quoting=csv.QUOTE_ALL, # 让pandas识别所有被引号包裹的字段
    engine="python"      # 用Python引擎处理,比C引擎更灵活适配特殊格式
)

如果你的JSON列里存在转义的双引号(比如"{\"key\": \"value\"}"),再加上escapechar='\\'参数即可:

df = pd.read_csv(
    "your_file.csv",
    quotechar='"',
    escapechar='\\',
    engine="python"
)

这样处理后,形如"[{...}, {...}]"的JSON内容会被完整保留为DataFrame的一个字符串列。

情况2:JSON列没有被引号包裹(非规范CSV)

如果你的CSV没给JSON列加引号,read_csv会把JSON里的逗号当成分隔符,导致列错位。这种情况可以用正则表达式分割每一行,只把不在方括号内的逗号作为分隔符:

import pandas as pd
import re

def split_csv_row(row):
    # 正则逻辑:只分割不在[]范围内的逗号
    return re.split(r',(?![^\[]*\])', row.strip())

# 手动读取并处理每一行
with open("your_file.csv", "r", encoding="utf-8") as f:
    header = split_csv_row(f.readline())
    data_rows = [split_csv_row(line) for line in f]

# 转为DataFrame
df = pd.DataFrame(data_rows, columns=header)

这个正则的负向预查规则,会确保只分割那些不在JSON数组内部的逗号,完美避开JSON结构里的逗号。

验证结果

导入后你可以用下面的代码确认JSON列是否完整:

# 查看列类型
print(df.dtypes)
# 打印第一行的JSON列内容
print(df['your_json_column'].iloc[0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:10:28