此问题是对原始here的跟进。
我有一个如下数据框(df1),它显示位置的变化,加1个单位(1),减1个单位或什么都不做(0)。
我正在寻找用净位置创建第二个数据帧df2,而不是做cumsum(),这实际上显示了长或短的滚动总数,我想假设一个短(-1)位置是不可能的,因此在df2中出现的唯一值可能是long(1),flat(0)但不是short(-1)。
所以逻辑是开始平坦(0),如果在df1中出现+1然后再变为+1,否则保持为0.
如果系列的前一个值为1,那么只有-1才会从滚动系列中减去它,即df2中的数据只能是b 0或1。
以下代码部分有效,但我需要添加功能以排除短(-1)位置。
def position(series):
return series.where(series.replace(to_replace=0, method='ffill').diff(), 0).cumsum()
df[list_of_columns].apply(position)