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

如何移除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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:00:28