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

基于列值的条件迭代:按类别统计符合条件的记录及去重ID计数

问题描述

我有如下数据集:

categoryvalueID
A1x
A0.5y
A0.33y
B0.5z
B0.33z
C5w
C0.33w

需要完成两个统计需求:

    1. 对每个category,统计value ≤ 0.5的实例数量,输出为DataFrame或列表;
    1. 进阶需求:统计时每个ID仅计数一次(同一category下,只要某个ID有至少一条符合value ≤ 0.5的记录,就计1次,不管该ID有多少条符合条件的记录)。

预期结果:

  • 原需求:A类→2,B类→2,C类→1;
  • 进阶需求:A类→1,B类→1,C类→1。

解决方案

以下是基于Python pandas库的实现代码:

1. 原需求实现

加载数据集后,筛选符合条件的记录再按category分组计数:

import pandas as pd

# 构造数据集
data = {
    'category': ['A', 'A', 'A', 'B', 'B', 'C', 'C'],
    'value': [1, 0.5, 0.33, 0.5, 0.33, 5, 0.33],
    'ID': ['x', 'y', 'y', 'z', 'z', 'w', 'w']
}
df = pd.DataFrame(data)

# 统计每个category下value≤0.5的实例数
result_original = df[df['value'] <= 0.5].groupby('category').size().reset_index(name='count')
print(result_original)

输出结果:

category  count
0        A      2
1        B      2
2        C      1

2. 进阶需求实现

先筛选符合条件的记录,按category和ID去重后再分组计数:

# 统计每个category下符合条件的唯一ID数量
result_advanced = df[df['value'] <= 0.5].drop_duplicates(subset=['category', 'ID']).groupby('category').size().reset_index(name='unique_id_count')
print(result_advanced)

输出结果:

category  unique_id_count
0        A                1
1        B                1
2        C                1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:30:42