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更新了答案,现在应该解释为零