Pandas 基于当前事件索引和另一列的下一个事件索引执行操作[1]

Pandas 基于当前事件索引和另一列的下一个事件索引执行操作[1],pandas,Pandas,好的,这个很难描述。因此,我将仅举一个例子来解释 pd.DataFrame({'event_a': [False, True, False, False, False, True, False, False, False, True, False], 'event_b': [False, False, False, True, False, False, False, False, True, False, False], 'value':

好的,这个很难描述。因此,我将仅举一个例子来解释

pd.DataFrame({'event_a': [False, True, False, False, False, True, False, False, False, True, False],
              'event_b': [False, False, False, True, False, False, False, False, True, False, False],
              'value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]})
这里有两个事件和一个值列。事件将始终交替发生(同一索引中永远不会有事件a和事件b,一行中永远不会有两个相同的事件,中间不会有另一个事件)

我想执行的具体操作是abs(下一个值/当前值-1)

鉴于此,我在本例中的输出应该如下所示

output = [na, 1, na, 0.5, na, 0.5, na, na, 0.111, na, na]
例如,第2行是abs(4(下一个事件的值)/2(当前事件)-1)=1

cond=df.loc[:,['event_a','event_b']]任意(axis=1)
输出=np.ones(条件尺寸)*np.nan
输出[cond]=(t.loc[cond,'value'].shift(-1)/t.loc[cond,'value'])。减去(1).abs()