如何基于具有函数

时间:2016-07-09 16:28:50

标签: python function pandas vectorization

这个问题正在追问我的问题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函数,输入为on95on102.5

我试过这样:

df['new'] = inter(df['on95'],df['on102.5'])

但是这导致了NaN的。

我也尝试使用apply(inter),但没有找到方法让它在没有错误消息的情况下工作。

任何提示我如何解决这个问题?

1 个答案:

答案 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}}