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

如何用Python DataFrame筛选进球均值最高且场次最少的前10支球队

解决方案

要实现“进球均值最高且参赛场次最少的前10支球队”的筛选,核心是按优先级排序:先以进球均值降序排列,进球均值相同的情况下,再按参赛场次升序排列,最后取前10。之前的单一nlargest或合并DataFrame的方法逻辑不对,以下是两种可行方案:

方法一:用sort_values + head(直观易读)

先按指定规则排序,再截取前10行,适合大部分场景:

# 替换成你实际的参赛场序列名,比如'Partidos Jugados'
sorted_df = mundialestotales_df.sort_values(
    by=['Prom. de Gol', 'Partidos Jugados'],
    ascending=[False, True]  # 进球均值降序,参赛场次升序
)
top10_teams = sorted_df.head(10)

方法二:改进nlargest(大数据集更高效)

nlargest支持多列排序,但默认是降序,所以要对参赛场次列取反来实现升序逻辑:

top10_teams = mundialestotales_df.nlargest(
    10,
    columns=['Prom. de Gol', lambda x: -x['Partidos Jugados']],
    keep='first'  # 相同值时保留最先出现的球队
)

为什么合并DataFrame无效?

你之前尝试的合并方法逻辑有误:合并是取两个筛选结果的交集/并集,但你的需求是排序优先级——优先看进球均值,再看场次多少,不是单纯筛选“进球均值前10且场次最少的交集”,所以合并无法实现目标。

注意事项

  • 请确认参赛场次的列名,替换代码中对应的字段(比如你的列可能叫Partidos,需自行调整)。
  • 如果存在多支球队进球均值和场次都完全相同的情况,keep='first'会保留数据集中最先出现的球队,你也可以根据需求换成keep='last'或keep='all'(此时结果可能超过10行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:25:22