gpt4 book ai didi

python - 在满足同一行中的初始条件后遍历 Pandas 行

转载 作者:行者123 更新时间:2023-11-28 18:59:09 24 4
gpt4 key购买 nike

“我正在尝试编写一个程序,该程序使用 pandas data.rsi 并遍历此列。如果 rsi > 70,我想检查 n 个下一个数据点的 rsi 是否为 60,如果 do 和 rsi 再次移动到 70 以上,我想在名为 data.RSIFI 的列中创建一个 1”

总结一下这个问题就是当一个条件已经满足(但不再处于相同状态)时,在接下来的 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

最佳答案

问题是 .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

关于python - 在满足同一行中的初始条件后遍历 Pandas 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54640571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com