Python 分组和查找最频繁的值

Python 分组和查找最频繁的值,python,pandas,Python,Pandas,我有这样一个df: Protein Peptide A AAA A AAA A ABA B AAA B ABA B ABA 但是我需要通过为第1列中的每个值查找第2列中出现频率最高的值来过滤数据 因此,输出将如下所示: Protein Peptide A AAA B ABA 事实上,我甚至需要前三个出现的值。 真的不知道如何使用python和pandas解决这个问题吗?模式不是gr

我有这样一个df:

Protein Peptide
A        AAA
A        AAA
A        ABA
B        AAA
B        ABA
B        ABA
但是我需要通过为第1列中的每个值查找第2列中出现频率最高的值来过滤数据

因此,输出将如下所示:

Protein Peptide
A        AAA
B        ABA
事实上,我甚至需要前三个出现的值。
真的不知道如何使用python和pandas解决这个问题吗?

模式不是groupby方法,尽管它是(and)方法,所以您必须将它传递给:


要获得前三名,您可以使用(同样的方式):


非常感谢。成功了!但我的其他专栏消失了(平均,sd)。如何组合它们?@MPs抱歉,没有回答这个问题,这取决于你想如何组合它们(我不认为这有什么标准的方法是有意义的?)也许可以问一个关于输入和所需输出的新问题-我认为这个问题很好/自包含/googlable atm!)
In [11]: df.groupby('Protein')['Peptide'].apply(lambda x: x.mode()[0])
Out[11]:
Protein
A    AAA
B    ABA
Name: Peptide, dtype: object
In [12]: df.groupby('Protein')['Peptide'].apply(lambda x: x.value_counts()[:3])
Out[12]:
Protein
A        AAA    2
         ABA    1
B        ABA    2
         AAA    1
dtype: int64