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

如何通过Pandas to_csv写入无空格格式的JSON对象?

解决方案

要实现将DataFrame中的dict/嵌套JSON列以紧凑无空格的格式写入CSV,核心是先将这些列转换为指定格式的字符串,再导出CSV。以下是具体实现方法:

1. 处理单个JSON列

使用json.dumps()配合separators=(':', ',')参数生成紧凑格式的JSON字符串,通过apply()作用于目标列:

import pandas as pd
import json

# 示例DataFrame
df = pd.DataFrame({
    'id': [1, 2],
    'nested_json': [{'field': 'value', 'field2': 'value2'}, {'level1': {'level2': 'val'}}]
})

# 转换目标列为紧凑JSON字符串
df['nested_json'] = df['nested_json'].apply(lambda x: json.dumps(x, separators=(':', ',')))

# 导出CSV
df.to_csv('compact_output.csv', index=False)

导出后,nested_json列的内容会变成:{"field":"value","field2":"value2"}(符合JSON标准的双引号格式,CSV会自动处理引号转义)。

2. 处理多个JSON列

如果有多个需要转换的列,可以循环遍历目标列列表,批量处理:

# 定义需要处理的JSON列名
json_cols = ['col_a', 'col_b', 'col_c']

for col in json_cols:
    # 空值处理:仅对非空的dict执行转换
    df[col] = df[col].apply(
        lambda x: json.dumps(x, separators=(':', ',')) if pd.notna(x) else x
    )

# 导出CSV
df.to_csv('multi_col_output.csv', index=False)

3. (可选)转为单引号格式(不推荐)

如果坚持要输出单引号格式(如示例中的{'field':'value'}),可以在json.dumps()后替换引号,但需注意若字符串本身包含双引号,可能导致格式异常:

df['nested_json'] = df['nested_json'].apply(
    lambda x: json.dumps(x, separators=(':', ',')).replace('"', "'")
)

关键说明

  • Pandas默认将dict转为字符串时会保留格式化空格,无法通过to_csv()的参数直接控制,因此必须提前转换列内容。
  • json.dumps()能完美处理嵌套JSON结构,无需手动解析嵌套层级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:10:03