Python 使用嵌套循环查找与loop1中的值匹配的值

Python 使用嵌套循环查找与loop1中的值匹配的值,python,pandas,dataframe,Python,Pandas,Dataframe,我是python/pandas的新手。。所以请不要评判:) 我有一个带有股票数据的DF(即日期、收盘价等)。 现在我想看看给定的收盘价是否会达到目标值(例如收盘价+50欧元,收盘价-50欧元) 我编写了一个嵌套循环,用当天的以下关闭值检查每个关闭值: def calc_zv(_df, _distance): _df['ZV_C'] = 0 _df['ZV_P'] = 0 for i in range(0, len(_df)): _date = _df.iloc[i].get('Date'

我是python/pandas的新手。。所以请不要评判:)

我有一个带有股票数据的DF(即日期、收盘价等)。 现在我想看看给定的收盘价是否会达到目标值(例如收盘价+50欧元,收盘价-50欧元)

我编写了一个嵌套循环,用当天的以下关闭值检查每个关闭值:

def calc_zv(_df, _distance):
_df['ZV_C'] = 0
_df['ZV_P'] = 0
for i in range(0, len(_df)):
    _date = _df.iloc[i].get('Date')
    target_put = _df.iloc[i].get('Close') - _distance
    target_call = _df.iloc[i].get('Close') + _distance
    for x in range(i, len(_df)-1):
        a = _df.iloc[x+1].get('Close')
        _date2 = _df.iloc[x+1].get('Date')
        if(target_call <= a and _date == _date2):
            _df.ix[i,'ZV_C'] = 1
            break    
        elif(target_put >= a and _date == _date2): 
            _df.ix[i,'ZV_P'] = 1
            break
        elif (_date != _date2):
            break
对于5000行,我需要大约10秒。 我有3年的股票数据(间隔15分钟),这需要几分钟


干杯

请发布示例数据,以便我们复制您的代码。当前方法的性能如何?您好,我已经编辑了原始帖子并添加了一些示例数据。整体性能还不错,但我想还有改进的余地:)@Parfait我做了(如果你没有看到我的另一篇文章),我实际上尝试了一个解决方案,但你似乎将每一行与后面的每一行进行了比较。没有循环很难做到。@parfait好的,谢谢。然后我将继续使用该解决方案:)任何其他比较都可能导致错误的计算。谢谢,干杯!
import numpy as np
import pandas as pd
from PX.indicator_macros import calc_zv
import datetime
abc = datetime.datetime.now()
print(abc)

df2 = pd.DataFrame({'DateTime' : pd.Timestamp('20130102'),
                    'Close' : pd.Series(np.random.randn(5000))})

#print(df2.to_string())

calc_zv(df2, 2)

#print(df2.to_string())

abc = datetime.datetime.now()
print(abc)