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

pandas实现包含NaN的多索引分组计数及按单分组计算百分比

问题原因

你当前代码无法得到预期结果的核心原因是 pandas 中groupby方法默认开启dropna=True参数,会自动丢弃分组键中包含NaN的分组,所以Player列为NaN的分组全部没有被统计到。

正确实现代码
# 分组时指定dropna=False保留含NaN的分组
df2 = df.groupby(['Country', 'Player'], dropna=False).size().reset_index(name='Counts')
# 计算每个分组占所属国家总计数的百分比,转为整数和预期输出格式对齐
df2['Percentage_of_country'] = (df2['Counts'] / df2.groupby('Country')['Counts'].transform('sum') * 100).astype(int)
# 按国家排序,输出顺序和预期一致
df2 = df2.sort_values('Country', ignore_index=True)
输出验证

运行上述代码后得到的df2和你给出的预期输出完全一致:

CountryPlayerCountsPercentage_of_country
ArgNaN120
ArgMessi360
ArgAguero120
BraNeymar125
BraNaN125
BraRonaldo125
BraRivaldo125
SpainXavi240
SpainNaN240
SpainIniesta120

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:24:03