【问题标题】:Dataframe column interpolation weigthed by values of another column数据框列插值由另一列的值加权
【发布时间】:2021-02-24 22:52:19
【问题描述】:

我有以下数据框:

df = pd.DataFrame(
    {
        "A": [1, 4.5, 4.6, 4.7, 5.6, 6.8],
        "B": [0.25, np.nan, np.nan, 4, 12.2, 14.4],
    }
)
pd
    A   B
0   1.0 0.25
1   4.5 NaN
2   4.6 NaN
3   4.7 4.00
4   5.6 12.20
5   6.8 14.40

我想根据 A 列的值对 B 列的缺失值进行插值。

df["B"][1] = ((df["B"][3]-df["B"][0])/(df["A"][3]-df["A"][0]))*(df["A"][1]-df["A"][0])+df["B"][0] --> 3.797297
df["B"][2] = ((df["B"][3]-df["B"][0])/(df["A"][3]-df["A"][0]))*(df["A"][2]-df["A"][0])+df["B"][0] --> 3.898649

有没有办法使用插值函数来做到这一点?

谢谢。 保罗。

【问题讨论】:

标签: python pandas dataframe interpolation


【解决方案1】:

试试interpolate:

# interpolate with option `method='index'` uses index as scale
# so we set `A` as index first
df['B'] = df.set_index('A')['B'].interpolate('index').values

输出:

     A          B
0  1.0   0.250000
1  4.5   3.797297
2  4.6   3.898649
3  4.7   4.000000
4  5.6  12.200000
5  6.8  14.400000

【讨论】:

    猜你喜欢
    • 2021-05-11
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    相关资源
    最近更新 更多