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

如何用两日期列的平均差值填充缺失/错误的date_of_incident值?

解决方法

步骤1:先基于有效数据计算差值均值

首先要排除有问题的行,用正常数据计算dt_diff的均值,避免错误值拉偏结果:

# 筛选出date_of_incident非空、且差值在合理范围的行(比如排除差值绝对值超过365天的异常值)
valid_rows = df[(df['date_of_incident'].notna()) & (df['dt_diff'].dt.days.abs() <= 365)]
# 将均值转为Timedelta类型,方便后续日期运算
avg_dt_diff = pd.to_timedelta(valid_rows['dt_diff'].mean())

步骤2:定义需要插补的行的条件

明确两种需要替换的情况:

  • date_of_incident 为缺失值(NaN)
  • date_of_incident 明显不合理(比如和treatment_date的差值异常,或年份远早于治疗日期)
# 条件1:date_of_incident缺失
cond_missing = df['date_of_incident'].isna()
# 条件2:差值异常(可根据业务调整阈值,比如这里设为超过365天)或日期年份异常
cond_invalid = (df['dt_diff'].dt.days.abs() > 365) | (df['date_of_incident'].dt.year < df['treatment_date'].dt.year - 10)

# 合并两个条件,定位所有需要插补的行
replace_cond = cond_missing | cond_invalid

步骤3:批量插补有问题的行

用loc精准定位目标行,应用公式计算新的date_of_incident:

# 对符合条件的行执行插补
df.loc[replace_cond, 'date_of_incident'] = df.loc[replace_cond, 'treatment_date'] - avg_dt_diff

验证插补结果

可以快速检查插补情况:

print(f"共完成 {replace_cond.sum()} 行数据的插补")
# 随机查看部分插补后的数据
print(df[replace_cond].head())

补充提示

  • 如果有更明确的错误数据判断标准(比如固定年份阈值),直接调整cond_invalid的逻辑即可
  • 因为数据集规模小,插补后建议手动抽查部分结果,确保符合医疗场景的业务逻辑

内容的提问来源于stack exchange,提问作者Kevin O'Leary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:10:53