2016-10-06 294 views
1

我有成千上萬行的期待像這樣的數據幀:大熊貓 - 在時間桶分組行

time    type  value 
0 09:30:01.405735  EVENT_0  2.1 
0 09:30:01.405761  EVENT_0  2.1 
0 09:30:01.419743  EVENT_0  1.1 
1 09:30:02.419769  EVENT_0  32.1 
2 09:30:02.419775  EVENT_0  2.15 
3 09:30:02.419775  EVENT_0  24.1 
4 09:30:06.419775  EVENT_0  3.1 
5 09:30:06.419793  EVENT_0  1.1 
6 09:30:06.419793  EVENT_0  2.4 
....  

我們定義了一個「窗口」,爲不超過1分離事件的連續列表第二(即1秒以上的連續兩個事件之間的間隙創建一個新的窗口)

在這裏,我們將有3個窗口:

time    type  value 
0 09:30:01.405735  EVENT_0  2.1 
0 09:30:01.405761  EVENT_0  2.1 
0 09:30:01.419743  EVENT_0  1.1 

=========== =========================

1 09:30:02.419769  EVENT_0  32.1 
2 09:30:02.419775  EVENT_0  2.15 
3 09:30:02.419775  EVENT_0  24.1 

====================================

4 09:30:06.419775  EVENT_0  3.1 
5 09:30:06.419793  EVENT_0  1.1 
6 09:30:06.419793  EVENT_0  2.4 
....  

我試圖找到一種方法來計算每個窗口的「值」列的平均值,但無法在熊貓中找到正確的方法。

+0

你設法創建Windows?你如何在同一窗口中定義兩個元素?不超過1秒**或**屬於同一秒? – MMF

+0

@MMF:不,我沒有,其實這是主要問題,如何使用熊貓創建這些窗口 – quantdev

+0

那麼,如何在同一個窗口中定義兩個元素?不超過1秒或屬於同一秒? – MMF

回答

3

假設你的時間欄是日期時間格式和數據幀進行排序,根據時間列:

# calculate the windows, gives a unique number per entry associating it to its respective window 
windows = (data.time.diff().apply(lambda x: x.total_seconds()) >= 1).astype(int).cumsum() 
# group by these windows and compute the value mean 
data.groupby(windows).value.mean() 
+0

這是對此處介紹的方法的修改:https://stackoverflow.com/questions/14358567/finding-consecutive-segments-in-a-pandas-data-frame – languitar