我正在尝试转换数据框中的列以获取新列,新列中的每一行都从旧列和查找表进行插值。例如:
原始数据框:
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()
,但无法理解如何在这里使用它们,特别是插值。感谢所有帮助。
答案 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