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

使用Pandas将JSON转CSV时的数值括号去除问题

解决JSON转CSV时去除特定列首尾括号的问题

问题根源

你之前的错误在于把整个DataFrame转成字符串处理,str(df)会把整个表格变成纯文本字符串,之后用re.sub处理得到的还是字符串,自然没有to_csv方法;后续尝试把字符串转DataFrame也因为格式错误失败。正确的做法是针对目标列单独处理每个单元格的字符串,而不是破坏整个DataFrame的结构。

正确处理方法

Pandas提供了针对字符串列的str方法,可以直接对列内所有字符串元素进行正则替换,无需把整个DataFrame转成字符串。具体步骤:

  1. 加载JSON数据到DataFrame(这部分你之前的代码是正确的)
  2. 定位需要去除括号的目标列(替换成你的实际列名)
  3. 用str.replace结合正则表达式去除首尾的[和]
  4. 保存处理后的DataFrame到CSV

完整代码示例

import pandas as pd
import json

with open(r'C:\Users\RKM\Documents\json_file.json') as f:
    data = json.load(f)

# 加载JSON数据到DataFrame
df = pd.json_normalize(data, record_path=['value'])

# 处理目标列:去除首尾的[],替换成你的实际列名
# 正则解释:^匹配开头,\[匹配左括号,(.*)匹配中间所有内容,\]匹配右括号,$匹配结尾;用\1引用中间的内容替换整个字符串
df['你的目标列名'] = df['你的目标列名'].str.replace(r'^\[(.*)\]$', r'\1', regex=True)

# 保存到CSV
df.to_csv(r'C:\Users\RKM\Documents\output_file.csv', index=False, na_rep="NULL")

备选方案(处理含空值的列)

如果目标列存在空值,可以用apply结合re.sub,同时处理空值情况:

import re

df['你的目标列名'] = df['你的目标列名'].apply(
    lambda x: re.sub(r'^\[(.*)\]$', r'\1', x) if pd.notna(x) else x
)

为什么之前的方法无效?

  • 直接对整个DataFrame用re.sub:re.sub只能处理字符串,不能直接处理DataFrame对象,所以你之前尝试不用str(df)时会报错。
  • 用str(df)转成字符串:这会把整个表格变成纯文本,丢失了DataFrame的结构,得到的是字符串类型,自然无法调用to_csv方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:56:17