我从测量数据中得到了一个分组的时间序列,如下所示。
time value1 value2 value3
run_id
19 00:00:00 14.45 1000.0 5.800000
19 00:00:00.010000 14.45 1000.0 5.591578
19 00:00:00.020000 14.45 1000.0 5.878844
19 00:00:00.030000 14.45 1000.0 5.974964
19 00:00:00.040000 14.45 1000.0 5.643659
... ... ... ... ...
20 00:00:00.647290 17.46 1500.0 5.695907
我现在想使用以下代码将采样率从0.01s增加到0.001s。
for name, group in data.groupby('run_id'):
temp = group.reset_index().set_index('time').resample('0.001S').interpolate(method='spline', order=2)
这将在以下异常中结束。
numpy.core._exceptions.UFuncTypeError: Cannot cast ufunc 'greater' input 1 from dtype('float64') to dtype('<m8[ns]') with casting rule 'same_kind'
选择这样的下采样频率。
temp = group.reset_index().set_index('time').resample('0.02S').interpolate(method='spline', order=2)
它似乎正在工作。如果将插值方法更改为线性,则向上采样有效。
temp = group.reset_index().set_index('time').resample('0.02S').interpolate(method='linear')
我在这里做错了什么?
我还尝试了一种将重采样直接应用于groupby对象的方法。
data.reset_index().set_index('time').groupby('run_id').resample('0.001S').interpolate(method='linear')
这有意义吗?还是我需要在这里套用apply()方法?