重新插入一个 DataFrame,使其与另一个(非常相关的)DataFrame 对齐

Re-interpolate a DataFrame so that it aligns with another (very related) DataFrame

我有两个具有相同列名的数据框,['x', 'y']。 None 的数据代表时间。这两个数据帧具有相同的行数。他们的 'x' 列总是稍微错位。

Dataframe A,我认为是 "golden"(或者理论上的,如果你愿意的话)数据集,具有以下条目:

x: [0, 1, 2]
y: [0, 1, 2]

Dataframe B,可能是我从电子工作台收集的一些数据,具有以下条目:

x: [0, 1.03, 1.98]
y: [0, 1.05, 2.03]

我想要做的是重新对齐 Dataframe B,使其代表与 Dataframe A 相同的 x 点的数据。为了说明,我想转换 Dataframe B,使其看起来像这样:

x: [0, 1,    2]
y: [0, 1.02, 2.05]

我如何获得 y 的值?一张图最能说明我曾经做过的相似三角形:

pandas 是否有内置函数来执行此操作?有图书馆可以帮助我做到这一点吗? (否则我将不得不从头开始写这个)

更新 1

看起来scipy.interpolate.interp1d可以优雅地解决这个问题。

我能想到的最接近 pandas 的是 reindex().interpolate()。玩 interpolate()method 选项我想这可能是你想要的:

new_x = sorted(pd.concat((df1.x,df2.x)).unique())
df2.set_index('x').reindex(new_x).interpolate(method='krogh')

输出:

             y
x             
0.00  0.000000
1.00  1.019233
1.03  1.050000
1.98  2.030000
2.00  2.050751