【问题标题】:Pandas DataFrame: Storing Root Mean Square Error data [duplicate]Pandas DataFrame:存储均方根误差数据
【发布时间】: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 字符也没有问题 - 它们被忽略,这是一种解脱,因为我认为使用 sklearnmean_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)

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:
    ((err_df-temp_df)**2).mean(0)**0.5
    Out[318]: 
    2     48.242716
    3     91.978382
    11    80.122548
    13    92.792388
    14    61.332234
    16    82.793873
    dtype: float64
    

    【讨论】:

    • 谢谢。我没有意识到这是删除[2] 的简单案例。以及如何定位视图以使其看起来像我的问题中显示的所需输出?显然在pd.DataFrame() 中没有orient='index' 关键字,就像在pd.DataFrame.from_dict() 中一样
    • @user136819 最后可以加to_frame().T
    猜你喜欢
    • 2016-02-01
    • 2020-03-29
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2018-02-22
    相关资源
    最近更新 更多