2017-05-31 49 views
3

我有一個數據幀df具有2分鐘分辨率數據的幾個星期:彙總時間爲定義的插槽

df.dtypes

time_stamp  datetime64[ns] 
Day_name    object 
x      int64 
y     int64 

df.head

time_stamp    Day_name x y 
0 2017-05-17 14:28:35 Wednesday 100 200 
1 2017-05-17 14:30:32 Wednesday 300 400 

我要彙總指標xy,並找到他們的平均'15'minut e時期。我原本有一個時代指標,但我已將其轉換爲上面顯示的datetime

time_stamp    Day_name x y  15_min_slot 
    0 2017-05-17 14:28:35 Wednesday 100 200 14:15 
    1 2017-05-17 14:30:32 Wednesday 300 400 14:30 

我該怎麼做?

我可以通過找到時間:

df['hour'] = df['time_stamp'].dt.hour

df['minute'] = df['time_stamp'].dt.minute

然後我最終會做的是:

output = df.groupby(['15_min_slot'],as_index=False)['x'].mean()

回答

3

您可以使用Grouper,在組合與freq的論點,即:

df.groupby(pd.Grouper(key=df['time_stamp'], freq='15T')).mean() 
+0

快速的問題 - 是有可能做的樣品任何'15'min期,在整個數據集?那麼基本上,一天的平均時間是15分鐘? – LearningSlowly

+0

然後創建一個只有小時和分鐘的新列(即'df ['new_column'] = df ['time_stamp']。hour'或其變體 – Mathias711

1

讓我們使用resample

首先創建一個datetimeindex爲您的數據幀

df = df.set_index('time_stamp') 
df.index = pd.to_datetime(df.index,format='%Y-%m-%d %H:%M:%S') 

然後用resample15Tmean

df.resample('15T').mean() 

輸出:

     x y 
time_stamp     
2017-05-17 14:15:00 100 200 
2017-05-17 14:30:00 300 400