2012-12-20 30 views
5

是否有可能將時間序列分割爲空白。例如,假設我們有以下幾點:在熊貓的時間空白分裂系列?

rng2011 = pd.date_range('1/1/2011', periods=72, freq='H') 
rng2012 = pd.date_range('1/1/2012', periods=72, freq='H') 
Y = rng2011.union(rng2012) 

是否有可能尋找一個一年或一年以上的差距,並在其上拆分數據幀?

我想這會去是這樣的:

Y.groupby(Y.map(lambda x: x.year)) 

除了這個分裂的一年日期,我感興趣的指定時間間隔差距,而不是該行的一年屬性。

該應用程序是我從gps旅行日誌,但沒有描述一次旅行結束和另一次開始。我想分裂10分鐘或更長時間的差距。

回答

10

假設Y是你的數據幀一列,一個方法是使用diffcumsum

df = DataFrame(Y) 
df[1] = df[0].diff() > 600000000000.0 #nanoseconds in ten minutes 
df[1] = df[1].apply(lambda x: 1 if x else 0).cumsum() 
df.groupby(1) 

注:如果您使用在72小時內的納秒數它會分成兩組。

+0

謝謝,這很好用!你也可以用Y作爲索引嗎? – Maus

+0

在0.10.0上做這個工作嗎?列1包含我的系統上的範圍0..143。 – Garrett

+0

@crewbum這是因爲數據集是按小時分隔的(所以它們都分開......)! –