我有一个多元时间序列数组。目前,该时间序列以10秒为间隔进行汇总:
**Time**
2016-01-11 17:00:00
2016-01-11 17:00:10
2016-01-11 17:00:20
我想进行重新采样,以便每天获得5个小时的时间范围(时间在数据框中的显示方式无关紧要,只要正确地汇总时间就可以了)。我正在按平均值重新采样。
**Time**
2016-01-11 10:00:00-15:00:00
2016-01-12 10:00:00-15:00:00
2016-01-13 10:00:00-15:00:00
这怎么办?
答案 0 :(得分:2)
首先,我要过滤所需的时间段并按天分组:
# mask the hours we want
hours = df.index.hour
mask = (hours >= 10) & (hours <=14)
# groupby
df[mask].groupby(df[mask].index.floor('D')).mean()
玩具数据:
Times = pd.date_range('2016-01-11', '2016-01-14', freq='10s')
np.random.seed(1)
df = pd.DataFrame({'Time': Times,
'Value': np.random.randint(1,10, len(Times))})
给予:
Value
Time
2016-01-11 4.993333
2016-01-12 5.030556
2016-01-13 5.012778
答案 1 :(得分:0)
df.groupby([df['Time'].dt.month, df['Time'].dt.day]).apply(lambda x: x.set_index('Time').resample('5H').mean())
您必须先按时间列的月和日分组,然后在5H(5小时)内对“时间”列进行重新采样,然后再进行.mean()
,这将取其他列的平均值
使用groupby的原因是,您不想每天整天只间隔5个小时,而只想每天一次。只要您的时间在5小时以内,您每天只会获得一个间隔。