Pandas 用对应值的最大值填充组[PANDES]

Pandas 用对应值的最大值填充组[PANDES],pandas,Pandas,我有一列包含事件的值 [15, 30, 10, 25, 10, 5, 15, 20, 15] 第二列定义了事件A还是事件B ['A', 'A', 'A', 'A', 'B', 'B', 'A', 'A', 'A'] 基于与它所属事件相关的值索引,我想用相应的值“填充”事件 [30, 30, 30, 30, 10, 10, 20, 20, 20] 因为前30个值的索引属于事件A的这个特定部分,所以我们用30来填充该事件,以此类推 示例如下: df = pd.DataFrame({'val':

我有一列包含事件的值

[15, 30, 10, 25, 10, 5, 15, 20, 15]
第二列定义了事件A还是事件B

['A', 'A', 'A', 'A', 'B', 'B', 'A', 'A', 'A']
基于与它所属事件相关的值索引,我想用相应的值“填充”事件

[30, 30, 30, 30, 10, 10, 20, 20, 20]
因为前30个值的索引属于事件A的这个特定部分,所以我们用30来填充该事件,以此类推

示例如下:

df = pd.DataFrame({'val': [15, 30, 10, 25, 10, 5, 15, 20, 15],
                   'event': ['A', 'A', 'A', 'A', 'B', 'B', 'A', 'A', 'A']})

    val event
1  15.0     A
2  30.0     A
3  10.0     A
4  25.0     A
5  10.0     B
6   5.0     B
7  15.0     A
8  20.0     A
9  15.0     A

我希望我的输出列是
[30,30,30,30,10,10,20,20]
让我们尝试使用
shift
cumsum
进行
transform

df.groupby(df['event'].shift().ne(df.event).cumsum()).val.transform('max')

0    30
1    30
2    30
3    30
4    10
5    10
6    20
7    20
8    20
Name: val, dtype: int64

让我们尝试使用
shift
cumsum

df.groupby(df['event'].shift().ne(df.event).cumsum()).val.transform('max')

0    30
1    30
2    30
3    30
4    10
5    10
6    20
7    20
8    20
Name: val, dtype: int64

看起来这不管用。当一个事件的全局最大值应该是本地值(即,最后3个值应该是20)时,它会采用全局最大值,但这看起来不起作用。当事件应为本地时,它采用事件的全局最大值(即,最后3个值应为20)