如何使用Python每隔10分钟分割一次TimeSeries数据

时间:2018-07-25 17:51:47

标签: python-3.x pandas timestamp time-series

如何每隔10分钟中断一次TimeSeries数据,这是我的示例数据,在以下数据中,如果我首先看到没有10分钟的数据,因为在第三行之后它会跳转到00:39:00分钟,因此它将从0开始在这里重新开始计数,我想将true / false值放在最后计数10分钟的地方。

我尝试了一种技术x["DateTime"].diff() > pd.Timedelta(minutes=10),但是它发现了数据中的00:10:00时间戳,然后将其破坏了,这不是我的要求。因为pd.Timedelta(minutes=10)给出结果00:10:00

我该怎么做?希望我解释清楚

DateTime               ValA
2011-01-01 00:01:00    0.551815
2011-01-01 00:01:59    0.542464
2011-01-01 00:03:00    0.520525
2011-01-03 06:39:00    1.225518
2011-01-03 06:40:00    2.241443
2011-01-03 06:40:59    3.148734
2011-01-03 06:42:00    5.361565
2011-01-03 06:43:00    6.878603
2011-01-03 06:43:59    7.127448
2011-01-03 06:45:00    8.130982
2011-01-03 06:46:00    8.188750
2011-01-03 06:46:59    8.267185
2011-01-03 06:48:00    8.204753
2011-01-03 06:49:00    8.121145
2011-01-03 06:49:59    8.129115
2011-01-03 06:51:00    8.160426
2011-01-03 06:52:00    8.301057
2011-01-03 06:53:00    8.342608
2011-01-03 06:53:59    8.390675
2011-01-03 06:55:00    8.063992
2011-01-03 06:56:00    7.396055
2011-01-03 06:56:59    6.771710
2011-01-03 06:58:00    5.295999
2011-01-03 06:59:00    4.210010
2011-01-03 06:59:59    3.689164
2011-01-03 07:01:00    2.963554
2011-01-03 07:02:00    2.873527
2011-01-03 07:02:59    2.885474
2011-01-03 07:04:00    2.394660
2011-01-03 07:05:00    2.603989

所需的输出应为

DateTime               ValA       Flag
2011-01-01 00:01:00    0.551815   False 
2011-01-01 00:01:59    0.542464   False
2011-01-01 00:03:00    0.520525   False
2011-01-03 06:39:00    1.225518   True
2011-01-03 06:40:00    2.241443   False
2011-01-03 06:40:59    3.148734   False
2011-01-03 06:42:00    5.361565   False
2011-01-03 06:43:00    6.878603   False
2011-01-03 06:43:59    7.127448   False
2011-01-03 06:45:00    8.130982   False
2011-01-03 06:46:00    8.188750   False
2011-01-03 06:46:59    8.267185   False
2011-01-03 06:48:00    8.204753   False
2011-01-03 06:49:00    8.121145   False
2011-01-03 06:49:59    8.129115   True
2011-01-03 06:51:00    8.160426   False
2011-01-03 06:52:00    8.301057   False
2011-01-03 06:53:00    8.342608   False
2011-01-03 06:53:59    8.390675   False

这应该是输出

2 个答案:

答案 0 :(得分:0)

嗯,这并不完美,但是它在10分钟的标记后给了True。取决于您从哪里开始计数。

by_seconds = df.resample('1S')

by_seconds['flag'] = by_seconds.index.minute%10==0


DateTime                  ValA          flag
2011-01-01 00:01:00 0.5518149999999999  False
2011-01-01 00:01:01                     False
2011-01-01 00:01:02                     False
2011-01-01 00:01:03                     False
2011-01-01 00:01:04                     False

这只是意味着您的ValA在没有观察到的地方会有NaN

答案 1 :(得分:0)

好了,我找到了解决方案,它可以按照我希望使用floor()diff()函数来实现答案的方式工作,

我尝试了df.DateTime.dt.floor('10T').diff() 我使用了这段代码,它给出了10个薄荷糖数据的所有细目。

参考:Split Time Series Data Into Time Intervals