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

如何在Pandas透视表中统计各届均获奖牌的国家数量?

统计每届都至少获得一枚奖牌的国家数量(Pandas实现)

假设我们已经有了这个以edition为索引、国家代码为列的奖牌透视表(记为medal_pivot),里面的nan代表该国家在对应届次没有获得奖牌。要找出每一届都至少拿过1枚奖牌的国家并统计数量,可以按以下步骤来做:

步骤1:标记每个国家每届是否获得奖牌

我们首先把原表的数值转换成布尔值——用notna()方法,把有奖牌的单元格(非nan)标记为True,没奖牌的(nan)标记为False:

has_medal = medal_pivot.notna()

步骤2:筛选出每届都获奖的国家

接下来,我们需要计算每个国家有多少届拿到了奖牌(对每一列求和,True会被算作1,False算作0),然后对比这个数值和总届数:如果求和结果等于总届数,就说明这个国家每一届都没缺席。

# 先获取总共有多少届
total_editions = len(medal_pivot.index)
# 筛选出符合条件的国家
consistent_countries = has_medal.columns[has_medal.sum() == total_editions]

步骤3:统计数量并查看结果

最后就可以统计这些国家的数量,或者直接列出它们:

count = len(consistent_countries)
print(f"每届都至少获得一枚奖牌的国家有{count}个:{list(consistent_countries)}")

验证示例结果

拿题目里的透视表来看,总共有8届(1800到1887):

  • ALG每届都有非nan值,求和结果是8;
  • ANZ同样每届都有记录,求和结果也是8;
  • 其他国家比如AFG在1887届是nan、AHO在1886/1887届是nan,都不满足条件。所以最终结果是2个国家,和示例完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:07:46