这个问题正在追问我的问题linear interpolation between two data points
我从中构建了以下功能:
def inter(colA, colB):
s = pd.Series([colA, np.nan, colB], index= [95, 100, 102.5])
s = s.interpolate(method='index')
return s.iloc[1]
现在我有一个如下所示的数据框:
on95 on102.5 on105
Index
1 5 17 20
2 7 15 25
3 6 16 23
我想创建一个新列df['new']
,该列使用inter
函数,输入为on95
和on102.5
我试过这样:
df['new'] = inter(df['on95'],df['on102.5'])
但是这导致了NaN的。
我也尝试使用apply(inter)
,但没有找到方法让它在没有错误消息的情况下工作。
任何提示我如何解决这个问题?
答案 0 :(得分:2)
您需要使用inter = np.vectorize(inter)
df['new'] = inter(df['on95'],df['on102.5'])
df
on95 on102.5 on105 new
#Index
# 1 5 17 20 13.000000
# 2 7 15 25 12.333333
# 3 6 16 23 12.666667
对自定义函数进行矢量化,因为函数参数被接受为pandas系列:
{{1}}