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

Python Pandas 数据列除法计算结果异常问题排查

错误原因

你的除法语句本身写法没有问题,核心错误是百分比的计算时机错误,且错误地对不可累加的比率值做了求和聚合:

  • 你在明细行层面提前计算了每行的第二剂接种数/第一剂接种数比率,后续按State分组聚合时,把这个比率列和其他接种人数字段一起放进了.sum()做加总。比率是相对值,不具备可加性,你得到的527.85本质是UK维度下所有明细行的单行比率累加的结果,完全不是全州汇总层面的接种占比。
  • 举个极简验证例子:如果UK下有2条明细记录,第一条第一剂100人、第二剂90人,对应单行比率0.9;第二条第一剂900人、第二剂810人,对应单行比率0.9。按照你现在的逻辑,分组后得到的比率值是0.9+0.9=1.8,和实际总占比(90+810)/(100+900)=0.9完全不符,和你遇到的异常表现完全一致,你得到的527的异常值恰好对应UK下约550条明细行的比率累加结果。
修正方案

把百分比计算步骤挪到分组聚合完成之后,基于汇总后的全州总接种人数计算比率即可,修正后代码如下:

# 先计算单行的部分接种人数绝对值
cov_vac_merge['Partially Vaccinated'] = cov_vac_merge['First Dose'] - cov_vac_merge['Second Dose']
# 仅对可累加的绝对值类接种人数字段做分组求和
covid_summary= cov_vac_merge.groupby('State')[['Vaccinated','First Dose','Second Dose','Partially Vaccinated']].sum().sort_values('Partially Vaccinated' ,ascending=False)
# 基于分组汇总后的总数值计算占比
covid_summary['% Partially Vaccinated'] = covid_summary['Second Dose'] / covid_summary['First Dose']

运行后UK对应的% Partially Vaccinated值就会是你预期的≈0.95的正确结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:30:43