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

使用pd.read_csv读取数据时,如何去除列中的逗号?

解决带逗号后缀的表格数据读取问题

看起来你的数据文件里,前几列的数字后面都跟着逗号,导致用delim_whitespace=True读取时,这些列会带上逗号变成字符串值。这里有几个实用的解决办法:

方法1:用多字符分隔符直接读取纯数字

你的数据本质是用, (逗号加空格)来分隔字段的,直接把分隔符设为这个组合就能让pandas自动提取纯数字:

import pandas as pd
df = pd.read_csv("file.dat", sep=', ', header=None, engine='python')

注意要指定engine='python',因为pandas默认的C引擎不支持多字符的分隔符,python引擎可以完美处理这种情况。

方法2:读取后批量清理列内容

如果第一种方法因为数据格式不规则失效,也可以先按空格读取,再批量去掉逗号并转换数据类型:

import pandas as pd
# 先按空格读取,此时前N-1列是带逗号的字符串
df = pd.read_csv("file.dat", delim_whitespace=True, header=None)
# 处理除最后一列外的所有列
for col in df.columns[:-1]:
    df[col] = df[col].str.replace(',', '').astype(int)
# 最后一列转为浮点数(根据你的数据类型调整)
df.iloc[:, -1] = df.iloc[:, -1].astype(float)

方法3:正则表达式适配多种分隔情况

如果数据里同时存在, 和纯空格的分隔,可以用正则表达式作为分隔符,匹配逗号(可选)加任意空格的组合:

import pandas as pd
df = pd.read_csv("file.dat", sep=r',?\s+', header=None, engine='python')

正则r',?\s+'的意思是:匹配0个或1个逗号,加上一个或多个连续空格,这样不管字段是0, 1还是0 1的格式,都能正确拆分出纯数字。

优先试试第一种方法,它最直接高效;如果数据有特殊格式问题,再用后面的方法调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:15:07