带条件的分组唯一值统计:按周统计符合True的唯一ID数量
带条件的唯一ID分组统计解决方案
实现思路
先筛选出Y/N为True的有效记录,按周统计唯一ID数量,再补全所有出现过的周数并为无符合条件的周填充0,最后格式化结果展示。
代码实现(以Python Pandas为例)
首先构造样本数据:
import pandas as pd # 构造样本数据集 data = { 'Y/N': [True, True, False, False, True, False], 'ID': ['AAA', 'BBB', 'CCC', 'AAA', 'BBB', 'BBB'], 'WeekNum': [46, 46, 46, 47, 47, 48] } df = pd.DataFrame(data)
执行统计逻辑:
# 1. 筛选Y/N为True的行,按WeekNum分组统计唯一ID数量 true_unique_count = df[df['Y/N'] == True].groupby('WeekNum')['ID'].nunique() # 2. 获取所有出现过的周数,补全缺失周并填充0 all_weeks = df['WeekNum'].unique() result = true_unique_count.reindex(all_weeks, fill_value=0) # 3. 格式化结果的列名与索引 result = result.reset_index() result.columns = ['周数', '符合True的唯一ID数'] result['周数'] = 'Week ' + result['周数'].astype(str) # 输出最终结果 print(result)
输出结果
执行后将得到预期表格:
| 周数 | 符合True的唯一ID数 |
|---|---|
| Week 46 | 2 |
| Week 47 | 1 |
| Week 48 | 0 |
关键步骤说明
df[df['Y/N'] == True]:精准过滤出符合条件的记录,排除无效数据干扰groupby('WeekNum')['ID'].nunique():按周分组后统计唯一ID数量,nunique()确保ID去重统计reindex(all_weeks, fill_value=0):用所有出现过的周数重新索引,为无符合条件的周自动填充0,保证所有周数都被包含
内容的提问来源于stack exchange,提问作者Libor Morávek
相关产品推荐
相关产品推荐

