首页 > 解决方案 > 合并相似组上的两个数据框

问题描述

我有两个包含相似组的数据框,例如:

dataframe1:        
    group  Rank_real              
    1         2
    1         1
    1         3
    2         2
    2         1

dataframe2:        
    group  Rank_predicted
    2         1
    2         2
    1         1
    1         2
    1         3

我想在最终结果如下所示的列组上合并这两个数据框:

Result:
 group     Rank_real     Rank_predicted         
        1         2          1
        1         1          2
        1         3          3
        2         2          1
        2         1          2

我试着用

pd.merge(dataframe1, dataframe2, on='group')

但是,我得到:

Result:
     group     Rank_real     Rank_predicted         
            1         2          1
            1         2          2
            1         2          3
            1         1          1
            1         1          2
            1         1          3
            1         3          1
            1         3          2
            1         3          3
            2         2          1
            2         2          2
            2         1          1
            2         1          2

我怎样才能解决这个问题?

标签: pandasdataframe

解决方案


我们可以groupby添加cumcount额外的merge密钥

out = df1.assign(key=df1.groupby('group').cumcount()).\
         merge(df2.assign(key=df2.groupby('group').cumcount()),on=['group','key'])
Out[68]: 
   group  Rank_real  key  Rank_predicted
0      1          2    0               1
1      1          1    1               2
2      1          3    2               3
3      2          2    0               1
4      2          1    1               2

推荐阅读