Skip to main content
 首页 » 编程设计

python之在一个维度上查找 pandas 数据框中相同项目的连贯组

2025年05月04日23jiqing9006

假设我有以下包含美国 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'