Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在一个数据帧上循环,并在IF中添加2个条件,以不达到最终索引并递增,它返回了一个错误_Python_Pandas_Data Science - Fatal编程技术网

Python在一个数据帧上循环,并在IF中添加2个条件,以不达到最终索引并递增,它返回了一个错误

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

我尝试在数据帧上循环,以检查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+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))
)