如何移除DataFrame中数值的.0?pandas处理DOB(Year)列遇NaN问题求助
解决方法
你代码出错的核心原因是列名没有加引号——DOB(Year)会被Python识别为函数调用,而非列名,导致无法正确定位目标列,最终赋值结果全为NaN。下面是几种可行的解决方案:
方案1:修正原字符串替换代码
把列名用单/双引号包裹,确保能正确访问到目标列,同时正则中的.需要转义(避免匹配任意字符):
df['DOB(Year)'] = df['DOB(Year)'].astype(str) df['DOB(Year)'] = df['DOB(Year)'].str.replace(r"\.0$", "", regex=True)
方案2:直接转换为整数(更高效)
因为你的数据都是整数的浮点数形式,直接转成整数类型就能自动去掉.0;如果需要字符串格式,再转一次即可:
# 转成整数类型(数字格式) df['DOB(Year)'] = df['DOB(Year)'].astype(int) # 如果需要字符串格式 df['DOB(Year)'] = df['DOB(Year)'].astype(int).astype(str)
方案3:apply灵活处理(适配特殊情况)
如果数据中存在非整数的浮点数(比如1990.5),可以用apply判断后针对性处理:
def clean_dob(x): if x == int(x): return str(int(x)) return str(x) df['DOB(Year)'] = df['DOB(Year)'].apply(clean_dob)
内容的提问来源于stack exchange,提问作者Shital
相关产品推荐
相关产品推荐

