我有一个从雅虎金融导入的股票价格和回报数据框架,如下所示。
日期 | 价格 | 返回 |
---|---|---|
2019-01-01 | 54 | 0.05 |
2019-02-01 | 46 | -0.14 |
2019-03-01 | 48 | 0.04 |
其中日期是索引,返回是数字。
我正在尝试创建一个新列,如果第二天的回报为正,则等于 1,如果下一个回报为负,则等于 -1。
我用过
if df['return'].shift(-1) > 0:
df['Indicator'] = 1
else
df['Indicator'] = -1
但是,我得到了上述错误。我曾尝试使用 .all() 但这使得所有指标列都等于 1。即使第二天的回报是负数
所需的输出将是
日期 | 价格 | 返回 | 指标 |
---|---|---|---|
2019-01-01 | 54 | 0.05 | -1 |
2019-02-01 | 46 | -0.14 | 1 |
2019-03-01 | 48 | 0.04 | 1 |
指标栏中的最后一个 1 是假设第二天的回报,2019-04-01 是正数。
有什么建议吗?
谢谢
使用 numpy where 函数。它更有效和简单:
import numpy as np
df['Indicator'] = np.where(df['return'].shift(-1)>0,1,-1 )
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句