如何使用不同的时间戳对 pandas 时间序列进行插值

问题描述 投票:0回答:1

我正在寻找一个功能

pandas_interpolate(df: pd.DataFrame, newTime: pd.DatetimeIndex, method: str = 'linear') -> pd.DataFrame

这将采用具有

DatetimeIndex
索引的现有数据帧,并返回索引由
newTime
给出的新数据帧。对于每一列,应通过插入原始数据帧的值来评估新数据帧的值。从本质上讲,这个函数的行为应该与
numpy.interp
类似。我知道方法
pandas.DataFrame.interpolate
,但是,它会插入现有
NAN
值,并且不接受新索引作为参数。

到目前为止我有2个想法

  1. 追加新索引和数据帧末尾,所有值均为 NAN,然后删除已存在的确切时间戳的重复索引,然后使用 pandas 插值方法,然后仅选择具有新索引的行。
  2. 将数据帧转换为 numpy 数组。循环列,使用 numpy 插值,然后转换回数据帧。

两者肯定都能用,但都很丑。有没有一种预期的方法可以做到这一点?

python pandas dataframe numpy interpolation
1个回答
0
投票

是的,您需要添加索引,然后插值,然后选择所需的索引。

如果使用索引,就没那么丑陋了:

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
© www.soinside.com 2019 - 2024. All rights reserved.