Pandas Повышение частоты дискретизации и интерполяция по группам с помощью сплайн-метода - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть сгруппированные временные ряды из данных измерений, которые выглядят следующим образом.

time value1 value2 value3 run_id<br> 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,01 с до 0,001 с использованием следующего кода .

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 () здесь?

...