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

如何在Pandas中按Manager ID分组统计Full-Time为1的记录数

按Manager ID分组统计Full-Time为1的记录数

需求说明

统计DataFrame中Full-Time列值为1的记录数,并按Manager ID分组汇总。

原始DataFrame

ID   Full-Time       Manager ID      
 101      0             103 
 102      1             103
 103      1             110
 104      0             107
 105      1             103 
 106      1             107
 107      1             110 
 108      0             107
 109      1             103
 110      1             NaN

期望结果

Manager ID    Full-Time count
    103               3
    107               1
    110               2

代码优化与正确实现

你尝试的代码逻辑方向是对的,但可以调整得更清晰高效,以下是两种可行方案:

方案一:优化筛选后分组的逻辑

现有代码可以得到统计结果,但需要调整列名和输出格式,用size()替代count()语义更贴合“记录数”统计:

result = df[df['Full-Time'] == 1].groupby('Manager ID').size().reset_index(name='Full-Time count')
  • size()直接统计分组内的总行数,和需求的“记录数”完全匹配
  • reset_index(name='Full-Time count')将分组索引转为普通列,并设置期望的结果列名,输出格式和需求完全一致

方案二:直接分组求和(更高效)

不需要提前筛选数据,利用Full-Time列值为1的特性,分组后直接求和即可得到对应数量,性能更优:

# 分组求和得到各经理的Full-Time=1记录数
result = df.groupby('Manager ID')['Full-Time'].sum().reset_index(name='Full-Time count')
# 过滤掉没有符合条件记录的经理
result = result[result['Full-Time count'] > 0]

注意事项

  • 两种方案都会自动排除Manager ID为NaN的分组,和期望结果一致;若需保留该分组,可在groupby中添加dropna=False参数
  • 方案二减少了一次数据筛选操作,在数据量较大时优势更明显

内容的提问来源于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.21 08:57:12