使用熊猫,我需要返回每个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)
答案 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)