如何选择分组后的前两个值?

2024-06-26 14:32:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我对排序或最大的函数感到困惑。有人能把灯给我看看吗?在你的帮助下学习Python

当前数据集:

df = pd.DataFrame({'State':['TX','TX','TX','LA','LA','LA','LA','MO','MO'],
                   'County':['TX1','TX1','TX1','LA1','LA1','LA1','LA1','MO1','MO1'],
                   'value':[1,2,3,1,2,3,4,1,4]})

所需的输出数据集如下所示:

df1 = pd.DataFrame({'State':['TX','TX','LA','LA','MO','MO'],
                   'County':['TX1','TX1','LA1','LA1','MO1','MO1'],
                   'value':[3,2,4,3,4,1]})

Tags: 数据函数dataframedf排序valuelapd
3条回答

正如你提到的nlargest

df.groupby(['State', 'County']).value.nlargest(2).reset_index()

不止一种方法可以做到这一点,但我认为选择有序数据的“内置”方法很可能是nth()Docs

import pandas as pd

>>>df
  State County  value
0    TX    TX1      1
1    TX    TX1      2
2    TX    TX1      3
3    LA    LA1      1
4    LA    LA1      2
5    LA    LA1      3
6    LA    LA1      4
7    MO    MO1      1
8    MO    MO1      4

gp = df.sort_values('value', ascending=False).groupby(['State', 'County']).nth([range(2)])

>>>gp
              value
State County
LA    LA1         4
      LA1         3
MO    MO1         4
      MO1         1
TX    TX1         3
      TX1         2

要获取所请求的输出表,请重置其索引

>>>gp.reset_index()
  State County  value
0    LA    LA1      4
1    LA    LA1      3
2    MO    MO1      4
3    MO    MO1      1
4    TX    TX1      3
5    TX    TX1      2

groupbytail之后sort_values

df.sort_values('value').groupby(['State','County']).tail(2)
Out[179]: 
  County State  value
7    MO1    MO      1
1    TX1    TX      2
2    TX1    TX      3
5    LA1    LA      3
6    LA1    LA      4
8    MO1    MO      4

相关问题 更多 >