使用Pandas Groupby函数时触发Indexing Error,求修复方案
问题修复方案
错误原因
执行groupby('basepay').mean()时,Pandas仅对数值类型列计算均值,jobtitle属于字符串列,不会被保留在聚合后的结果中,因此后续选取['basepay','jobtitle']时会提示jobtitle列不存在。且原代码的分组逻辑完全偏离题目「找到警察队长的基本工资」的需求,需要重新调整。
正确代码示例
方案1:直接提取警察队长的基本工资(含去重)
import pandas as pd # 筛选职位为POLICE CAPTAIN的记录,提取职位和基本工资列 captain_basepay = sf_public_salaries[sf_public_salaries['jobtitle'] == 'POLICE CAPTAIN'][['jobtitle', 'basepay']]
方案2:计算警察队长的平均基本工资
import pandas as pd # 先筛选目标职位,再计算平均基本工资 average_captain_basepay = sf_public_salaries[sf_public_salaries['jobtitle'] == 'POLICE CAPTAIN'].groupby('jobtitle', as_index=False)['basepay'].mean()
方案3:查看所有职位的平均基本工资(可按需筛选)
import pandas as pd # 按职位分组,计算每个职位的平均基本工资 all_job_basepay = sf_public_salaries.groupby('jobtitle', as_index=False)['basepay'].mean() # 筛选警察队长的记录 captain_result = all_job_basepay[all_job_basepay['jobtitle'] == 'POLICE CAPTAIN']
核心修正点
- 调整分组逻辑:题目需求是关联职位与基本工资,因此应按
jobtitle分组而非basepay - 优先筛选目标数据:先筛选出警察队长的记录,再进行聚合或提取操作,避免无效计算
内容的提问来源于stack exchange,提问作者Chong
相关产品推荐
相关产品推荐

