【发布时间】:2018-04-25 11:02:22
【问题描述】:
我有两个 Pandas DataFrame,其中的数据大多不同:
err_df =
2 3 11 13 14 16
4 122.153000 56.3023 21.2722 71.79590 81.63212 NaN
8 70.967800 19.5768 69.9780 21.11050 116.89777 NaN
12 70.659100 19.5768 NaN 39.46288 70.62480 70.597850
16 19.237067 NaN NaN 18.93980 18.60660 19.104767
20 19.349440 NaN NaN 19.38080 NaN 36.785533
24 NaN NaN NaN 17.92060 NaN NaN
temp_df =
2 3 11 13 14 16
4 89.5488 122.153 121.957 122.153 122.153 NaN
8 89.5488 122.153 121.957 122.153 122.153 NaN
12 89.5488 122.153 NaN 122.153 122.153 122.153
16 89.5488 NaN NaN 122.153 122.153 122.153
20 89.5488 NaN NaN 122.153 NaN 122.153
24 NaN NaN NaN 122.153 NaN NaN
我想计算两个 DataFrame 的列之间的均方根误差 (RMSE),并将结果存储在第三个 DataFrame 中。我知道如何计算单个列的 RMSE,比如说2:
print(((err_df[2] - temp_df[2])**2).mean()**0.5)
result = 48.2427158719
NaN 字符也没有问题 - 它们被忽略,这是一种解脱,因为我认为使用 sklearn 的 mean_square_error 函数会出现此错误 ValueError: Array contains NaN or infinity.
基本上,我希望能够“动态”计算 RMSE 值,而不必在每次运行主程序时更改列。
保存结果的第三个 DataFrame 应该如下所示:
df3 =
2 3 11 13 14 16
0 48.2427158719 "RMSE" "RMSE" "RMSE" "RMSE" "RMSE"
我该如何做到这一点?
任何帮助表示赞赏。在此先感谢:)
(使用 Ubuntu 14.04 32 位 VM 和 Python 2.7)
【问题讨论】: