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
相关产品推荐
相关产品推荐

