我想传递向量列以应用于pandas数据帧,以下是一个简化:
def mae(y_true, y_pred):
return (y_true - y_pred).abs().mean()
df = pd.DataFrame({"y_true": [1.1, 2, 3], "y_pred": [2, 2.5, 3]})
df[df.y_true > 1.5].apply(lambda x: mae(x.y_true, x.y_pred), axis=1)
它给出了一个包含或不包含axis=1
的错误。
我想避免走漫长的路
df_filtered = df[df.y_true > 1.5]
mae(df_filtered.y_true.values, df_filtered.y_pred.values)
这可能很简单,但我做了一些研究,不知道怎么做。返回的值应为0.25
您希望避免在这些简单的计算中使用
apply
,因为它只是python级别for
的语法糖。只需将您的数据帧索引到df.y_true > 1.5
,并将mae
计算为:我找到了我想要的代码。使用管道解决了重新分配的问题:
相关问题 更多 >
编程相关推荐