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

如何避免Pandas to_csv输出CSV时空字段被双引号包裹

解决Pandas导出CSV时空字段被双引号包裹的问题

你的核心问题是quoting=csv.QUOTE_ALL参数强制给所有字段(包括空字段)添加双引号,同时清理后的空字符串未被识别为Pandas缺失值,导致导出时被处理为""。以下是修改方案:

修改后的完整代码

import pandas as pd
import re
import csv

# 加载CSV文件
file_path = "\\\\Mylocation\\Original_facility_udfs.csv"
df = pd.read_csv(file_path, quotechar='"')

# 字段清理函数
def clean_field(value):
    if isinstance(value, str):
        # 移除换行符和非ASCII字符
        value = re.sub(r'[\n\r]', ' ', value)
        value = re.sub(r'[^\x00-\x7F]', '', value)
        # 处理后为空的字符串转为Pandas缺失值
        if not value.strip():
            return pd.NA
    return value

# 应用清理逻辑
df_cleaned = df.map(clean_field)

# 导出清理后的CSV
cleaned_file_path = "\\\\Mylocation\\facility_udfs.csv"
df_cleaned.to_csv(
    cleaned_file_path,
    index=False,
    quotechar='"',
    quoting=csv.QUOTE_MINIMAL,  # 仅对含特殊字符的字段加引号
    lineterminator='\n',
    na_rep=''  # 缺失值导出为空字符串
)

print(f"Cleaned CSV saved to: {cleaned_file_path}")

关键修改说明

  1. 空值识别处理:在清理函数中,将处理后为空的字符串转为pd.NA,让Pandas明确识别为缺失值,而非普通空字符串。
  2. 调整引号策略:将quoting=csv.QUOTE_ALL改为csv.QUOTE_MINIMAL,该参数仅对包含逗号、引号、换行符等特殊字符的字段添加双引号,空字段和普通字段按CSV标准输出。
  3. 缺失值导出配置:添加na_rep='',指定Pandas缺失值导出时直接显示为空字符串,确保空字段无引号包裹。

修改后导出的CSV将符合你的期望:

"date_key","facility_key","udf_type","udf_area_indic","udf_area"
"20240830","251","GL Unit Code","Facility for Type",,,
"20240830","251","Cost Center","Facility for Type",,,

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:30:01