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

如何在Pandas中按组统计满足另一列条件的单列唯一值

Pandas按分组统计满足Value>0的唯一ID数量

问题说明

按GroupID分组后,仅统计组内Value>0对应的ID唯一值数量;若组内所有Value都是0,统计结果为0。

示例输入

GroupID     ID       Value
ABC         TX123     0
ABC         TX678     1
ABC         TX678     2
DEF         AG123     1
DEF         AG123     1
DEF         AG123     1
GHI         TE203     0
GHI         TE203     0

期望输出

GroupID    UniqueNum
ABC           1
DEF           1
GHI           0

当前代码未过滤Value>0的条件,会统计组内所有唯一ID:

count_df = df.groupby(['GroupID'])['ID'].nunique()

解决方法

方法1:先过滤再分组统计

先筛选出Value>0的行,再分组统计唯一ID,最后补全所有分组并填充缺失值为0:

# 筛选符合Value>0的行
filtered = df[df['Value'] > 0]
# 分组统计唯一ID数
result = filtered.groupby('GroupID')['ID'].nunique()
# 补全所有原始GroupID,缺失项填0
result = result.reindex(df['GroupID'].unique(), fill_value=0).reset_index(name='UniqueNum')

方法2:分组内直接处理

利用groupby.apply在每个分组内筛选Value>0的ID后统计唯一值:

result = df.groupby('GroupID').apply(
    lambda group: group[group['Value'] > 0]['ID'].nunique()
).reset_index(name='UniqueNum')

结果验证

两种方法均会输出符合预期的结果:

GroupID  UniqueNum
0     ABC          1
1     DEF          1
2     GHI          0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:25:17