Получить максимум функции count () для групповых объектов панд - PullRequest
0 голосов
/ 27 июня 2018

Задача

Используя панд, мне нужно вернуть строку с максимальным количеством для каждого объекта groupby.

Dataset

У меня есть датафрейм под названием «совпадения», который выглядит следующим образом:

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)

1 Ответ

0 голосов
/ 27 июня 2018

Вы можете сделать с max на level=0

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

Если держать оба уровня

df.groupby(["FeatureID", "gene"]).count().sort_values().groupby(level=0).tail(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...