如何在 DataFrame 中提取每年的 3 个最高值

问题描述 投票:0回答:1

我有一个包含很多行的 DF,并且这些数据基本上是按年份划分的。

为了让解释更直接,我举个例子。我们假设这个数据库

我想要一个新的 df ,其中包含每年的两个(或三个)最高值以及下面的所有列,只需根据此条件过滤行

python pandas dataframe data-science
1个回答
0
投票

您可以按

Year
进行分组,然后使用
nlargest
进行选择。使用一个简单的例子:

import pandas as pd

df = pd.DataFrame({'Year' : [2022, 2022, 2022, 2022, 2023, 2023, 2023, 2023],
                  'Value' : [3, 14, 15, 6, 4, 12, 11, 4],
                   'Name' : ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
                  })

df2 = df.loc[df.groupby('Year', group_keys = False)['Value'].nlargest(2).index].reset_index(drop = True)

print(df2)

给出:

   Year  Value Name
0  2022     15    C
1  2022     14    B
2  2023     12    F
3  2023     11    G
© www.soinside.com 2019 - 2024. All rights reserved.