我试图迭代一个数据帧,然后应用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