首页 > 解决方案 > 根据条件查找日期和前后班次

问题描述

我目前正在分析 python 中的一些时间序列数据,我需要根据其他列值找到事件的开始和结束。

我的数据框大致如下所示:

         Month      Price  Change
9  2009-06-01  144384.10  0.1112
10 2009-07-01  132549.80  -0.082
11 2009-08-01  144611.00   0.091
12 2009-09-01  135389.50 -0.0638
13 2009-10-01  140593.30  0.0384
14 2009-11-01  153151.70  0.0893
15 2009-12-01  151010.80  -0.014
16 2010-01-01  152519.30    0.01
17 2010-02-01  145998.30 -0.0428
18 2010-03-01  151475.30  0.0375
19 2010-04-01  163071.70  0.0766
20 2010-05-01  150044.20 -0.0799
21 2010-06-01  143950.30 -0.0406
22 2010-07-01  139866.00 -0.0284
23 2010-08-01  137859.00 -0.0143

假设我在 2010 年中期遇到了危机。我想通过查看该Change列来找到危机的第一个日期。我有以下代码,但我想知道它是否可以写得更有效率,因为这只是危机开始的一部分:

crisis = df
crisis["month_1"] = crisis["Month"].shift(1)
crisis = crisis[(crisis["Change"]< 0) & (crisis["Month"] > "2010-02-01")]
start_date = crisis["month_1"].iloc[0]

标签: pythonpandastime-series

解决方案


推荐阅读