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

Pandas统计DataFrame各分组匹配指定列表的元素数并新增列

Pandas 分组统计指定列表内元素个数实现

首先导入依赖、加载测试数据:

import pandas as pd

# 定义目标匹配列表
The_list = ["A", "B", "D"]

# 加载测试数据集
df = pd.DataFrame({
    'Groups': {0: 'G1', 1: 'G1', 2: 'G1', 3: 'G1', 4: 'G2', 5: 'G2', 6: 'G2', 7: 'G3', 8: 'G3', 9: 'G4', 10: 'G4', 11: 'G4', 12: 'G4'}, 
    'Values': {0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'A', 5: 'B', 6: 'A', 7: 'A', 8: 'D', 9: 'Z', 10: 'D', 11: 'E', 12: 'C'}
})

实现逻辑

  • 逐行判断Values列的值是否属于The_list,匹配成功标记为1,否则标记为0
  • 按Groups列分组做聚合统计,同组所有行填充相同的聚合结果
  • 用groupby搭配transform可以直接生成和原表长度一致的统计列,不需要额外做表关联,代码最简洁

实现代码

场景1:统计分组内匹配元素总个数(重复值计入统计)

df['New_column'] = df['Values'].isin(The_list).groupby(df['Groups']).transform('sum')

运行后输出结果:

Groups Values  New_column
0      G1      A           3
1      G1      B           3
2      G1      C           3
3      G1      D           3
4      G2      A           3
5      G2      B           3
6      G2      A           3
7      G3      A           2
8      G3      D           2
9      G4      Z           1
10     G4      D           1
11     G4      E           1
12     G4      C           1

场景2:统计分组内匹配元素的去重唯一值个数

如果需要重复值只算一次,用如下代码即可:

df['New_column'] = df.groupby('Groups')['Values'].transform(lambda x: x[x.isin(The_list)].nunique())

运行后输出结果:

Groups Values  New_column
0      G1      A           3
1      G1      B           3
2      G1      C           3
3      G1      D           3
4      G2      A           2
5      G2      B           2
6      G2      A           2
7      G3      A           2
8      G3      D           2
9      G4      Z           1
10     G4      D           1
11     G4      E           1
12     G4      C           1

注:你提供的期望输出中G3、G4的统计值和给定The_list的匹配规则不符,可根据实际业务规则调整判断条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:06:18