如何使用公共列合并两个数据帧?

时间:2017-02-22 18:12:11

标签: python pandas dataframe

我有两个数据帧,即high_scores1和high_scores2,如下所示:

match_id    inn1    batting_team    bowling_team    runs1
1              1    KKR                 RCB         222
2              1    CSK                 KXIP        240
3              1    RR                  DD          129
4              1    MI                  RCB         165


match_id    inn2    batting_team    bowling_team    runs2
    1         2     RCB              KKR            82
    2         2     KXIP             CSK            207
    3         2     DD               RR             132
    4         2     RCB              MI             166

现在我需要使用列match_id合并这两个,以便新数据框看起来像这样:

match_id  inn   batting_team    bowling_team    runs1   inn2  runs2
1          1    KKR                 RCB         222     2     82
2          1    CSK                 KXIP        240     2     207
3          1    RR                  DD          129     2     132
4          1    MI                  RCB         165     2     166

我尝试了以下代码:

high_scores1[['match_id','inn1','batting_team','bowling_team','runs1']].merge(high_scores2, left_on = 'match_id', right_on = 'match_id', how = 'left')

但它没有用。我如何合并数据框?

2 个答案:

答案 0 :(得分:2)

你需要

scores = high_scores1.merge(high_scores2[['match_id', 'inn2', 'runs2']], on = 'match_id')

答案 1 :(得分:2)

只需使用

合并第二个DataFrame列的子集
high_scores1.merge(high_scores2[['match_id','inn2', 'runs2']], on='match_id')

<强>演示

>>> high_scores1.merge(high_scores2[['match_id','inn2', 'runs2']], on='match_id')
  batting_team bowling_team  inn1  match_id  runs1  inn2  runs2
0          KKR          RCB     1         1    222     2     82
1          CSK         KXIP     1         2    240     2    207
2           RR           DD     1         3    129     2    132
3           MI          RCB     1         4    165     2    166