【发布时间】:2018-11-30 20:20:11
【问题描述】:
从 yahoo Finance 下载 ohlcv for nvidia 阅读, 我正在为信号购买/不购买创建一列,当我尝试定义哪些通过了 avg>volume 测试时,所有结果要么全部“购买”,要么不购买。
df=pd.read_csv('NVDA.csv',dtype={'label':str})
df['Price%delta']=((df['Close']/df['Open'])*100)
df['Avg_volume']=df['Volume'].rolling(7).mean()
df['Signal']=0
for index, row in df.iterrows():
if row['Volume'] > row['Avg_volume']:
df['Signal']='Buy'
else:
df['Signal']='Dont Buy'
【问题讨论】:
-
你有什么问题?
-
使用类似
df['Signal']=np.where(row['Volume'] > row['Avg_volume'],'Buy','Dont Buy')的东西。当它可以以向量化的方式完成时,避免使用 for 循环 -
@IanQuah 请注意,在每次迭代中 OP 只是设置整个系列而不是每一行。因此,根据他的最后一次迭代,他得到了所有重复的值,这些值要么是
Buy,要么是Dont Buy -
谢谢你的建议
标签: python pandas quantitative-finance