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

Pandas转换Age列为int类型报错且replace替换小数点无效求助

居民信息数据集

序号门牌号街道名姓年龄与户主关系婚姻状况性别职业残疾情况宗教信仰
01Smith RadialGracePatel46户主丧偶女石油工程师无天主教
11Smith RadialIanNixon24房客未婚男出版权经理无基督教
22Smith RadialFrederickRead87户主离异男退休对外英语教师无天主教
33Smith RadialDanielAdams58户主离异男音乐治疗师无天主教
43Smith RadialMatthewHall13孙子无男学生无无
53Smith RadialStevenFletcher9孙子无男学生无无
64Smith RadialAlisonJenkins38户主未婚女物理治疗师无天主教
74Smith RadialKellyJenkins12女儿无女学生无无
85Smith RadialKimBrowne69户主已婚女退休地产经理/土地代理人无基督教
95Smith RadialOliverBrowne69配偶已婚男零售采购退休无无

问题原因

你使用的df['Age'].replace('.','0')默认是全值匹配替换,只有当单元格内容完全等于.时才会触发替换,而你遇到的异常值是类似'43.54302670766108'的完整字符串,.只是其中的子串,所以无法匹配,替换逻辑自然不生效。

解决方法

方案1:取年龄整数部分(推荐)

正常场景下年龄的小数部分无实际意义,直接取整即可,代码如下:

# 先转浮点型截断无效小数,再转int
df['Age'] = df['Age'].astype(float).astype('int')

如果列中存在非数字的异常值,可以用pandas内置的数值转换工具容错处理:

import pandas as pd
# 无法转数字的异常值会被转为NaN,这里用0填充,你也可以根据需求调整填充值
df['Age'] = pd.to_numeric(df['Age'], errors='coerce').fillna(0).astype('int')

方案2:按原需求替换小数点为0

如果确实需要把小数点替换为0再转成整数,需要调用字符串子串替换的方法:

# 加str前缀触发子串匹配,regex=False避免把.识别为正则通配符
df['Age'] = df['Age'].str.replace('.','0', regex=False).astype('int')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:36:00