首页 > 解决方案 > IF语句重复输出

问题描述

如果满足以下条件,我正在尝试打印日期,但我不断收到重复日期。我认为问题出在

如果 df['Close'][i+1]<df['Open'][i+1] 和 df['Close'][i+2]<df['Open'][i]:

但我不明白为什么。

有谁知道它有什么问题?


代码:

for i in range(len(df.index)-2):        
    if df['Close'][i]>df['Open'][i]:
        if df['Close'][i+1]<df['Open'][i+1] and df['Close'][i+2]<df['Open'][i]:
            print df.index[i]

输出:

[Timestamp('2019-07-03 00:00:00'), Timestamp('2020-06-11 00:00:00'), Timestamp('2019-07-03 00:00:00'), Timestamp('2020-06-11 00:00:00'), Timestamp('2020-09-21 00:00:00'), etc...]

样本 DF:

            Open       High         Low         Close       Adj             
Date                        
2019-06-03  136.798004  137.110992  136.615997  136.761002  136.761002  
2019-06-04  136.822006  137.457993  136.539993  136.791000  136.791000  
2019-06-05  137.479004  137.757996  137.199997  137.490005  137.490005  
2019-06-06  137.438995  137.733002  136.970001  137.436996  137.436996  
2019-06-07  137.690002  138.164993  137.492996  137.688995  137.688995  

标签: pythonpandas

解决方案


既然你使用的是熊猫,为什么不以矢量化的方式来做呢?

df.index[df['Close'].shift(-2) < df["Open"]]

推荐阅读