Pandas存在Event列却报KeyError?求报错原因及解决方向
问题原因与解决方法
为什么会触发KeyError?
你执行all_run_counts["Event"].value_counts()后,得到的不是包含Event列的DataFrame,而是一个带多层索引(MultiIndex)的Series:
- 这个Series的索引是双层结构:第一层是
Run,第二层是Event - Series的数值是对应
Event在该Run下的出现次数 - 此时
Event是索引的一部分,不是普通列,所以用result['Event']会触发KeyError
解决方法(三种可选)
方法1:直接通过多层索引筛选(最简洁)
利用Pandas的xs方法直接提取第二层索引为'J'的条目:
j_counts = result.xs('J', level='Event')
方法2:转成DataFrame后筛选
先把Series转换为普通DataFrame,让Run和Event成为列,再做筛选:
# 重置索引,将多层索引转为列,同时给计数列命名为Count result_df = result.reset_index(name='Count') # 筛选Event为'J'的行 j_counts = result_df[result_df['Event'] == 'J']
方法3:一步到位统计特定Event(效率更高)
不用先统计所有Event,直接过滤出目标Event后再分组计数:
j_counts = all_data_df[all_data_df['Event'] == 'J'].groupby('Run').size()
内容的提问来源于stack exchange,提问作者user_04248753498
相关产品推荐
相关产品推荐

