Панды: для groupby value_counts вернуть строки с максимальным количеством - PullRequest
0 голосов
/ 06 июля 2018

Я хочу сделать почти то же самое, что и этот вопрос .

Однако подход в принятом ответе @jezrael занимает слишком много времени, исходя из моего набора данных - у меня ~ 300 тыс. Строк в исходном кадре данных, и для запуска команды nlargest (1) требуется несколько минут. Кроме того, я попробовал это на ограниченном для головы (1000) кадре данных, и не получил только 1 строку для каждого в пределах value_count - я получил точно такую ​​же серию обратно, как и value_counts.

Моими собственными словами: По сути, мой набор данных состоит из двух столбцов, подобных этому:

Session Rating
A       Positive
A       Positive
A       Positive
A       Negative
B       Negative
B       Negative
C       Positive
C       Negative

Использование counts = df.groupby ('Session') ['Rating']. Value_counts () Я получаю объект Series следующим образом:

Session Rating
A       Positive  3
        Negative  1
B       Negative  2
C       Positive  1
        Negative  1

Как получить кадр данных, в который включен только рейтинг с максимальным количеством? И в случаях, когда есть несколько макс (например, C), я бы хотел исключить это из возвращаемой таблицы.

1 Ответ

0 голосов
/ 06 июля 2018

Я думаю, вы хотите что-то подобное.

df.groupby('Session')['Rating'].apply(lambda x: x.value_counts().head(1))

Выход:

Session          
A        Positive    3
B        Negative    2
C        Negative    1
Name: Rating, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...