我有一个为期一年的数据集,其中包含每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
答案 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)