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

Pandas中按groupby分组规则逐行添加哑变量并保留历史值的实现方法

Pandas 分组滚动继承哑变量实现方案

完整实现代码

import pandas as pd

# 构造原始示例数据
df = pd.DataFrame({
    'id': [1, 1, 1, 1, 2, 2, 2, 2],
    'stage': ['stage 1', 'stage 2', 'stage 4', 'stage 6', 'stage 2', 'stage 3', 'stage 5', 'stage 6']
})

# 1. 生成stage列的独热哑变量
stage_dummies = pd.get_dummies(df['stage'], dtype=int)
# 2. 拼接id列与哑变量
temp_df = pd.concat([df['id'], stage_dummies], axis=1)
# 3. 按id分组后对哑变量做累计求和,将大于0的值统一转为1
result = temp_df.groupby('id').cumsum().gt(0).astype(int).reset_index(drop=True)
# 4. 回写id列到结果中
result.insert(loc=0, column='id', value=df['id'])

# 查看输出结果
print(result)

实现逻辑说明

  • 首先通过pd.get_dummies将分类字段stage转为独热编码,每行仅当前对应的stage列值为1,其余列为0
  • 按id分组后对所有哑变量列执行累计求和运算,只要分组内当前行及之前出现过对应stage,求和结果就会≥1
  • 通过gt(0).astype(int)将所有≥1的数值统一转为1,即可实现已出现过的stage值滚动继承为1的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:33:02