与熊猫
我有一个DataFrame
形式的时间序列的分档的时间序列,我可以groupby
到它只有两列Time
和Value
一系列与熊猫
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秒并用多于一个观测值平均这些箱。
在最后一步,我需要插入这些值,但我确定有些东西可以使用。
但是,我只是无法弄清楚如何对这些值进行分箱和平均。 Time
是datetime.datetime
对象,而不是str
。
我试过不同的东西,但没有任何作品。例外飞来飞去。
有人在那里谁得到了这个?
IIUC,你可以使用TimeGrouper
与groupby
沿指数水平计算平均值为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
这是否提供了不同的结果,更直接的'resample'方法? http://pandas.pydata.org/pandas-docs/stable/timeseries.html#resampling –
我刚试过。它给出了与前一个相同的结果。 –
太棒了!感谢你们(@PaulH) – displayname
http://pandas.pydata.org/pandas-docs/stable/timeseries.html#resampling –