Код: Выделить всё
import pandas as pd
df = pd.DataFrame(
{
'group': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'e', 'e', 'e'],
'num': [1, 2, 3, 1, 12, 12, 13, 2, 4, 2, 5, 6, 10, 20, 30]
}
)
Код: Выделить всё
group num
0 a 1
1 a 2
2 a 3
group num
6 c 13
7 c 2
8 c 4
group num
12 e 10
13 e 20
14 e 30
Я хочу сравнить первое значение каждой группы с последним cummax столбца num. Я могу лучше объяснить этот код:
Код: Выделить всё
df['last_num'] = df.groupby('group')['num'].tail(1)
df['last_num'] = df.last_num.ffill().cummax()
Код: Выделить всё
group num last_num desired_cummax
0 a 1 NaN 3
1 a 2 NaN 3
2 a 3 3.0 3
3 b 1 3.0 3
4 b 12 3.0 3
5 b 12 12.0 3
6 c 13 12.0 3
7 c 2 12.0 3
8 c 4 12.0 4
9 d 2 12.0 4
10 d 5 12.0 4
11 d 6 12.0 4
12 e 10 12.0 4
13 e 20 12.0 4
14 e 30 30.0 30
Теперь для группы c, поскольку ее первое значение больше, чем last_num, когда она достигает конца группы c, будет установлен новый cummax.
После этого я хочу отфильтровать группы. Если df.num.iloc[0] > df.desired_cummax.iloc[0]
Обратите внимание, что первая группа должна быть в ожидаемом выводе, несмотря ни на что.
Может быть, есть лучший подход к решению этой проблемы. Но я думаю, что это может сработать.
Моя попытка заключалась в создании Last_num, но я не знаю, как продолжить.
Подробнее здесь: https://stackoverflow.com/questions/786 ... d-the-last