使用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
相关产品推荐
相关产品推荐

