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

如何基于CHURN_DATE列是否存在日期创建pandas二元CHURN_FLAG列?

解决方案

你的核心需求是根据CHURNdate列是否存在有效日期(非NaT)来标记客户流失状态,不需要引入额外的TODAY_DATE列,直接针对缺失值判断即可,以下是两种简洁的实现方式:

方法1:使用pandas内置方法

利用notna()判断日期是否有效,再转成整数类型:

df2['CHURNflag'] = df2['CHURNdate'].notna().astype(int)

方法2:使用numpy.where

同样基于是否非缺失值的逻辑,用np.where实现:

import numpy as np
df2['CHURNflag'] = np.where(df2['CHURNdate'].notna(), 1, 0)

为什么你之前的代码失败?

你之前的逻辑是np.where(df2['CHURNdate']<df2['TODAY_DATE'], 0, 1),这里存在两个关键问题:

  • 逻辑完全颠倒:如果客户已流失(有CHURNdate且早于当前日期),应该标记为1,但你的代码会把这类情况设为0;
  • NaT和任何日期比较都会返回False,所以缺失值会被错误标记为1,和你的期望相反。

直接判断CHURNdate是否为有效日期才是最准确的方式——只要存在流失日期就代表客户已流失,无需和当前日期比较。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:34:57