使用熊猫在数据帧上执行分组,按计数排序并获取python中排名前2的计数

Joh*_*gis 3 sorting pandas pandas-groupby

我正在处理数据框,并希望按列(ID)分组,显示相应的标签并为每个标签计数。然后,如何使用python获取数据框中每个ID的前2个标签?

data= 
ID  Label
A   Apple
B   Apple
B   Apple
C   Banana
C   Pear
A   Pear
B   Apple
C   Apple
A   Banana
A   Apple
C   Pear
A   Banana
B   Pear
B   Pear
B   Banana
C   Apple
Run Code Online (Sandbox Code Playgroud)

我已经能够通过ID和Label进行分组,并且还可以获得每个ID的计数,但是我无法获得仅获得每个ID的前2名的最后一部分。

data= 
ID  Label
A   Apple
B   Apple
B   Apple
C   Banana
C   Pear
A   Pear
B   Apple
C   Apple
A   Banana
A   Apple
C   Pear
A   Banana
B   Pear
B   Pear
B   Banana
C   Apple
Run Code Online (Sandbox Code Playgroud)

这给了我这张桌子:

ID  Label   counts
A   Apple   2
A   Banana  2
A   Pear    1
B   Apple   3
B   Banana  1
B   Pear    2
C   Apple   2
C   Banana  1
C   Pear    2
Run Code Online (Sandbox Code Playgroud)

我想要的预期结果是:

ID  Label   counts
A   Apple   2
    Banana  2
B   Apple   3
    Pear    2
C   Apple   2
    Pear    2
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 5

如果只需要head两者(前2个)

data.groupby(['ID']).Label.value_counts().groupby(level=0).head(2)
Out[770]: 
ID  Label 
A   Apple     2
    Banana    2
B   Apple     3
    Pear      2
C   Apple     2
    Pear      2
Name: Label, dtype: int64
Run Code Online (Sandbox Code Playgroud)