我正在使用pandas数据框,我想根据情况更新列“信号”。
如果值是“ 1”或“ -1”并且下一行具有相同的数字,则在该列上进行迭代时,第二个“ 1”或“ -1”必须更新为0。最后不应有两个连续1或-1。
我正在尝试此代码,没有任何更改。
for i in df['signal'].iteritems():
if i == 1 :
while next() == 1:
i=0
elif i == -1:
while next() == -1:
i=0
您可以在数据框中创建一个新列,将数据移位1,并为输出创建一个新列。如果原始信号和移位的信号在同一行上相等,则表示例如有两个连续的1(而您在第二行)。因此,您在输出列中输入了0。否则,您将复制原始值。
您可以从以下代码开始(似乎它可用于注释中提供的数据,但您也应该检查其他示例):
df = pd.DataFrame([1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0 ])
df['shifted'] = df.shift(1) #add the column with shifted values
df['output'] = df.apply(lambda x: x[0] if x.signal != x.shifted else 0, axis=1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句