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

如何用Pandas写入含特殊字符文本列的CSV以保持原结构?

解决Pandas写入CSV时列错乱的问题

要让写入的CSV保持原文件格式,你需要在pd.to_csv中添加以下关键参数:

  • escapechar='\\':与读取时一致,用反斜杠转义分隔符
  • quoting=csv.QUOTE_NONE:禁用字段引用,避免Pandas自动给含特殊字符的字段加引号(这是导致列错乱的核心原因)
  • sep=',':显式指定分隔符(与默认一致,确保和原文件匹配)

原因说明

你读取文件时用escapechar='\\',意味着原文件通过反斜杠转义逗号等分隔符,而非用引号包裹字段。但pd.to_csv默认会给含分隔符的字段加引号,这会导致后续读取或打开文件时,工具无法正确识别字段边界,进而造成列错乱。通过设置quoting=csv.QUOTE_NONE,Pandas会转而使用指定的escapechar转义分隔符,完全匹配原文件的格式逻辑。

修正后的代码

首先需要导入csv模块,然后修改两个to_csv调用:

import csv
import pandas as pd

reader = pd.read_csv(local_file_path, nrows=None, chunksize=10000, escapechar='\\')
output_path = f'/home/achilleslaststand/Desktop/clean_data/{report}_cleaned.csv'

j = 0
for chunk in reader:
    # 数据清洗逻辑保持不变
    for column in chunk.columns:
        if column in median_values and column in max_tresholds:
            mask = chunk[column] > max_tresholds[column]
            chunk.loc[mask, column] = median_values[column]
    
    # 写入时添加关键参数
    if j == 0:
        chunk.to_csv(
            output_path,
            mode='a',
            header=True,
            index=False,
            escapechar='\\',
            quoting=csv.QUOTE_NONE,
            sep=','
        )
    else:
        chunk.to_csv(
            output_path,
            mode='a',
            header=False,
            index=False,
            escapechar='\\',
            quoting=csv.QUOTE_NONE,
            sep=','
        )
    j += 1

额外注意事项

如果原文件同时使用了引号和转义符,可以根据实际情况调整quoting参数(比如csv.QUOTE_MINIMAL或csv.QUOTE_ALL),但根据你的描述,csv.QUOTE_NONE是最匹配原格式的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:27:12