Как получить первый предмет в группе, который соответствует определенному условию в пандах? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть следующий код:

grouped_stats = stats.groupby( stats.last_mv.ne( stats.last_mv.shift()).cumsum() )

last_mv - десятичное значение. В приведенном выше коде я группирую по последовательным значениям

Я пытаюсь двумя способами получить первое значение, котороеНа 0,25% выше первого элемента в значении groups_mv.Другими словами, я сгруппировал по последовательным значениям last_mv, я хочу выбрать первое из каждой группы, умножить на 1,025 и затем найти первое значение в группе, которое соответствует этому значению (если оно существует)

Iпробовал:

grouped_stats.filter(lambda x: x.last_mv >= (x.first().last_mv * 1.025))

но я не могу получить доступ к первой строке в группе с помощью .first (), как я предполагал, что не будет

Я также пытался

grouped_stats.loc[ grouped_stats.last_mv >= (grouped_stats.first().last_mv * 1.025) ]

но я получаю сообщение об ошибке: «Не удается получить доступ к вызываемому атрибуту« loc »объектов« DataFrameGroupBy », попробуйте использовать метод« apply »»

1 Ответ

0 голосов
/ 06 декабря 2018

Я считаю, что вам нужно transform для Series с тем же размером, что и оригинал DataFrame, заполненный первыми значениями для групп:

stats[ stats.last_mv >= (grouped_stats.last_mv.transform('first') * 1.025) ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...