2017-02-22 29 views
3

У меня есть два dataframes именно 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 таким образом, что новый dataframe выглядит примерно так:

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

Просто объединить на подмножества второго столбцов DataFrame с

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

Demo

>>> 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 
+0

его worked..thnx – user517696

2

Вам нужно

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