Groupby Pandas DataFrame и отбрасывать значения условно на основе ранга - PullRequest
0 голосов
/ 01 июня 2018

У меня есть такой фрейм данных:

Col1 | Col2 | Col3
 a   |   8  |  9
 a   |   3  |  7
 a   |   1  |  3
 a   |   0  |  8
 b   |   6  |  18
 b   |   2  |  6

Я бы хотел отбросить все, кроме 2-го и 3-го верхнего значения для Col2, сгруппировав Col1, предполагая, что это возможно

Требуется вывод:

Col1 | Col2 | Col3
 a   |   3  |  7
 a   |   1  |  3
 b   |   2  |  6

1 Ответ

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

Это возможно с помощью cumcount

df[df.groupby('Col1').cumcount().isin([1,2])]
Out[423]: 
  Col1  Col2  Col3
1    a     2     7
2    a     1     3
5    b     2     6

Дополнительная информация:

df.groupby('Col1').cumcount()
Out[435]: 
0    0
1    1
2    2
3    3
4    0
5    1
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...