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

如何修改Python Pandas代码 仅对NR列非NaN行计算年龄

实现代码

你可以直接通过Series.where()显式指定仅对非空的NR行执行计算,空值行自动保留NaN,若需要示例中的整数年龄结果,额外做可空整数类型转换即可:

import pandas as pd
import numpy as np

# 替换为你实际使用的基准日期
ABT_DATE = pd.to_datetime("2022-01-01")

df["age"] = (
    (ABT_DATE - pd.to_datetime(df.NR.str[:6], format="%y%m%d")) / np.timedelta64(1, "Y")
).where(df.NR.notna())  # 仅NR非空时返回计算结果,否则返回NaN
# 若需要输出整数年龄,加下面这行转换为可空整数类型
df["age"] = df["age"].round().astype("Int64")

补充说明

  • 实际上你原有代码的pandas原生矢量化操作天生兼容空值:df.NR.str[:6]遇到NaN会直接返回NaN,pd.to_datetime转换后得到NaT,最终计算结果也会自动为NaN,不需要额外修改也能满足空值行返回NaN的需求。加where只是让逻辑更显式,可读性更好。
  • 用Int64(首字母大写)是pandas的可空整数类型,避免普通int类型不能兼容NaN、自动把NaN转成浮点数的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:54:08