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

在Python Pandas中按ID统计COL1唯一值并排除LACK值

Pandas实现按ID统计排除指定值后的唯一值数量

示例数据构造

先还原你提供的DataFrame:

import pandas as pd

data = {
    'ID': ['123', '123', '123', '456', '456', '77', '88', '66', '66'],
    'COL1': ['XX', 'XX', 'L', 'AP', 'AP', 'C', 'LACK', 'LACK', 'G']
}
df = pd.DataFrame(data)

实现代码

通过groupby结合transform即可快速完成需求,核心逻辑是按ID分组后,过滤掉COL1中的"LACK"值,再统计剩余值的唯一数量:

# 计算每个ID分组排除LACK后的唯一值数,并映射到每一行
df['COL1_bis'] = df.groupby('ID')['COL1'].transform(lambda x: x[x != 'LACK'].nunique())

结果验证

执行后得到的DataFrame与你期望的一致:

IDCOL1COL1_bis
123XX2
123XX2
123L2
456AP1
456AP1
77C1
88LACK0
66LACK1
66G1

逻辑说明

  • groupby('ID')['COL1']:按ID对COL1列分组,确保同一ID的所有行被归为一组
  • transform:将分组计算的结果广播到原DataFrame的每一行,保证同一ID的行拥有相同的统计值
  • x[x != 'LACK'].nunique():先过滤当前组中等于"LACK"的元素,再统计剩余元素的唯一值数量;若组内只剩"LACK",过滤后为空,nunique()返回0,完全匹配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:05:28