更有效的方法来检查pandas数据帧中相邻行的值,以便进行股票回溯测试

2024-10-01 15:35:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的财务数据框架。我想在股票价格高于上滚动平均值至少有X天,低于滚动平均值至少X天时,我想创建一个“买入”信号。我做了一个简单的实现,检查库存是否至少在2天前和之后2天以上。我想知道: (1) 有一种方法可以使它更通用,这样我就可以实现X天的天数,而不需要放入一堆if语句 (2) 有一种更有效的方法来编写下面的代码。在

data2只是dataframe 高于上限的数据2.当股票高于上滚动平均值时为真,当股票低于上滚动平均值时为假。在

upperlist = data2[data2.AboveUpper == True].AboveUpper.index

for i, val in enumerate(upperlist):
    if data2.iloc[val+1]['AboveUpper'] == True:
        continue
    if data2.iloc[val+1]['AboveUpper'] == False:
        if data2.iloc[val+2]['AboveUpper'] == False:
            data2.ix[val+2, 'buy'] = True
        if data2.iloc[val+2]['AboveUpper'] == False:
            continue 

Tags: 方法框架falsetrueifval平均值股票
1条回答
网友
1楼 · 发布于 2024-10-01 15:35:17

如果data2.AboveUpper是{},当股票高于上滚动平均值时,则

pd.rolling_sum( data2.AboveUpper, window=X ) >= X

True当股票至少连续X天高于上滚动平均值时;所以你只需要:

^{pr2}$

例如:

>>> ts = pd.Series( [True, True, False, False, True, True, True, False, True ] )
>>> pd.rolling_sum( ts, window=2 ) >= 2
0    False
1     True
2    False
3    False
4    False
5     True
6     True
7    False
8    False
dtype: bool

相关问题 更多 >

    热门问题