2016-08-17 80 views
1

我有一個DataFrame形式的時間序列的分檔的時間序列,我可以groupby到它只有兩列TimeValue一系列與熊貓

pan.groupby(pan.Time).mean() 

Time    Value 
2015-04-24 06:38:49 0.023844 
2015-04-24 06:39:19 0.019075 
2015-04-24 06:43:49 0.023844 
2015-04-24 06:44:18 0.019075 
2015-04-24 06:44:48 0.023844 
2015-04-24 06:45:18 0.019075 
2015-04-24 06:47:48 0.023844 
2015-04-24 06:48:18 0.019075 
2015-04-24 06:50:48 0.023844 
2015-04-24 06:51:18 0.019075 
2015-04-24 06:51:48 0.023844 
2015-04-24 06:52:18 0.019075 
2015-04-24 06:52:48 0.023844 
2015-04-24 06:53:48 0.019075 
2015-04-24 06:55:18 0.023844 
2015-04-24 07:00:47 0.019075 
2015-04-24 07:01:17 0.023844 
2015-04-24 07:01:47 0.019075 

我想要做的是弄清楚如何將這些值分類爲例如30秒並用多於一個觀測值平均這些箱。

在最後一步,我需要插入這些值,但我確定有些東西可以使用。

但是,我只是無法弄清楚如何對這些值進行分箱和平均。 Timedatetime.datetime對象,而不是str

我試過不同的東西,但沒有任何作品。例外飛來飛去。

有人在那裏誰得到了這個?

+1

http://pandas.pydata.org/pandas-docs/stable/timeseries.html#resampling –

回答

1

IIUC,你可以使用TimeGroupergroupby沿指數水平計算平均值爲Value列如下所示:

df.set_index('Time', inplace=True) 
# Taking mean values for a frequency of 2 minutes 
df_group = df.groupby(pd.TimeGrouper(level='Time', freq='2T'))['Value'].agg('mean') 
df_group.dropna(inplace=True) 
df_group = df_group.to_frame().reset_index() 
print(df_group) 

       Time  Value 
0 2015-04-24 06:38:00 0.021459 
1 2015-04-24 06:42:00 0.023844 
2 2015-04-24 06:44:00 0.020665 
3 2015-04-24 06:46:00 0.023844 
4 2015-04-24 06:48:00 0.019075 
5 2015-04-24 06:50:00 0.022254 
6 2015-04-24 06:52:00 0.020665 
7 2015-04-24 06:54:00 0.023844 
8 2015-04-24 07:00:00 0.020665 

你也可以使用resample由@保羅^ h指出,這是相當簡潔的這種情況。

print(df.set_index('Time').resample('2T').mean().dropna().reset_index()) 

       Time  Value 
0 2015-04-24 06:38:00 0.021459 
1 2015-04-24 06:42:00 0.023844 
2 2015-04-24 06:44:00 0.020665 
3 2015-04-24 06:46:00 0.023844 
4 2015-04-24 06:48:00 0.019075 
5 2015-04-24 06:50:00 0.022254 
6 2015-04-24 06:52:00 0.020665 
7 2015-04-24 06:54:00 0.023844 
8 2015-04-24 07:00:00 0.020665 
+1

這是否提供了不同的結果,更直接的'resample'方法? http://pandas.pydata.org/pandas-docs/stable/timeseries.html#resampling –

+0

我剛試過。它給出了與前一個相同的結果。 –

+0

太棒了!感謝你們(@PaulH) – displayname