У меня есть 2 кадра данных временных рядов, где xp - это координаты x данных fp.
Я хочу интерполировать значения из комбинаций xp / fp на дату для фиксированного набора значений x. Таким образом, в результате получается кадр данных временных рядов с тем же индексом даты и времени, что и для xp и fp и без столбцов = нет элементов в x
Я пытался использовать numpy.interp (), но в итоге получился ValueError: объект слишком глубокий для нужного массива
import pandas as pd
import numpy as np
fp = pd.DataFrame(
data=np.random.randint(0,100,size=(10, 4)),
index=pd.date_range("20180101", periods=10),
columns=list('ABCD'),
)
xp = pd.DataFrame(
data=np.column_stack([
list(range(1,11)),
list(range(70,80)),
list(range(150,160)),
list(range(220,230))
]),
index=pd.date_range("20180101", periods=10),
columns=list('ABCD'),
)
x = [60, 120, 180]
x_interp = np.interp(x,xp,fp)
Кажется, что np.interp не может принимать кадры данных в качестве входных данных? но, похоже, это самый быстрый способ сделать это для большого набора данных (из> 3000 строк xp и fp)
Буду признателен за любые указатели.
UPDATE
нашел способ делать то, что я хотел, как показано ниже
x_interp = pd.DataFrame.from_records(fp.index.to_series().apply(lambda z: np.interp(x, xp.loc[(z)], fp.loc[(z)])).values, index = fp.index)