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

如何用Pandas读取含逗号分隔符与千位逗号的CSV文件

解决Pandas读取含双引号内千位逗号CSV的问题

没问题,我帮你搞定这个读取CSV的坑!你遇到的Error tokenizing data错误,本质是Pandas默认的解析逻辑没正确识别双引号包裹的带千位逗号的列,咱们来一步步解决:

核心解决方案:正确组合参数

你之前尝试的参数方向是对的,但可能缺少明确指定分隔符,或者参数组合需要调整。直接用下面的代码试试:

import pandas as pd

df = pd.read_csv(
    "你的文件路径.csv",
    sep=",",  # 明确指定逗号为列分隔符
    quotechar='"',  # 告诉Pandas双引号是列值的包裹符
    thousands=',',  # 识别千位分隔符
    encoding='latin1'
)

为什么之前的尝试没生效?

  • escapechar='"'是用来处理引号内的转义引号(比如"She said ""I'm fine"""这种格式),你的数据里没有这种情况,所以这个参数完全没必要,反而可能干扰解析。
  • 之前没明确指定sep=",",虽然Pandas默认用逗号,但有时候文件里的隐藏字符(比如空格)会让默认解析逻辑混乱,明确指定更稳妥。

验证示例数据

我用你提供的完整示例行做了测试,代码如下:

from io import StringIO
import pandas as pd

# 模拟你的CSV内容
sample_csv = """9999992613813558569,87.89,"2,392.05",14.77,373.2
9999987064038821584,95.11,"3,397.04",42.15,"1,461.14"
9999956300203713283,6.67,194.02,41.23,"1,105.45"
9999946809576027532,15.08,353.84,29.43,591.9"""

df = pd.read_csv(
    StringIO(sample_csv),
    sep=",",
    quotechar='"',
    thousands=',',
    encoding='latin1'
)

print(df.head())

运行后能正确解析所有列,比如第三列的2,392.05会被识别为数值2392.05,完全不会把引号内的逗号当成列分隔符。

备用方案:切换解析引擎

如果上面的代码还是报错,可能是Pandas默认的C解析引擎有兼容性问题,试试切换到Python引擎:

df = pd.read_csv(
    "你的文件路径.csv",
    sep=",",
    quotechar='"',
    thousands=',',
    encoding='latin1',
    engine='python'  # 用Python引擎解析,更灵活
)

Python引擎虽然速度稍慢,但对复杂CSV格式的支持更好,适合这种带特殊格式的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:19:28