Pandas:将CSV中以点为千分符的字符串数字转为整数而非浮点数
解决CSV千分分隔符导致的价格类型错误问题
以下是两种规范的处理方式,比正则替换更简洁可靠:
方法一:读取CSV时直接指定千分分隔符(推荐)
pandas的read_csv自带thousands参数,可直接指定千分分隔符为点,读取时会自动将带点的价格解析为整数,从源头避免类型错误:
import pandas as pd df = pd.read_csv('your_file.csv', thousands='.')
执行后df['price']的类型会是int64,无需后续转换,比如baz对应的1.200会直接解析为1200。
方法二:已读取为float后的补救处理
如果已经把数据读成了float类型(比如1.200被解析为1.2),可以先将数值转为固定三位小数的字符串,再替换点并转整数:
# 将float转为带三位小数的字符串 df['price'] = df['price'].apply(lambda x: f"{x:.3f}") # 替换千分分隔符后转整数 df['price'] = df['price'].str.replace('.', '', regex=False).astype(int)
注意:这种方法仅适用于所有价格的千分分隔格式都是点后三位的场景(即所有≥1000的整数都采用三位分隔)。
内容的提问来源于stack exchange,提问作者ranemirusG
相关产品推荐
相关产品推荐

