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

如何在Python中筛选DataFrame的yearweek列前4个最大值对应数据?

解决方法

你的问题出在nlargest的逻辑上:它是按行选取yearweek最大的前N条记录,当大量行的yearweek等于最大值时,keep='all'会返回所有最大值的行,而非前4个不同yearweek的全部数据。要实现需求,需要先提取最大的4个不同yearweek值,再筛选这些周对应的所有行,具体步骤如下:

步骤1:获取最大的4个唯一yearweek值

可以通过以下几种方式实现:

方法一:排序去重后取前4

# 提取所有唯一的yearweek,降序排序后取前4个
top4_weeks = sorted(df['yearweek'].unique(), reverse=True)[:4]

方法二:用numpy简化排序

import numpy as np
# 升序排序后取最后4个(即最大的4个)
top4_weeks = np.sort(df['yearweek'].unique())[-4:]

方法三:通过去重行筛选

# 先去重得到每个yearweek的单行数据,再取最大的4个yearweek
top4_weeks = df.drop_duplicates(subset='yearweek').nlargest(4, 'yearweek')['yearweek'].tolist()

步骤2:筛选对应周的所有数据

用isin方法保留yearweek属于top4_weeks的所有行:

filtered_df = df[df['yearweek'].isin(top4_weeks)]

这样就能自动获取最近4周的全部数据,每周新增数据后重新运行代码即可,无需手动指定周数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:33:27