Python 基于另一列在pandas中创建要素(即,当要素从正变为负时)
我有以下数据集:Python 基于另一列在pandas中创建要素(即,当要素从正变为负时),python,pandas,feature-engineering,technical-indicator,Python,Pandas,Feature Engineering,Technical Indicator,我有以下数据集: data = {'ROC_9': [0.006250, 0.087230, 0.045028, 0.165738, -0.006993, -0.432736, -0.11162, 0.057466, 0.203138, -0.008234]} price_data = pd.DataFrame (data) 它是一个关于股票价格的指标,即变化率 我想写一个代码,当pandas数据帧上的当前特征从正变为负,或者反之亦然时,在pandas数据帧上创建一个新特征(列) 通过一个例
data = {'ROC_9': [0.006250, 0.087230, 0.045028, 0.165738, -0.006993, -0.432736, -0.11162, 0.057466, 0.203138, -0.008234]}
price_data = pd.DataFrame (data)
它是一个关于股票价格的指标,即变化率
我想写一个代码,当pandas数据帧上的当前特征从正变为负,或者反之亦然时,在pandas数据帧上创建一个新特征(列)
通过一个例子更容易解释:让我们使用特性ROC9
我创建了一个名为ROC9_signal的新变量,并将其设置为0:
price_data['ROC9_signal'] = 0
当ROC_9从负变为正时,我想将ROC9_信号从0变为1
当ROC_9从正变为负时,我想将ROC9_信号从0变为-1
查看数据,我希望ROC9_信号从0变为-1,因为值已经从0.16(正)变为-0.006(负)
查看数据,我希望ROC_9信号从0变为1,因为值已从-0.11(负)变为0.05(正)
查看数据,我希望ROC9_信号从0变为-1,因为值已经从0.20(正)变为-0.008(负)
我只想将发生更改的行从0更改为1或从0更改为-1,其他行必须保持为0
然后,我将应用相同的逻辑创建momentum10\u信号列和chalkin\u money\u flow\u信号列。因此,我想要一个可以应用于不同列而不是手动的解决方案
提前谢谢你的帮助
这是完整数据的外观:
您可以使用
np.sign
提取符号。大概是这样的:
signs = np.sign(price_data.ROC_9)
price_data['signal'] = np.sign(signs.diff()).fillna(0)
输出:
ROC_9 signal
0 0.006250 0.0
1 0.087230 0.0
2 0.045028 0.0
3 0.165738 0.0
4 -0.006993 -1.0
5 -0.432736 0.0
6 -0.111620 0.0
7 0.057466 1.0
8 0.203138 0.0
9 -0.008234 -1.0
谢谢你的帮助!这是一个非常有效的解决问题的方法