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

如何给pandas groupby分组结果的每行按cancelled_at条件添加标签

实现代码

import pandas as pd
import numpy as np

# 示例数据构造,可替换为你自己的DataFrame
df = pd.DataFrame({
    'user_id': [10]*6,
    'cancelled_at': [np.nan, '2021-02-26', np.nan, np.nan, '2021-06-01', np.nan]
})

# 条件1:当前行cancelled_at非空
cond_current_notna = df['cancelled_at'].notna()
# 条件2:同分组下一行的cancelled_at非空(即当前行是非空行的前一行)
cond_next_notna = df.groupby('user_id')['cancelled_at'].shift(-1).notna()

# 满足任意条件标cancel,否则标renew
df['result'] = np.where(cond_current_notna | cond_next_notna, 'cancel', 'renew')

逻辑说明

  • 用shift(-1)可以把同分组内下一行的cancelled_at值映射到当前行,判断非空就能精准定位到所有非空行的前一行
  • 加groupby('user_id')是为了把计算范围限制在同一个用户的行内,不会出现不同用户的行互相干扰的情况
  • 运行后输出的result列完全符合你给出的示例效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:18:04