Мой вопрос связан с этим одним , но я все еще не понимаю, как я могу применить ответ к своей проблеме.У меня есть DataFrame примерно так:
df = pd.DataFrame({
'date': ['2001-01-01', '2001-02-01', '2001-03-01', '2001-04-01', '2001-02-01', '2001-03-01', '2001-04-01'],
'cohort': ['2001-01-01', '2001-01-01', '2001-01-01', '2001-01-01', '2001-02-01', '2001-02-01', '2001-02-01'],
'val': [100, 101, 102, 101, 200, 201, 201]
})
df
date cohort val
0 2001-01-01 2001-01-01 100
1 2001-02-01 2001-01-01 101
2 2001-03-01 2001-01-01 102
3 2001-04-01 2001-01-01 101
4 2001-02-01 2001-02-01 200
5 2001-03-01 2001-02-01 201
6 2001-04-01 2001-02-01 201
Группировка для каждого cohort
, я хочу заменить значения val
на максимальное значение val
, но только для наблюдений, где date
меньше date
, связанного с максимальным значением val
.Поэтому строки 0, 1 и 4 будут изменены так, чтобы они выглядели так:
df #This is what I want my final df to look like
date cohort val
0 2001-01-01 2001-01-01 102
1 2001-02-01 2001-01-01 102
2 2001-03-01 2001-01-01 102
3 2001-04-01 2001-01-01 101
4 2001-02-01 2001-02-01 201
5 2001-03-01 2001-02-01 201
6 2001-04-01 2001-02-01 201
Как я могу сделать это без большого количества циклов?