数据帧列上的条件逻辑

2024-03-28 08:33:35 发布

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

我对Python还比较陌生,所以请原谅这个可能很琐碎的问题。你知道吗

我试图在我为特定期货合约计算的RSI值发生变化的情况下产生买入和卖出信号。在我的DataFrame中,我创建了一个名为R SI的列,其中包含我正在引用的值,我要做的是根据预定的逻辑检查每个正在进行的值,如果满足该条件,则生成“买入”或“卖出”,然后为生成的每个信号增加一个计数。i、 例如,我设想一个解决方案,使用for循环比较[i][i+1],但我得到一个错误,它显示-

TypeError: cannot do label indexing on class'pandas.indexes.range.RangeIndex with these indexers [25.714285714285722] of class 'numpy.float64'

这是我的密码

for i in es.RSI:
    Buy = 0
    Sell = 0
    if es.RSI[i] < 30.0 and es.RSI[i+1] >30.0:
        es.RSI[i] = "Buy"
        Buy = Buy +1

    if es.RSI[i] >70.0 and es.RSI[i+1] < 70.0 :
        es.RSI[i] = "Sell"
        Sell = Sell +1

Tags: anddataframeforifes信号情况buy
2条回答

你的回路

for i in es.RSI:

迭代er.RSI数组中的项,因此i包含RSI的值,而不是数组的索引。所以你才会看到这个错误

TypeError: cannot do label indexing on class'pandas.indexes.range.RangeIndex with these indexers [25.714285714285722] of class 'numpy.float64'

要遍历数组索引,应该使用

for i in range(len(es.RSI)-1):

基于此错误,看起来您正在使用浮点值作为数组索引值。或许可以尝试替换

es.RSI[i]

es.RSI[int(i)]

(同样的道理内耳鼻咽喉炎[i+1],替换为内耳鼻咽喉炎[int(i)+1]。)

相关问题 更多 >