我正在寻找一个功能
pandas_interpolate(df: pd.DataFrame, newTime: pd.DatetimeIndex, method: str = 'linear') -> pd.DataFrame
这将采用具有
DatetimeIndex
索引的现有数据帧,并返回索引由 newTime
给出的新数据帧。对于每一列,应通过插入原始数据帧的值来评估新数据帧的值。从本质上讲,这个函数的行为应该与 numpy.interp
类似。我知道方法 pandas.DataFrame.interpolate
,但是,它会插入现有 NAN
值,并且不接受新索引作为参数。
到目前为止我有2个想法
两者肯定都能用,但都很丑。有没有一种预期的方法可以做到这一点?
是的,您需要添加索引,然后插值,然后选择所需的索引。
如果使用索引,就没那么丑陋了:
df = pd.DataFrame({'value': [1, 2, 3]},
index=pd.DatetimeIndex(['2024-01-01', '2024-01-15', '2024-01-30']))
new_indices = pd.DatetimeIndex(['2024-01-10', '2024-01-16'])
out = df.reindex(df.index.union(new_indices)).interpolate('time').loc[new_indices]
输出:
value
2024-01-10 1.642857
2024-01-16 2.066667