如何将Pandas中含字符串小数的object列转换为整数类型?
解决Pandas字符串列转整数的问题
核心问题出在你的列里混杂了正常字符串小数(如"136.89")和单独的"."无效值,导致直接转换报错;而to_numeric得到13689大概率是因为数据里的小数点实际被当作了千位分隔符,或是字符串存在隐藏干扰字符。以下是分步解决方法:
- 清理无效值
先把单独的"."替换为缺失值,避免转换时触发报错:
import pandas as pd df['目标列'] = df['目标列'].replace('.', pd.NA)
- 正确转换为数值类型
使用to_numeric并指定errors='coerce'(将无法转换的内容转为缺失值)。如果你的数据是千位分隔符为点、小数分隔符为逗号的格式(比如"136.89"实际是"13689"的千位分隔写法,真实小数应为"136,89"),需要先替换分隔符:
# 处理千位分隔符为点的情况 df['目标列'] = df['目标列'].str.replace('.', '').str.replace(',', '.') # 转换为浮点型 df['目标列'] = pd.to_numeric(df['目标列'], errors='coerce')
- 转换为整数格式
根据需求选择两种取整方式:
- 截断小数取整(如136.89→136):
# 用Int64类型可保留缺失值,避免报错 df['整数列_截断'] = df['目标列'].astype('Int64')
- 四舍五入取整(如136.89→137):
df['整数列_四舍五入'] = df['目标列'].round().astype('Int64')
内容的提问来源于stack exchange,提问作者Vinay Lam
相关产品推荐
相关产品推荐

