如何避免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}")
关键修改说明
- 空值识别处理:在清理函数中,将处理后为空的字符串转为
pd.NA,让Pandas明确识别为缺失值,而非普通空字符串。 - 调整引号策略:将
quoting=csv.QUOTE_ALL改为csv.QUOTE_MINIMAL,该参数仅对包含逗号、引号、换行符等特殊字符的字段添加双引号,空字段和普通字段按CSV标准输出。 - 缺失值导出配置:添加
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
相关产品推荐
相关产品推荐

