2015-10-16 326 views
0

我正在使用每30秒从智能手机录制的GSM数据(mcc,mnc,cid,lac)。但是会有一些数据可能会有差距。现在我必须每五分钟记录一次数据并计算一些功能,如独特的cell ID。我可以从第一行开始,并添加五分钟。然后找到小于或等于新时间的下一行。另外我可以创建一个时间增量列。但这也不是很有效。 有没有什么高效的方法来做到这一点在熊猫根据日期时间索引划分数据。Python Pandas时间序列数据按时间划分数据

数据帧是这样的:

      mcc mnc  cid lac signalis 
networktime            
2015-10-12 22:04:06.362 405 5 10473 5071  15 
2015-10-12 22:04:35.751 405 5 10473 5071  15 
2015-10-12 22:05:07.358 405 5 10473 5071  15 
2015-10-12 22:05:16.858 405 5 10473 5071  15 
2015-10-12 22:06:07.854 405 5 10473 5071  15 
2015-10-12 22:06:27.731 405 5 10473 5071  15 
2015-10-12 22:07:08.261 405 5 10473 5071  15 
2015-10-12 22:07:26.334 405 5 10473 5071  15 
2015-10-12 22:08:08.180 405 5 10473 5071  15 
2015-10-12 22:08:19.750 405 5 10473 5071  15 
2015-10-12 22:08:48.098 405 5 10473 5071  15 
2015-10-12 22:09:23.835 405 5 2896027 5822   8 
2015-10-12 22:09:53.092 405 5 10473 5071  18 
2015-10-12 22:10:19.423 405 5 10473 5071  16 
2015-10-12 22:11:08.363 405 5 10473 5071  21 
2015-10-12 22:11:19.475 405 5 10473 5071  21 
2015-10-12 22:11:48.253 405 5 10473 5071  21 
2015-10-12 22:12:19.110 405 5 10473 5071  17 
2015-10-12 22:12:48.538 405 5 10473 5071  14 
2015-10-12 22:13:22.486 405 5 10473 5071  15 
2015-10-12 22:13:48.280 405 5 10473 5071  18 
2015-10-12 22:14:48.355 405 5 10473 5071  18 
2015-10-12 22:15:21.784 405 5 10473 5071  18 
2015-10-12 22:15:54.823 405 5 10473 5071  17 
2015-10-12 22:16:22.445 405 5 2894627 5822  11 
2015-10-12 22:17:02.702 405 5 2894627 5822  11 
2015-10-12 22:17:27.461 405 5 2894627 5822  11 
2015-10-12 22:18:08.394 405 5 2894627 5822  11 
2015-10-12 22:18:36.883 405 5 2894627 5822  11 
2015-10-12 22:18:56.815 405 5 2894627 5822  11 
...      ... ...  ... ...  ... 
2015-10-15 16:35:22.367 405 800 28492 473  16 
2015-10-15 16:35:47.007 405 800 28492 473  16 
2015-10-15 16:36:25.389 405 800 28492 473  16 
2015-10-15 16:37:09.750 405 800 28492 473  16 
2015-10-15 16:37:20.512 405 800 28492 473  16 
2015-10-15 16:53:07.070 405 800 51551 445  12 
2015-10-15 16:53:36.551 405 800 51551 445  12 
2015-10-15 16:53:54.766 405 800 51551 445  12 
2015-10-15 16:54:30.815 405 800 51551 445  12 
2015-10-15 17:10:17.531 405 800 51551 445  12 
2015-10-15 17:11:05.349 405 800 51551 445  12 
2015-10-15 17:11:23.439 405 800 51551 445  12 
2015-10-15 17:11:47.869 405 800 51551 445  12 
2015-10-15 17:12:18.418 405 800 51551 445  12 
2015-10-15 17:27:54.367 405 5 51551 445  12 
2015-10-15 17:28:32.354 405 5 51551 445  12 
2015-10-15 17:28:49.613 405 5 51551 445  12 
2015-10-15 17:29:19.621 405 5 51551 445  12 
2015-10-15 17:30:02.116 405 5 51551 445  12 
2015-10-15 17:30:20.235 405 5 51551 445  12 
2015-10-15 17:31:02.206 405 5 51551 445  12 
2015-10-15 17:31:34.817 405 5 51551 445  12 
2015-10-15 17:32:08.350 405 5 51551 445  12 
2015-10-15 17:32:33.349 405 5 51551 445  12 
2015-10-15 17:33:19.490 405 5 51551 445  12 
2015-10-15 17:34:01.384 405 5 51551 445  12 
2015-10-15 17:34:35.664 405 5 51551 445  12 
2015-10-15 17:34:49.618 405 5 51551 445  12 
2015-10-15 17:35:24.392 405 5 51551 445  12 
2015-10-15 17:35:49.674 405 5 51551 445  12 

任何帮助表示赞赏!

+2

你可以试试'df.resample('5min')'这会重新取样你的df到5min块,默认情况下它应该保留值 – EdChum

回答

1

这取决于您的数据,但最简单的方法是首先解决数据的差距问题。例如,您可以使用interpolation从您的时间序列中获取等距的数据点。之后,使用.split()方法可以很容易地将数据分成5分钟的块。