我有2个时间序列数据帧,其中xp表示数据fp的x坐标。 我想为每个固定值的x值对每个日期的xp / fp组合值进行插值。因此,结果输出是一个时间序列数据帧,其日期时间索引与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行)进行处理的最快方法
不胜感激任何指针。
更新 找到了一种做我想做的事情的方法
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)