Pandas DF嵌套循环以从loop1中查找值匹配值

时间:2017-03-12 12:39:35

标签: python pandas dataframe

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

我有一个带库存数据的DF(即日期,收盘价,......)。 现在我想查看给定的Close值是否会达到目标值(例如,收盘+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

这很好..但我想知道是否有更好的(更快,更像熊猫)解决方案?

谢谢,并祝福。 微米。

修改

你好, 这是一些示例数据生成器:

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)

5000行我需要大约。 10秒。 我有3年的库存数据(15分钟间隔)需要几分钟。

欢呼声

0 个答案:

没有答案