Python 如何区分序列或numpy数组中的正负号变化

Python 如何区分序列或numpy数组中的正负号变化,python,pandas,numpy,Python,Pandas,Numpy,我想区分序列或数组中正负号的变化 series sign_change (desired output) 0 -2 0 1 -4 0 2 -2 0 3 1 1 4 2

我想区分序列或数组中正负号的变化

    series  sign_change (desired output)
0       -2                             0
1       -4                             0
2       -2                             0
3        1                             1
4        2                             0
5        8                             0
6       -1                            -1
7       -1                             0
8        0                             1
9        1                             1
10      -1                            -1
11       2                             1
12       2                             0
换句话说,我想要一个1表示从负到正的变化,一个-1表示从正到负的变化

这里提出了一个类似的问题,但我认为没有得到正确的回答:

有什么办法可以在熊猫或numpy中解决这个问题吗

以下是要使用的df:

import pandas as pd
pd.DataFrame({'series': {0: -2,
  1: -4,
  2: -2,
  3: 1,
  4: 2,
  5: 8,
  6: -1,
  7: -1,
  8: 0,
  9: 1,
  10: -1,
  11: 2,
  12: 2},
 'sign_change (desired output)': {0: 0,
  1: 0,
  2: 0,
  3: 1,
  4: 0,
  5: 0,
  6: -1,
  7: 0,
  8: 1,
  9: 1,
  10: -1,
  11: 1,
  12: 0}})
signarr几乎可以做所有的事情,但只比第一个元素短一个元素。只需插入前导零并将-2和2转换为-1和1:

result = np.clip(np.insert(np.diff(np.sign(arr)), 0, 0), -1, 1)
signarr几乎可以做所有的事情,但只比第一个元素短一个元素。只需插入前导零并将-2和2转换为-1和1:

result = np.clip(np.insert(np.diff(np.sign(arr)), 0, 0), -1, 1)
同样的原则,更多的风格:

同样的原则,更多的风格:


谢谢你的快速回复。如上所述,我在原始问题中输入错误。有没有办法在你的答案中包含零?@user6400946更新了答案,现在应该解释为零谢谢你的快速回复。如上所述,我在原始问题中输入错误。有没有办法在答案中包含零?@user6400946更新了答案,现在应该解释为零