用一定范围的数据帧行计算MSE,RMSE,直到数据帧结束

Calculating MSE, RMSE with a certain range of data frame rows until the end of the data frame

我有一个数据框 df,它有两列 TruePrediction,而数据框有 1000 行。我想使用 sklearn mean_squared_error(y_test, y_pred) 中的函数计算 MSE 和 RMSE。但我想继续以这样的模式计算它们,即第一个 MSE 将在 Trueprediction 列值的前 20 行上计算。然后下一个 MSE 将位于 TruePrediction 列的 21-40 行值上。因此,我想计算一堆 MSE 和 RMSE,从总共 1000 行中连续取每 20 行并将它们排列在一个数据框中。我无法为此找到循环条件。我试过 for i in range(0,len(df),20) 但它不起作用。我该如何解决这个问题? 比如数据框是

>df
    True  Prediction
0     5      5
1     6      4
2     7      2
3     2      3
..
1000  1      3

输出将是这样的数据框

   MSE   RMSE
0  1.5   2.5
1   1    0.5
2   1    1.2
...
50  2    3.7

由于每个MSE和RMSE将基于20行True和Prediction值,因此MSE和RMSE的新数据框将只有50行

这应该适用于 MSE:

mse = df.groupby(lambda i: int(i / 20)).agg({'True': lambda x: list(x), 'Prediction': lambda x: list(x)})
mse = mse.apply(lambda r: mean_squared_error(r['True'], r['Prediction']), axis=1)
mse.head(5)

查看实时实施 here