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

Pandas DataFrame.to_csv字段含逗号导致列错位问题的解决方法

问题根因

列错位不是pandas导出逻辑出错,是分隔符不匹配导致的:

  • 你在to_csv()里手动指定了sep='\t',也就是用制表符作为列分隔符
  • 你双击打开CSV时,系统默认调用的打开工具(比如Excel)默认按逗号识别列分隔符,完全没有按你设置的制表符规则拆分,自然会把字段值里自带的逗号当成分隔符,造成列偏移。
修复方法

根据你的使用场景选对应方案即可:

方案1:用CSV标准默认配置(最推荐)

去掉自定义的sep参数,用pandas默认的逗号作为分隔符即可。pandas默认遵循CSV规范,会自动给包含逗号、换行、引号等特殊字符的字段外层包裹双引号,所有符合标准的CSV读取工具都能正确识别带特殊字符的字段,不会错位。
同时建议加上index=False参数,避免pandas把无意义的行索引单独导出成一列,额外造成列错位。
修正后的代码:

import pandas as pd
datalist = {'Owner/Occupant': ["andrew"],
            'Job Address': ["test, newyork"],
            'Buyer': ["andrew"],
            'Phone': ["12312341234"]}

data_list = pd.DataFrame(datalist)
data_list.to_csv('test.csv', index=False)

方案2:保留制表符分隔,打开时手动指定分隔规则

如果你导出的文件是给其他依赖制表符分隔的程序使用,不需要改导出代码,只需要在打开文件时,不要直接双击打开,走对应工具的文本导入流程,手动指定分隔符为制表符,即可正常加载所有列,不会出现错位。

方案3:强制全字段加引号兼容

如果需要兼容默认双击打开的场景,又担心各种特殊字符导致拆分异常,可以显式配置引用规则,强制给所有字段值外层包裹双引号,避免分隔符识别错误,代码如下:

import pandas as pd
import csv
datalist = {'Owner/Occupant': ["andrew"],
            'Job Address': ["test, newyork"],
            'Buyer': ["andrew"],
            'Phone': ["12312341234"]}

data_list = pd.DataFrame(datalist)
data_list.to_csv('test.csv', index=False, quoting=csv.QUOTE_ALL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:54:12