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

在Pandas中按group列分组计算country列的累计唯一值计数

解决按组计算累计唯一值数量的问题

你需要的是在每个分组内,对country列计算到当前行为止的累计唯一值数量,可以通过groupby结合transform和duplicated、cumsum实现,代码如下:

import pandas as pd

# 构造原始DataFrame
data = {
    'group': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
    'country': ['usa', 'germany', 'germany', 'france', 'usa', 'germany', 'germany', 'france', 'germany', 'france']
}
df = pd.DataFrame(data)

# 新增累计唯一值列
df['num_distinct_values'] = df.groupby('group')['country'].transform(
    lambda x: (~x.duplicated()).cumsum()
)

print(df)

代码解释:

  • df.groupby('group')['country']:按group列分组,针对每个组的country列做单独处理
  • ~x.duplicated():在组内标记当前行的country是否是首次出现(True代表首次出现,False代表重复出现)
  • .cumsum():对标记结果做累计求和,最终得到到当前行为止的累计唯一值数量

运行后输出结果完全符合预期:

group  country  num_distinct_values
0     A      usa                    1
1     A  germany                    2
2     A  germany                    2
3     A   france                    3
4     A      usa                    3
5     B  germany                    1
6     B  germany                    1
7     B   france                    2
8     B  germany                    2
9     B   france                    2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:02:35