重新插入一个 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
我有两个具有相同列名的数据框,['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