遍历pandas行,并在if语句中使用shift()



我试图迭代一个数据帧,然后应用shift()函数。它给了我错误:'numpy.int64'对象没有属性'shift'

有什么简单的方法可以做到这一点,同时保持迭代?它应该只显示最后一个索引值。

import pandas as pd
df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]],
columns=['A', 'B', 'C'])
for index, row in df.iterrows():
if row['B'].shift(1) >= 4:
print(index)

循环方法是使用一个变量:

prev = None
for index, row in df.iterrows():
if prev is not None and prev >= 4:
print(index)
prev = row['B']

输出:

2

但是,如果可以的话,请使用向量代码:

out = df.index[df['B'].shift().ge(4)]
# if needed to print
print(*out, sep='n')
编辑

">如果'前一个'价格高于我的目标水平,那么我希望下面一行显示为True">

df['previous_B_over_target'] = df['B'].shift().ge(4)

输出:

A   B   C  previous_B_over_target
0   0   2   3                   False
1   0   4   1                   False
2  10  20  30                    True

最新更新