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

如何从Python DataFrame列中获取前N个不同最大值的所有行?

获取DataFrame中duration列前3个不同最大值的所有行

问题背景

需求:从Python DataFrame的duration列中获取前3个不同最大值的所有重复行。

现有代码

# to get 3 largest numbers from column duration with all duplicates
import pandas as pd
technologies =  "A B C D E F G H I J".split()
duration     = [88,70,50,87,77,88,77,88,1,87]
columns      = ['technologies','duration']
df = pd.DataFrame(list(zip(technologies,duration)), columns=columns)

print(df.nlargest(3, 'duration',keep = "all"))

当前输出

technologies  duration
0            A        88
5            F        88
7            H        88

期望输出

technologies  duration
0            A        88
5            F        88
7            H        88
3            D        87
9            J        87
4            E        77
6            G        77

原代码的问题在于:nlargest(3, 'duration', keep="all")是按行取前3个最大记录,但所有最大值为88的行已超过3条,因此只会返回所有88的行,无法覆盖第二、第三大的不同值。


解决方案

要实现需求,需先提取前3个不同的最大值,再筛选出所有duration属于该集合的行。

修改后的代码

import pandas as pd
technologies =  "A B C D E F G H I J".split()
duration     = [88,70,50,87,77,88,77,88,1,87]
columns      = ['technologies','duration']
df = pd.DataFrame(list(zip(technologies,duration)), columns=columns)

# 提取降序排列的前3个不同duration值
top_3_unique_values = df['duration'].drop_duplicates().sort_values(ascending=False)[:3].tolist()

# 筛选符合条件的行,并按duration降序排列
result = df[df['duration'].isin(top_3_unique_values)].sort_values('duration', ascending=False)

print(result)

代码解释

  1. df['duration'].drop_duplicates():获取去重后的duration值,确保每个值仅出现一次。
  2. sort_values(ascending=False)[:3]:将去重后的数值降序排列,取前3个即为最大的三个不同值。
  3. df['duration'].isin(top_3_unique_values):筛选出所有duration属于这三个值的行。
  4. sort_values('duration', ascending=False):按duration降序排列,让结果与期望输出格式一致。

另一种简洁写法

也可以用unique()结合排序实现:

top_3_unique_values = sorted(df['duration'].unique(), reverse=True)[:3]
result = df[df['duration'].isin(top_3_unique_values)].sort_values('duration', ascending=False)
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:57:33