我有两个行列数相同的数据框。我想要根据这两个数据框创建一个第三个数据框,使其与另外两个数据框具有相同的维度。第三个数据框中的每个单元格应该是对于df1和df2中相应单元格值应用函数所得的结果。
例如,如果我有:
df1 = | 1 | 2 |
| 3 | 4 |
df2 = | 5 | 6 |
| 7 | 8 |
那么 df3 应该是这样的
df3 = | func(1, 5) | func(2, 6) |
| func(3, 7) | func(4, 8) |
我有一种方法可以做到这一点,但我认为它不是非常Pythonic,也不适用于大型数据框,我想知道是否有一种有效的方法来做这样的事情?
我希望应用的函数是:
def smape3(y, yhat, axis=0):
all_zeros = not (np.any(y) and np.any(yhat))
if all_zeros:
return 0.0
return np.sum(np.abs(yhat - y), axis) / np.sum(np.abs(yhat + y), axis)
它可以用于生成单个标量值或值数组。在我的使用案例中,函数的输入将是两个标量值。所以smape(1, 5) = 0.66。
smape(1, 5)
的目的是什么?为什么它在接受两个整数时还有一个轴参数? - timgeb