我有一个数据框,在同一列上存在许多行数据。 我需要将最后一行(最新行)与它上面的行(倒数第二行)进行比较,然后再次比较它上面的行(倒数第三行)
代码如下:
dataframe.loc[
(
# Scontents : data value is above 70
(qtpylib.crossed_above(dataframe['avg'], self.sell_avg.value)) &
(dataframe['tema'] > dataframe['bb_middleband']) & # Guard: tema above BB middle
#Compare here :
(dataframe['tema'] < dataframe['tema'].shift(1))
),
'execute02'] = 1
return dataframe
这块可以比较最后一行和它上面的行。
我试过了:
(dataframe['tema'] < dataframe['tema'].shift(1) < dataframe['tema'].shift(1))
但它在 shell 中给了我值错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我对熊猫很菜鸟...我应该怎么做才能比较 3 个实例?我尝试阅读 panda 文档,但它只讲述索引 =1,但我不知道如何告诉它从最后一行读取 3 行。
谢谢你。
克里斯
您可以使用
iloc
来实现此目的,负值索引从最后一行开始计数。
例如
iloc[-1]
给出最后一列,-2
给出其上方的列,依此类推。
所以代码变成:
((dataframe['tema'].iloc[-1] < dataframe['tema'].iloc[-2]) &
(dataframe['tema'].iloc[-1] < dataframe['tema'].iloc[-3]))
小错别字 例如 iloc[-1] 给出最后一个“行”,-2 给出它上面的“行”,依此类推。