【发布时间】:2017-03-14 21:48:21
【问题描述】:
我有一个简单的时间序列,由日期时间值驱动(即,它定期记录数据点)Series1:
datetime,temp
2015-05-28 17:00:00,24.199
2015-05-28 17:15:00,24.465
2015-05-28 17:30:00,24.392
2015-05-28 17:45:00,25.094
2015-05-28 18:00:00,25.239
etc.
我正在尝试协调由事件驱动的第二个时间序列(表示为二进制值 0 和 1)Series2:
datetime,window
2015-05-28 17:00:00,0.0
2015-05-28 17:55:28,1.0
2015-06-08 07:35:31,0.0
2015-06-08 08:04:30,1.0
2015-06-18 17:11:55,0.0
2015-06-18 18:11:52,1.0
2015-06-19 18:14:09,0.0
etc.
我想协调这两者,即将事件驱动的时间序列表示为每小时(或每小时)的值。
我假设这可能需要为Series2 创建一个与Series1 匹配的日期时间索引,并用[0,1] 范围内的值填充窗口列。这些值将来自某种“时间分级”,其中计算每个间隔中花费的时间百分比(间隔由Series1 中后续行之间的日期时间差定义)。
希望这是有道理的。
我尝试过使用不同方法的重采样,即
series2_hr = series2.resample('H').bfill() 并尝试使用 .mean 和 .last,但这些都没有给我想要的输出。
我也尝试过插值:
series2_hr = series2.resample('H')
series2_hr = series2_hr.interpolate(method='time')
但还是没有运气。
所需的输出是窗口值为 1 的给定时间间隔(例如每小时)的百分比。换句话说,该小时的窗口平均值(从 0 到 1)。
示例:series2
datetime,window
2015-05-28 17:00:00,0.0
2015-05-28 17:55:28,1.0
2015-06-08 07:35:31,0.0
2015-06-08 08:04:30,1.0
2015-06-18 17:11:55,0.0
2015-06-18 18:11:52,1.0
2015-06-19 18:14:09,0.0
etc.
应该转换成series2_reg:
2015-05-28 17:00:00,0.916 (=(17:55 - 17:00)/60)
2015-05-28 18:00:00,1
2015-05-28 19:00:00,1
...
2015-06-08 07:00:00,0.583 (=(07:35 - 07:00)/60))
2015-06-08 08:00:00,0.06 (=(08:04 - 08:00)/60))
2015-06-08 09:00:00,1
2015-06-08 10:00:00,1
...
【问题讨论】:
-
期望的输出是什么?
标签: pandas time-series interpolation timedelta binning