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

如何在pandas的timedelta日期计算中处理缺失值

解决方案

你之前运算报错的核心原因是标准库datetime.timedelta不支持接收NaN作为入参,pandas原生的向量化时间处理方法可以自动兼容缺失值,完整保留所有原始行不影响后续其他分析,可选两种实现方式:

方法1:使用pandas原生to_timedelta(推荐)

pd.to_timedelta原生支持缺失值,遇到NaN会自动返回NaT,整个运算不会中断:

import pandas as pd
import datetime as dt

# 直接计算,缺失值行结果自动为NaT,原数据所有行完整保留
question['Cdat'] = question['Breddat'] - pd.to_timedelta(question['Result'], unit='D')

注:unit='D'指定Result列的数值单位为天,和你原来用dt.timedelta的逻辑完全一致。

方法2:仅对非空行赋值

如果一定要沿用dt.timedelta的写法,可先筛选出两列都非空的行再做计算,空行自动留空:

import pandas as pd
import datetime as dt

# 先初始化Cdat列为空时间类型
question['Cdat'] = pd.NaT
# 筛选Breddat和Result都不为空的行
valid_mask = question['Breddat'].notna() & question['Result'].notna()
# 仅对有效行做计算
question.loc[valid_mask, 'Cdat'] = question.loc[valid_mask, 'Breddat'] - question.loc[valid_mask, 'Result'].map(dt.timedelta)

两种方法都会完整保留你原始DataFrame的所有行,缺失值对应的Cdat列会自动填充为NaT,完全不影响你后续对缺失行的其他分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:45:03