我有下面的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')