Python 如何在不使用for循环的情况下使用交替逻辑操作pandas系列?
我有一个只包含1、0和-1的序列。我试图实现一个触发器逻辑:1只能在-1之后出现,-1只能在1之后出现。所以基本上,1和-1必须在它们已经发生之后才发生Python 如何在不使用for循环的情况下使用交替逻辑操作pandas系列?,python,pandas,series,Python,Pandas,Series,我有一个只包含1、0和-1的序列。我试图实现一个触发器逻辑:1只能在-1之后出现,-1只能在1之后出现。所以基本上,1和-1必须在它们已经发生之后才发生 >>> a [0, 0, 1, 1, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 1, 1, 0, 0, -1, 1] >>> out [0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
>>> a
[0, 0, 1, 1, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 1, 1, 0, 0, -1, 1]
>>> out
[0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 1]
如何使用pandas和不使用for循环来实现这一点?
请帮忙 我已经把你的名单在熊猫系列中,以利用熊猫的功能
a=pd.系列([0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1])
运行下面的代码后,它将给出所需的输出
a[a.index.difference(a[a!=0][a[a!=0].diff()!=0.index)]=0
输出
[0,0,1,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0]
我希望它能为您提供所需的解决方案。我在panda系列中列出了您的列表,以利用panda的功能
a=pd.系列([0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1])
运行下面的代码后,它将给出所需的输出
a[a.index.difference(a[a!=0][a[a!=0].diff()!=0.index)]=0
输出
[0,0,1,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0]
我希望它能给你想要的解决方案