熊猫分组后如何选择前2个值?

时间:2019-05-07 01:13:58

标签: python pandas

我对sortby或最大的函数感到困惑。有人可以给我看看灯吗?在您的所有帮助下,新的和正在学习的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]})

3 个答案:

答案 0 :(得分:1)

执行此操作的方法不止一种,但是我认为选择序数数据的“内置”方法很可能是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

答案 1 :(得分:1)

您提到的protoc

nlargest

答案 2 :(得分:0)

groupby tailsort_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