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

pandas中多列groupby搭配numpy.where使用出现KeyError问题求助

问题解决

错误原因

多列选取语法错误:df['Occupation','Emp_Code']会被Pandas判定为查找名为('Occupation', 'Emp_Code')的单个列,你的数据集里不存在这个列,因此抛出KeyError。如果要选择多个列作为分组依据,需要将列名放在列表中,即df[['Occupation', 'Emp_Code']]。

修正代码

你可以任选以下两种写法中的一种,效果完全一致:

写法1:显式传入分组列

import pandas as pd
import numpy as np
df = pd.DataFrame({
        'Occupation':list('dddeee'),
         'Emp_Code':list('aabbcc'),
         'Gender':list('MFMFMF')
})
m = df['Gender'].eq('M')
df['new'] = np.where(m, m.groupby(df[['Occupation','Emp_Code']]).transform('mean').mul(100), 0)
print(df)

写法2:直接传入列名

import pandas as pd
import numpy as np
df = pd.DataFrame({
        'Occupation':list('dddeee'),
         'Emp_Code':list('aabbcc'),
         'Gender':list('MFMFMF')
})
m = df['Gender'].eq('M')
df['new'] = np.where(m, m.groupby(['Occupation','Emp_Code']).transform('mean').mul(100), 0)
print(df)

运行结果

Occupation Emp_Code Gender    new
0          d        a      M  100.0
1          d        a      F    0.0
2          d        b      M  100.0
3          e        b      F    0.0
4          e        c      M  100.0
5          e        c      F    0.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:45:03