首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列信号条件

列信号条件
EN

Stack Overflow用户
提问于 2018-11-30 20:20:11
回答 3查看 56关注 0票数 0

从雅虎财经下载的nvidia的ohlcv上读到,当我试图定义哪一个通过了avg>volume测试时,我正在为signal /dontbuy创建一个列,所有的东西要么全部‘购买’,要么不买。

代码语言:javascript
复制
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'
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-30 20:33:10

您根本不需要for循环:

代码语言:javascript
复制
mask = df["Volume"] > df["Avg_volume"] 

df.loc[mask, "Signal"] = "Buy"
df.loc[~mask, "Signal"] = 'Don't buy'
票数 1
EN

Stack Overflow用户

发布于 2018-11-30 20:29:07

您没有指定要分配'Buy''Don't buy'的任何索引。使用loc代替:

代码语言:javascript
复制
for index, row in df.iterrows(): 
    if row['Volume'] > row['Avg_volume']:
        df.loc[index, 'Signal']='Buy'
    else:
        df.loc[index, 'Signal']='Dont Buy'
票数 1
EN

Stack Overflow用户

发布于 2018-11-30 20:33:24

基于np.where()的矢量化解决方案

代码语言:javascript
复制
df['Signal'] = np.where(df['Volume'] > df['Avg_volume'], 'Buy', 'Dont Buy')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53564356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档