如何修复Pandas DataFrame计算类别占比时的KeyError问题?
问题修复方案
错误原因
Severity是该DataFrame的索引名,并非数据列,所以用sv["Severity"]会触发KeyError——Pandas找不到名为Severity的列。计算占比需要以count列的总和作为分母,因为所有数值都存储在这个列中。
修复后的代码
方式1:生成单独的占比序列
sv_rt = sv['count'] / sv['count'].sum() * 100 print(sv_rt)
运行后会得到与原索引对应各层级的占比结果。
方式2:在原DataFrame中新增占比列
如果希望保留原数据结构并新增占比列,可使用assign方法:
sv = sv.assign(ratio=sv['count'] / sv['count'].sum() * 100) print(sv)
执行后会得到包含原count列和新增ratio占比列的完整DataFrame。
补充说明
如果后续需要将索引Severity转为普通数据列,可执行:
sv = sv.reset_index()
之后就能用sv["Severity"]引用该列,但这不是计算占比的必要操作。
内容的提问来源于stack exchange,提问作者user22570245
相关产品推荐
相关产品推荐

