在熊猫groupby对象上获取count()函数的最大值

时间:2018-06-27 02:56:33

标签: python pandas pandas-groupby

问题

使用熊猫,我需要返回每个groupby对象具有最大计数的行。

数据集

我有一个名为“ matches”的数据框,如下所示:

FeatureID gene pos 0 1_1_1 KRAS_1 6 1 1_1_1 KRAS_2 8 2 1_1_1 KRAS_3 11 3 1_1_1 NRAS_1 3 4 1_1_1 NRAS_2 11 5 1_1_1 NRAS_3 84 6 1_1_10 KRAS_1 4 7 1_1_10 KRAS_2 3 8 1_1_10 KRAS_3 14 9 1_1_10 NRAS_1 4 10 1_1_10 NRAS_2 6 11 1_1_10 NRAS_3 83

我尝试过的

我需要通过FeatureID将数据框分组在一起,然后获取每个组中的位置计数:

matches.groupby(["FeatureID", "gene"]).count()

这将导致:

FeatureID gene 1_1_1 KRAS_1 6 KRAS_2 8 KRAS_3 11 NRAS_1 3 NRAS_2 11 NRAS_3 84 1_1_10 KRAS_1 4 KRAS_2 3 KRAS_3 14 NRAS_1 4 NRAS_2 6

所需的输出:

我需要找回每个groupby对象中包含最高计数的行,但是我不知道该怎么做。

FeatureID gene count 1_1_1 NRAS_3 84 1_1_10 KRAS_3 14

解决方案

下面的代码行将每个分组依据的最大值返回给我:

matches.groupby(["FeatureID", "gene"]).count().sort_values("pos").groupby(level=0).tail(1)

1 个答案:

答案 0 :(得分:1)

您可以在max上使用level=0

matches.groupby(["FeatureID", "gene"]).count().max(level=0)

如果同时保持水平

df.groupby(["FeatureID", "gene"]).count().sort_values().groupby(level=0).tail(1)