现有列和查找表中的新插值列

时间:2018-01-25 17:22:14

标签: python pandas numpy dataframe

我正在尝试转换数据框中的列以获取新列,新列中的每一行都从旧列和查找表进行插值。例如:

原始数据框:

Date       StartingValue
2010-01-01            10
2010-01-02            25
2010-01-03            15
2010-01-04            20

查找表数据框:

StartingValue  NewValue
           10       500
           20      1200
           30      2750

期望的结果:

Date       StartingValue  NewValue
2010-01-01            10       500
2010-01-02            25      1975
2010-01-03            15       850
2010-01-04            20      1200

索引将保持不变,并且插值应该在查找表中最近的行之间是线性的。

我看过可能map()apply(),但无法理解如何在这里使用它们,特别是插值。感谢所有帮助。

2 个答案:

答案 0 :(得分:5)

numpy.interp有此功能:

<label class="btn btn-default">
    Import
    <input type="file"
           change="change()" hidden>
</label>

答案 1 :(得分:2)

numpy选项更简洁,但以下是如何使用pandas执行此任务:

vals = lookup['StartingValue']
df.merge(lookup.set_index('StartingValue').reindex( \
  range(vals.min(), vals.max()+1, 5)).interpolate().reset_index(), \
  on='StartingValue')
#          Date  StartingValue  NewValue
# 0  2010-01-01             10     500.0
# 1  2010-01-02             25    1975.0
# 2  2010-01-03             15     850.0
# 3  2010-01-04             20    1200.0