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

在Pandas中按经理分组统计含Full-Time=1的ID数量

问题

我查了很多统计相关的问答,但没找到合适的方案。我有一份就业历史数据集,需要按经理分组统计:有多少个ID的记录中出现过Full-Time=1(注意不是统计每个ID的Full-Time=1出现次数)。

数据集示例

ID      Date    Job     Manager     Full-Time
 101   05/2022   Sales     103         1
 101   06/2022   Sales     103         1
 102   08/2022   Tech      105         0
 102   09/2022   Tech      105         1
 103   11/2021   Sales     110         0
 104   04/2022   Sales     103         0
 104   05/2022   Sales     103         1
 104   06/2022   Sales     103         1
 104   07/2022   Sales     103         1
 104   08/2022   Sales     103         0
 ......
 201   10/2022   HR        198         1 

期望输出

Manager     Full-Time Count 
  103              2
  105              1
  110              3
  ....
  198              2

我尝试过这段代码,但没得到想要的结果:

df['FT Count'] df.groupby('Manager')['Full-Time'].nunique
解决方案

你需要先锁定Full-Time=1的记录,再确保每个ID在对应经理下只被统计一次,最后按经理分组计数,具体实现如下:

分步实现

  1. 筛选出所有Full-Time=1的行
ft_records = df[df['Full-Time'] == 1]
  1. 按Manager和ID去重,避免同一个ID被重复统计
unique_ids = ft_records.drop_duplicates(subset=['Manager', 'ID'])
  1. 按Manager分组统计去重后的ID数量
result = unique_ids.groupby('Manager')['ID'].count().reset_index(name='Full-Time Count')

一行代码简化

可以把上述步骤合并为一行:

result = df[df['Full-Time'] == 1].drop_duplicates(subset=['Manager', 'ID']).groupby('Manager')['ID'].count().reset_index(name='Full-Time Count')

结果说明

  • 经理103对应的ID101、ID104都出现过Full-Time=1,所以计数为2
  • 经理105仅ID102出现过Full-Time=1,计数为1,完全匹配你的期望输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:17:52