具有非线性时间的时间序列插值



我有下面的pandas表,我想做插值。但是数据点不是线性分离的,所以在Panda中直接使用interpolate()函数时存在问题。

有没有什么方法可以做插值,函数可以处理非线性时间?

时间
2022-08-14 05:55:25 0
2022-08-14 05:56:05
2022-08-14 06:01:12
2022-08-14 06:01:28
2022-08-14 06:01:42
2022-08-14 06:01:52
2022-08-14 06:02:12
2022-08-14 06:06:37
2022-08-14 06:07:20
2022-08-14 06:07:50
2022-08-14 06:08:00
2022-08-14 06:08:17
2022-08-14 06:08:26
2022-08-14 06:09:46
2022-08-14 06:09:50
2022-08-14 06:10:10
2022-08-14 06:13:52
2022-08-14 06:15:22
2022-08-14 06:15:32
2022-08-14 06:15:43
2022-08-14 06:16:03
2022-08-14 06:17:04
2022-08-14 06:17:14
2022-08-14 06:17:24
2022-08-14 06:17:34
2022-08-14 06:17:54
2022-08-14 06:23:16
2022-08-14 06:23:26
2022-08-14 06:23:39
2022-08-14 06:24:09
2022-08-14 06:25:04
2022-08-14 06:25:14
2022-08-14 06:25:40
2022-08-14 06:25:50
2022-08-14 06:26:00 26

如前所述,我创建了一个线性时间序列数据帧,设置了第一个和最后一个值,运行插值并进行查找。

# Find the start time and the end time
startTime = originaldf.loc[firstIndex]['Time']
endTime = originaldf.loc[lastIndex]['Time']
# Create linear time series dataframe for interpolation
interpolatedf = pd.DataFrame({
'Time': pd.date_range(start=startTime, end=endTime, freq='S'),
})
interpolatedf.at[interpolatedf.index[0], 'Value'] = 0
interpolatedf.at[interpolatedf.index[-1], 'Value'] = 26
interpolatedf['cloestStopPointInterpolation'].interpolate(inplace=True)
# Do a interpolate value lookup
originaldf= pd.merge(originaldf,interpolatedf,on=['Time'],how='left')

最新更新