Pandas:将函数应用于dataframe列

时间:2017-09-01 21:26:48

标签: python pandas

我有数据框

weight       height
  56           167
  88           179
  42           159
  51           162
  90           170

我尝试应用一些功能

def min_error(w0, w1, height, weight):
    return np.sum(np.power((height - (w0 + w1*weight))), 2)

(data.apply(lambda row: min_error(60, 0.05, row['Height'], row['Weight']), axis=1))

但它返回

  

ValueError :('参数数量无效',u'发生在索引1')

我该如何解决?

3 个答案:

答案 0 :(得分:1)

问题是您致电np.power。你的括号在错误的地方。尝试:

def min_error(w0, w1, height, weight):
    return np.sum(np.power((height - (w0 + w1*weight)), 2))

问题不在于Pandas,但它是在Pandas索引中识别出来的,所以它似乎是data.apply的错误,但事实并非如此。

答案 1 :(得分:0)

您的数学公式不正确。这里发生的是np.power期望两个参数,但只接收1.检查括号。

我认为这是你想要的公式:

def min_error(w0, w1, height, weight):
    return np.sum(np.power((height - (w0 + w1*weight)),2))

(data.apply(lambda row: min_error(60, 0.05, row['height'], row['weight']), axis=1))

输出:

0    10857.6400
1    13133.1600
2     9389.6100
3     9890.3025
4    11130.2500
dtype: float64

答案 2 :(得分:0)

也许这对你也有帮助。

df['min_error']=min_error(60, 0.05, df['height'], df['weight'])