Python在一个数据帧上循环,并在IF中添加2个条件,以不达到最终索引并递增,它返回了一个错误
我尝试在数据帧上循环,以检查3个连续索引是否具有以下条件:Python在一个数据帧上循环,并在IF中添加2个条件,以不达到最终索引并递增,它返回了一个错误,python,pandas,data-science,Python,Pandas,Data Science,我尝试在数据帧上循环,以检查3个连续索引是否具有以下条件: df.loc[idx, "GDP"] > df.loc[idx+1, "GDP"] > df.loc[idx+2, "GDP"] 一旦满足,就意味着我们陷入了衰退 在使用以下命令对其进行迭代时: for idx, gdp in df.iterrows(): if (df.loc[idx, "GDP"]>df.loc[idx
df.loc[idx, "GDP"] > df.loc[idx+1, "GDP"] > df.loc[idx+2, "GDP"]
一旦满足,就意味着我们陷入了衰退
在使用以下命令对其进行迭代时:
for idx, gdp in df.iterrows():
if (df.loc[idx, "GDP"]>df.loc[idx+1, "GDP"]>df.loc[idx+2, "GDP"]) and (idx<=length-2):
print(df.loc[idx, "Quarter"], df.loc[idx, "GDP"], len(df.index)-3)
但是我需要它们在相同的条件下。尝试避免循环
recession = (
df.GDP.gt(df.GDP.shift(-1)) &
df.GDP.gt(df.GDP.shift(-2))
)
Pandas和numpy优化了比python循环更高效的C实现
在为数据帧编制索引后检查索引条件的代码中阅读更多信息。索引条件首先应该类似于if(idxdf.loc[idx+1,“GDP”]>df.loc[idx+2,“GDP”]):
…..但您应该避免使用数据帧进行循环。@dishinghoyani您有什么建议?我是python新手。看看你如何使用。。。给出的答案很好地解释了为什么要避免数据帧上的循环?
recession = (
df.GDP.gt(df.GDP.shift(-1)) &
df.GDP.gt(df.GDP.shift(-2))
)