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

求助:pandas读取CSV时千分位分隔符导致数值转换错误

解决Pandas读取CSV时千位分隔符导致的数值解析错误

你遇到的核心问题是:CSV文件里用.作为千位分隔符(而非小数点),但pandas默认会把带.的内容当成浮点数处理,才出现了数值被错误缩小或保留为字符串的情况。下面给你两个实用的解决方法:

方案一:直接用thousands参数解析(推荐)

Pandas的read_csv函数专门提供了thousands参数来处理千位分隔符,刚好匹配你CSV里的.。设置后pandas会自动去掉这些分隔符,把数值转换成正确的整数类型:

import pandas as pd

# 指定分隔符为';',千位分隔符为'.'
data = pd.read_csv('C:/Users/user/Desktop/Test/my_file.csv', sep=';', thousands='.')

运行这段代码后,A列的376.362.691会被正确解析成376362691,和Excel里的数值完全一致。

方案二:先读为字符串再手动转换(兼容特殊场景)

如果你的CSV里存在同时包含千位分隔符和小数点的数值(比如1.234.567,89这类带小数的格式),可以先把目标列读取为字符串,再替换掉千位分隔符后转换类型:

import pandas as pd

# 先将t、A列以字符串类型读取,避免自动解析错误
data = pd.read_csv('C:/Users/user/Desktop/Test/my_file.csv', sep=';', dtype={'t': str, 'A': str})

# 去掉所有的'.',然后转换为整数
data['t'] = data['t'].str.replace('.', '', regex=False).astype(int)
data['A'] = data['A'].str.replace('.', '', regex=False).astype(int)

补充说明:为什么调整decimal参数没用?

你之前修改decimal参数是在调整小数点的符号,但你的问题根源是千位分隔符不匹配,所以这个参数自然解决不了问题。decimal是用来告诉pandas哪个符号代表小数点(比如欧洲地区常用','当小数点),而thousands才是专门处理千位分隔的参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:24:45