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

Python Pandas统计管理者下属人数报错:无法将多列赋值到单列

问题解决:统计员工下属人数的Pandas实现

错误原因

你写的df.groupby('mgr_id').transform('count')会对数据集中的所有列执行计数操作,返回一个包含emp_id和mgr_id两列的DataFrame。但你试图把这个多列结果赋值给单个列emp_count,这就触发了ValueError——Pandas不允许把多列数据塞进一个列里。

正确解法

我们需要先单独统计每个经理对应的下属数量,再将这个数量映射到每个员工身上,非经理的员工下属数填0。具体代码如下:

# 1. 统计每个经理的下属人数:按mgr_id分组,对emp_id计数
mgr_sub_count = df.groupby('mgr_id')['emp_id'].count()

# 2. 把每个员工的emp_id映射到对应的下属数,没有对应值的填0
df['emp_count'] = df['emp_id'].map(mgr_sub_count).fillna(0).astype(int)

代码解释

  • groupby('mgr_id')['emp_id'].count():只针对emp_id列计数,返回一个Series,索引是经理ID,值是下属人数(比如mgr_id=3对应4个下属)。
  • df['emp_id'].map(mgr_sub_count):把每个员工的ID和经理ID匹配,找到对应的下属数;如果某个员工不是经理(比如emp_id=1),map会返回NaN。
  • fillna(0):把NaN替换成0,符合非经理员工下属数为0的需求。
  • astype(int):把结果转成整数类型,和预期输出一致。

运行后就能得到你想要的结果:

emp_id mgr_id  emp_count
0       1      3          0
1       2      3          0
2       3      5          4
3       4      3          0
4       5      7          1
5       6      7          0
6       7     10          3
7       8      3          0
8       9      7          0
9      10      -          1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:27:20