【发布时间】:2018-10-29 07:28:25
【问题描述】:
我的问题与one 有关,但我仍然没有看到如何将答案应用于我的问题。我有一个像这样的 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
如何在没有大量循环的情况下做到这一点?
【问题讨论】:
-
不确定我是否关注。对于第二行,2001-02-01 大于 2001-01-01,那么为什么还要替换该行的 val 呢?
-
第二行发生变化,因为
date小于与val最大值关联的日期。 -
您是指每个组还是整个 DataFrame?
-
是的............