首页 > 解决方案 > 比较两个数据帧并找到最大差异

问题描述

我有两个数据框 df1 和 df2。两者的索引相同,[i_batch, i_example] 列是不同的 rmse 错误。我想找到[i_batch, i_example] df1 比df2 低很多,或者根据常见的[i_batch, i_example] 找到df1 比df2 错误少的行。请注意,特定的 [i_batch, i_example] 可能仅发生在 df1 或 df2 之一中。但我只需要考虑 df1 和 df2 中都存在的 [i_batch, i_example]。

df1 = 

                   rmse_ACCELERATION  rmse_CENTER_X  rmse_CENTER_Y  rmse_HEADING  rmse_LENGTH  rmse_TURN_RATE  rmse_VELOCITY  rmse_WIDTH
i_batch i_example                                                                                                                       
0       0.0                    1.064          1.018          0.995         0.991        1.190           0.967          1.029       1.532
1       0.0                    1.199          1.030          1.007         1.048        1.278           0.967          1.156       1.468
        1.0                    1.101          1.026          1.114         2.762        0.967           0.967          1.083       1.186
2       0.0                    1.681          1.113          1.090         1.001        1.670           0.967          1.205       1.160
        1.0                    1.637          1.122          1.183         0.987        1.521           0.967          1.191       1.278
        2.0                    1.252          1.035          1.035         2.507        1.108           0.967          1.210       1.595
3       0.0                    1.232          1.014          1.019         1.627        1.143           0.967          1.080       1.583
        1.0                    1.195          1.028          1.019         1.151        1.097           0.967          1.071       1.549
        2.0                    1.233          1.010          1.004         1.616        1.135           0.967          1.082       1.573
        3.0                    1.179          1.017          1.014         1.368        1.132           0.967          1.099       1.518

df2 =
                   rmse_ACCELERATION  rmse_CENTER_X  rmse_CENTER_Y  rmse_HEADING  rmse_LENGTH  rmse_TURN_RATE  rmse_VELOCITY  rmse_WIDTH
i_batch i_example                                                                                                                       
1       0.0                    0.071          0.034          0.048         0.114        0.006       1.309e-03          0.461       0.004
        1.0                    0.052          0.055          0.062         2.137        0.023       8.232e-04          0.357       0.011
2       0.0                    1.665          0.156          0.178         0.112        0.070       3.751e-03          2.326       0.016
        1.0                    0.880          0.210          0.088         0.055        0.202       1.449e-03          0.899       0.047
        2.0                    0.199          0.072          0.078         1.686        0.010       6.240e-04          0.239       0.008
3       0.0                    0.332          0.068          0.097         1.211        0.022       5.127e-04          0.167       0.016
        1.0                    0.252          0.075          0.070         0.368        0.013       5.295e-04          0.136       0.008
        2.0                    0.268          0.067          0.064         1.026        0.010       5.564e-04          0.175       0.010
        3.0                    0.171          0.051          0.054         0.473        0.011       4.150e-04          0.220       0.009
5       0.0                    0.014          0.099          0.119         0.389        0.123       3.846e-04          0.313       0.037

例如,我怎样才能得到[i_batch, i_example]'df1[rmse_ACCELERATION] < df1[rmse_ACCELERATION]'?

标签: pandasdataframecomparison

解决方案


做一个merge然后根据您的需要进行过滤

df_merge = df_1.merge(df_2,
                       left_index=True,
                       right_index=True,
                       suffixes=('_1','_2'))
df_merge[
    df_merge['rmse_ACCELERATION_1'] < df_merge['rmse_ACCELERATION_2']
].index

[i_batch, i_example]但是,我在通过条件的两个数据框中都没有看到任何相同的记录


推荐阅读