每小时重新采样一次时间序列数据

时间:2016-12-13 18:05:23

标签: python pandas resampling

我有一个为期一年的数据集,其中包含每15分钟采样一次的日期和温度,并且Python中的数据偶尔存在差距。我已将日期和温度保存到pandas中的数据框中:

int 21h,9

我想将数据重新采样到每小时,并尝试使用此行:

2015-08-21 09:35:47  27.928
2015-08-21 09:55:47  28.839
2015-08-21 10:15:47  28.495
...
2016-08-10 05:39:24  11.246
2016-08-10 05:59:24  11.912
2016-08-10 06:19:24  13.066

我也试过使用第一个和最后一个'如何',但仍然没有得到我想要的东西。我的结果看起来像:

 newDat=data.resample(rule='H')

我不希望实际的温度或时间值发生变化。我希望命令在一天中的每个小时内第一次抓住,所以我得到类似的东西:

2015-08-21 09:00:00  28.383500
2015-08-21 10:00:00  27.959667
2015-08-21 11:00:00  29.513333
...
2016-08-10 06:00:00  14.235667
2016-08-10 07:00:00  20.867333
2016-08-10 08:00:00  26.725000

1 个答案:

答案 0 :(得分:4)

SET value1 = SPLIT_STR(returnedVAlue, '|', 1); SET value2 = SPLIT_STR(returnedVAlue, '|', 2); 方法可以接受一系列值作为组键。 预期序列的长度与DataFrame中的行数相同,并且序列中与等值项相对应的行被分组。

因此,您可以将截断到最接近的小时的日期用作组密钥:

DataFrame.groupby
In [133]: groupkey = data['date'].values.astype('datetime64[h]'); groupkey
Out[133]: 
array(['2015-08-21T09', '2015-08-21T09', '2015-08-21T10', '2016-08-10T05',
       '2016-08-10T05', '2016-08-10T06'], dtype='datetime64[h]')

产量

import pandas as pd
Timestamp = pd.Timestamp
data = pd.DataFrame({'date': [Timestamp('2015-08-21 09:35:47'), Timestamp('2015-08-21 09:55:47'), Timestamp('2015-08-21 10:15:47'), Timestamp('2016-08-10 05:39:24'), Timestamp('2016-08-10 05:59:24'), Timestamp('2016-08-10 06:19:24')], 'temp': [27.928000000000001, 28.839000000000002, 28.495000000000001, 11.245999999999999, 11.912000000000001, 13.065999999999999]}) 

groupkey = data['date'].values.astype('datetime64[h]')
result = data.groupby(groupkey).first().set_index('date')
print(result)