在同一行中的初始条件为m之后遍历行

2024-04-20 10:30:06 发布

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

“我正试图写一个程序,使用熊猫数据.rsi并遍历此列。如果rsi>;70,我想检查下n个数据点的rsi是否为60,如果do和rsi再次超过70,我想在名为数据.RSIFI““

总而言之,问题是当一个条件已经满足(但不再处于相同的状态)时,在接下来的n行中寻找一个新的条件

交叉部分只是另一个条件,即-1或1。你知道吗

    for i in data.index: 
        val = data.get_value(i,'rsi')
        if val >70 and data.get_value(i, 'cross_ov_un') == 1: 
               for n in range(40):
                     if val.shift(n) < 60:
                         for n in range(40): 
                            if val.shift(n) > 70: 
                                data.loc[i,'RSIFI']= 1 

这不起作用,其中一个问题是时间戳不能移动。你知道吗

数据外观示例:

                       RSIFI     cross_ov_un  rsi
date                                              
2019-01-14 09:00:00      0            1  40.716622
2019-01-14 10:00:00      0            1  40.304055
2019-01-14 11:00:00      0            1  46.000142
2019-01-14 12:00:00      0            1  44.732117
2019-01-14 13:00:00      0            1  40.476486
2019-01-14 14:00:00      0            1  44.553255
2019-01-14 15:00:00      1            1  70.540997
2019-01-14 16:00:00      0            1  65.734665
2019-01-14 17:00:00      0            1  70.383329
2019-01-14 18:00:00      1            1  71.235720
2019-01-14 19:00:00      0            1  64.735780
2019-01-14 20:00:00      0            1  62.017401
2019-01-14 21:00:00      0            1  59.410495
2019-01-14 22:00:00      0            1  66.339052
2019-01-14 23:00:00      1            1  71.217073
2019-01-15 00:00:00      1            1  74.982245
2019-01-15 01:00:00      0            1  57.951364
2019-01-15 02:00:00      0            1  56.833347

我希望它看起来如何的例子

                  RSIFI  cross_ov_un        rsi
date                                              
2019-01-14 09:00:00      0            1  40.716622
2019-01-14 10:00:00      0            1  40.304055
2019-01-14 11:00:00      0            1  46.000142
2019-01-14 12:00:00      0            1  44.732117
2019-01-14 13:00:00      0            1  40.476486
2019-01-14 14:00:00      0            1  44.553255
2019-01-14 15:00:00      0            1  70.540997
2019-01-14 16:00:00      0            1  65.734665
2019-01-14 17:00:00      0            1  70.383329
2019-01-14 18:00:00      0            1  71.235720
2019-01-14 19:00:00      0            1  64.735780
2019-01-14 20:00:00      0            1  62.017401
2019-01-14 21:00:00      0            1  59.410495
2019-01-14 22:00:00      0            1  66.339052
2019-01-14 23:00:00      1            1  71.217073
2019-01-15 00:00:00      0            1  74.982245
2019-01-15 01:00:00      0            1  57.951364
2019-01-15 02:00:00      0            1  56.833347

Tags: 数据infordatagetifvaluerange
1条回答
网友
1楼 · 发布于 2024-04-20 10:30:06

问题是.loc用于访问一组行,而.at方法用于访问数据帧的单个索引的值。你知道吗

for i in data.index: 
    val = data.at[i,'rsi']
    if val > 70 and data.at[i, 'cross_ov_un'] == 1: 
        data.at[i,'RSIFI']= 1 

相关问题 更多 >