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

按id分组,当count列无0值时生成dummy哑变量

按ID分组生成dummy列:仅当组内count全不为0时设为1

给定如下DataFrame,需按id分组实现:仅当某一id对应的count列所有值均不为0时,为该组所有行设置dummy=1,否则dummy=0。

原始数据

id    count
A      9
A      0
A      2
A      1
B      2
B      5
B      2
B      1
C      1
C      9
D      7
D      2
D      0

期望输出

id    count   dummy
A      9      0
A      0      0
A      2      0
A      1      0
B      2      1
B      5      1
B      2      1
B      1      1
C      1      1
C      9      1
D      7      0
D      2      0
D      0      0

解决方案

使用Pandas的groupby结合transform方法,将组级别的判断结果广播到每一行:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'id': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'D', 'D', 'D'],
    'count': [9, 0, 2, 1, 2, 5, 2, 1, 1, 9, 7, 2, 0]
})

# 生成dummy列:组内count全不为0则为1,否则为0
df['dummy'] = df.groupby('id')['count'].transform(lambda x: int((x != 0).all()))

# 输出结果
print(df)

逻辑说明

  • groupby('id')['count']:按id分组,针对每组的count列进行处理
  • (x != 0).all():判断组内所有count值是否都不为0,返回布尔值(True/False)
  • int(...):将布尔值转换为整数(True→1,False→0)
  • transform:将组级别的计算结果广播到该组的每一行,保证每个id对应的所有行拥有相同的dummy值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:39:24