我有一列包含事件的值。
[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, 20]
让我们试着transform
用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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句