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

Python Pandas:如何在指定列的空单元格中添加两个引号

Pandas导出CSV时引号重复的问题解析与解决方案

首先得搞清楚为什么会出现这种引号越变越多的情况——这其实是CSV格式的标准转义规则在起作用,Pandas的to_csv方法默认遵循这个规则:

背后的机制

当你用fillna('""')把空值填充成两个双引号后,DataFrame里存储的确实是""这个字符串。但调用to_csv时,默认的quoting参数是csv.QUOTE_MINIMAL,这个参数的逻辑是:

  • 只要单元格内容包含分隔符(这里是;)、双引号或者换行符,就会自动用双引号把整个单元格内容包裹起来
  • 同时,为了让CSV阅读器能区分“包裹单元格的引号”和“内容里的引号”,会把内容里的每个双引号转义成两个双引号(这是CSV的标准转义方式)

所以你的情况就变成了:

  • 单元格内容是""(两个双引号),符合被包裹的条件
  • 包裹时先加一对外层引号,然后把内容里的两个双引号各自转义成两个,最终就变成了" + "" + "" + " → 也就是六个双引号""""""
  • 同理,如果你填充的是单个双引号",最终就会变成" + "" + " → 四个双引号""""

解决方法

根据你的需求(空单元格在CSV里显示为""),有两种常用方案,你可以根据自己的数据情况选择:

方案1:关闭自动引用(适合数据里没有分隔符的情况)

如果你的数据中所有单元格内容都不包含分隔符;,可以直接关闭Pandas的自动引用功能,这样它就不会额外添加引号或转义内容里的引号:

import pandas as pd
import csv

# 读取原始数据(示例)
sheet01 = pd.read_csv("your_input.csv", sep=";")
# 填充空值为两个双引号
quotes = '""'
sheet01["column"] = sheet01["column"].fillna(quotes)

# 修改导出参数,关闭自动引用
sheet01.to_csv("newCsv.csv", sep=";", index=False, header=False, quoting=csv.QUOTE_NONE)

这样导出的CSV里,填充过的空单元格就会直接显示为"",没有额外的引号。

方案2:全局引用所有单元格(适合数据里有分隔符的情况)

如果你的数据里有分隔符,关闭自动引用会导致CSV解析错误,这时候可以让所有单元格都被引号包裹——空值填充为空字符串后,被引号包裹就会变成"",正好符合你的需求:

import pandas as pd
import csv

# 读取原始数据(示例)
sheet01 = pd.read_csv("your_input.csv", sep=";")
# 空值填充为空字符串
sheet01["column"] = sheet01["column"].fillna("")

# 导出时设置所有单元格都被引号包裹
sheet01.to_csv("newCsv.csv", sep=";", index=False, header=False, quoting=csv.QUOTE_ALL)

这种方式下,所有单元格内容都会被双引号括起来,空单元格自然就是"",同时分隔符也不会破坏CSV结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:27:43