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

如何在Pandas DataFrame中创建客户状态变更为CHURNED/RESTARTED的指示列

场景说明

我现有一份客户数据DataFrame,已按CLIENT_ID和CURRENT_DATE_STATUS排序,字段如下所示:

CLIENT_IDCURRENT_DATE_STATUSSTATUS
100022017-07-21STARTED
100022017-07-21STARTED
100022018-07-01CHURNED
100022018-07-01CHURNED
100022019-01-01RESTARTED
118112019-08-15STARTED
118112019-08-15STARTED
118112019-12-31RESTARTED
221012020-03-11STARTED
221012020-03-11STARTED
221012020-03-11STARTED
221012020-11-01CHURNED
223002018-05-06STARTED
223002018-05-06STARTED
问题需求

我需要创建一个取值为1或0的布尔类型指示列,满足如下规则:

  • 针对每个CLIENT_ID,若该行STATUS较前一条同客户记录变更为CHURNED或RESTARTED则标记为1,其余情况标记为0。
预期效果
CLIENT_IDCURRENT_DATE_STATUSSTATUSSTOPPED
100022017-07-21STARTED0
100022017-07-21STARTED0
100022018-07-01CHURNED1
100022018-07-01CHURNED0
100022019-01-01RESTARTED1
118112019-08-15STARTED0
118112019-08-15STARTED0
118112019-12-31RESTARTED1
221012020-03-11STARTED0
221012020-03-11STARTED0
221012020-03-11STARTED0
221012020-11-01CHURNED1
223002018-05-06STARTED0
223002018-05-06STARTED0
样例数据生成代码
import pandas as pd

data = {'CLIENT_ID':[10002,10002,10002,10002,10002,11811,11811,11811,22101,22101,22101,22101,22300,22300],
'CURRENT_DATE_STATUS':['2017-07-21','2017-07-21','2018-07-01','2018-07-01','2019-07-01','2019-08-15','2019-08-15','2019-12-31','2020-03-11','2020-03-11','2020-03-11','2020-11-01','2018-05-06','2018-05-06'],
'STATUS':['STARTED','STARTED','CHURNED','CHURNED','RESTARTED','STARTED','STARTED','RESTARTED','STARTED','STARTED','STARTED','CHURNED','STARTED','STARTED']}
df = pd.DataFrame(data)
解决方案

通过pandas分组位移函数shift获取同客户上一行的状态,再做条件判断即可实现需求:

# 按CLIENT_ID分组,获取每条记录对应同客户上一条记录的STATUS值
df['prev_status'] = df.groupby('CLIENT_ID')['STATUS'].shift(1)
# 同时满足两个条件则标记为1:1.当前状态为CHURNED或RESTARTED 2.当前状态与上一条状态不同
df['STOPPED'] = ((df['STATUS'].isin(['CHURNED', 'RESTARTED'])) & (df['STATUS'] != df['prev_status'])).astype(int)
# 删除辅助列
df.drop(columns=['prev_status'], inplace=True)

执行后生成的STOPPED列与预期效果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:36:10