获取pandas groupby对象的max of count()函数

2024-06-16 09:48:20 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

使用pandas,我需要返回每个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

溶液

下一行给出了每个groupby组的最大值的基因:

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

Tags: 数据对象pospandascount基因sort计数
1条回答
网友
1楼 · 发布于 2024-06-16 09:48:20

你可以在level=0上使用max

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

如果保持两个水平

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

相关问题 更多 >