假设我有以下包含美国 GDP 数据的 pandas 数据框。 Change 列包含每个季度的绝对变化值,而 Trend 列只是让趋势变化更加明显的噱头。
GDP Change Trend
Quarter
2007q4 14991.8 53.3 up
2008q1 14889.5 -102.3 down
2008q2 14963.4 73.9 up
2008q3 14891.6 -71.8 down
2008q4 14577.0 -314.6 down
2009q1 14375.0 -202.0 down
2009q2 14355.6 -19.4 down
2009q3 14402.5 46.9 up
2009q4 14541.9 139.4 up
2010q1 14604.8 62.9 up
我想要实现的是找到经济衰退开始的季度。经济衰退的定义是 GDP 连续两个季度下降。我确信这个任务可以通过遍历行来解决,但我想知道是否有更可取的、矢量化的方式。我已经使用 df.rolling() 尝试了一些事情,但我似乎找不到办法。非常感谢您的帮助!
编辑:在上面的例子中,经济衰退的开始时间是 2008 年第三季度。抱歉含糊不清!
请您参考如下方法:
尝试
((df['Change'].shift() < 0) &(df['Change'].shift(2) < 0)).idxmax()
你得到
'2009q1'
对于编辑,只需稍微调整一下条件
((df['Change'] < 0) &(df['Change'].shift(-1) < 0)).idxmax()
你得到
'2008q3'
