分组和查找最常见的值

时间:2015-04-14 18:35:00

标签: 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

实际上我甚至需要前3个值。 真的不知道如何使用python和pandas来解决它?

1 个答案:

答案 0 :(得分:4)

模式不是groupby方法,虽然它是Series(和DataFrame)方法,因此您必须将其传递给apply

In [11]: df.groupby('Protein')['Peptide'].apply(lambda x: x.mode()[0])
Out[11]:
Protein
A    AAA
B    ABA
Name: Peptide, dtype: object

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

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