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

如何使用Python在分组维度计算累计唯一值计数?

累计唯一就诊医院计算实现方法

核心逻辑

因为数据已经提前按client_id、date_of_encounter升序排序,我们只需要对同一客户的同一医院首次出现的记录做标记,再对标记按客户分组累加,即可得到截至当前日期的累计唯一医院数量。

操作步骤

  • 第一步:生成首次就诊标记
    调用duplicated()方法识别同一客户同一医院的重复记录,取反得到首次就诊标记:首次出现为True(对应数值1),重复出现为False(对应数值0)
  • 第二步:按客户分组累加标记值
    对标记列按client_id分组后调用cumsum()累加,直接得到目标列hospital_count

代码示例

# 方法1:分步实现,可读性更高
# 生成首次就诊标记列
df['first_visit'] = ~df.duplicated(subset=['client_id', 'hospital_id'])
# 分组累加得到累计唯一医院数
df['hospital_count'] = df.groupby('client_id')['first_visit'].cumsum()
# 删除中间标记列(可选)
df.drop(columns='first_visit', inplace=True)

# 方法2:单行实现,无需生成中间列
df['hospital_count'] = (~df.duplicated(['client_id', 'hospital_id'])).groupby(df['client_id']).cumsum()

效果验证

如果你的输入数据是如下结构:

record_idclient_iddate_of_encounterhospital_id
110012023-01-01H001
210012023-01-15H002
310012023-02-01H001
410022023-01-05H001

输出的hospital_count列会是[1,2,2,1],完全符合累计唯一统计的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 17:24:00