首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >若条件成对条件

若条件成对条件
EN

Stack Overflow用户
提问于 2015-12-03 14:28:22
回答 3查看 91关注 0票数 0

我有这个循环来检查以下条件。对于i的每一次迭代,都需要为m1, m2, m3, m4 and m5获取一个值。是否需要像这样检查if语句(由“对”检查),还是有更聪明/更快的方法进行检查?

代码语言:javascript
复制
for i in range(len(df.index)):

    if      df.ix[i, 'ema4'] >= df.ix[i, 'ema9']:
            m1 = 1
    elif    df.ix[i, 'ema4'] < df.ix[i, 'ema9']:
            m1 = -1

    if      df.ix[i, 'ema9'] >= df.ix[i, 'ema20']:
            m2 = 1            
    elif    df.ix[i, 'ema9'] < df.ix[i, 'ema20']:
            m2 = -1

    if      df.ix[i, 'ema20'] >= df.ix[i, 'ema48']:
            m3 = 1
    elif    df.ix[i, 'ema20'] < df.ix[i, 'ema48']:
            m3 = -1        

    if      df.ix[i, 'ema48'] >= df.ix[i, 'ema80']:
            m4 = 1
    elif    df.ix[i, 'ema48'] < df.ix[i, 'ema80']:
            m4 = -1  

    if      df.ix[i, 'ema80'] >= df.ix[i, 'ema100']:
            m5 = 1
    elif    df.ix[i, 'ema80'] < df.ix[i, 'ema100']:
            m5 = -1 

    df.ix[i,'test'] = (m1 + m2 + m3 + m4 + m5)   
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-03 14:34:32

为了简化代码,您可以将变量初始化为默认值,并使用一组if

代码语言:javascript
复制
m1 = m2 = m3 = m4 = m5 = -1

for i in range(len(df.index)):
    if df.ix[i, 'ema4'] >= df.ix[i, 'ema9']:
        m1 = 1
    ...
票数 4
EN

Stack Overflow用户

发布于 2015-12-03 14:48:05

您可以使用两个循环,一个是@eugene y提到的,对列表稍微做了修改,另一个是列:

代码语言:javascript
复制
df_size = len(df.index)
m = [-1] * df_size 
col_names = ['ema4', 'ema9', 'ema20', 'ema48', 'ema80']

for i in range(df_size ):
     for col_name in col_names:
          if df.ix[i, col_name] >= df.ix[i, col_name ]:
               m[i] = 1


df.ix[i,'test'] = sum(m)
票数 1
EN

Stack Overflow用户

发布于 2015-12-03 14:35:25

就像评论说的,只需使用其他:

代码语言:javascript
复制
for i in range(len(df.index)):
    if df.ix[i, 'ema4'] >= df.ix[i, 'ema9']:
        m1 = 1
    else:
        m1 = -1

或者你可以预置并只做以下操作:

代码语言:javascript
复制
    m1 = -1
    if df.ix[i, 'ema4'] >= df.ix[i, 'ema9']:
        m1 = 1

对所有的ifs重复

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34068568

复制
相关文章

相似问题

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