我有一个包含很多行的 DF,并且这些数据基本上是按年份划分的。
我想要一个新的 df ,其中包含每年的两个(或三个)最高值以及下面的所有列,只需根据此条件过滤行
您可以按
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