Pandas入门之十五:合并连接

已信任
Jupyter 服务器: 本地
Python 3: Not Started
[1]



import pandas as pd
import numpy as np



[6]




yuwen = pd.DataFrame({
    'id':[1,2,3,4,5],
    'name':['小明','小敏','小红','小黑','小王'],
    'yuwenScore':[99,77,45,87,66]
})
yuwen
id    name    yuwenScore
0    1    小明    99
1    2    小敏    77
2    3    小红    45
3    4    小黑    87
4    5    小王    66
[7]



shuxue = pd.DataFrame({
    'id':[1,2,3,4,5],
    'name':['小明','小敏','小红','小黑','小王'],
    'shuxueScore':[79,56,88,92,68]
})
shuxue
id    name    shuxueScore
0    1    小明    79
1    2    小敏    56
2    3    小红    88
3    4    小黑    92
4    5    小王    68
[8]



pd.merge(yuwen,shuxue,on='id')# 通过id合并
id    name_x    yuwenScore    name_y    shuxueScore
0    1    小明    99    小明    79
1    2    小敏    77    小敏    56
2    3    小红    45    小红    88
3    4    小黑    87    小黑    92
4    5    小王    66    小王    68
[9]



pd.merge(yuwen,shuxue,on=['id','name'])
id    name    yuwenScore    shuxueScore
0    1    小明    99    79
1    2    小敏    77    56
2    3    小红    45    88
3    4    小黑    87    92
4    5    小王    66    68
[10]



# 新数据
shuxue = pd.DataFrame({
    'id':[1,2,3,4,5,6],
    'name':['小明','小敏','小红','小黑','小王','老李'],
    'shuxueScore':[79,56,88,92,68,88]
})
shuxue
id    name    shuxueScore
0    1    小明    79
1    2    小敏    56
2    3    小红    88
3    4    小黑    92
4    5    小王    68
5    6    老李    88
[11]



pd.merge(yuwen,shuxue,on='id')# 通过id合并,取的是交集,相同的合并
id    name_x    yuwenScore    name_y    shuxueScore
0    1    小明    99    小明    79
1    2    小敏    77    小敏    56
2    3    小红    45    小红    88
3    4    小黑    87    小黑    92
4    5    小王    66    小王    68
[12]



pd.merge(yuwen,shuxue,on=['id','name'], how='inner')# 默认按照inner合并,合并交集
id    name    yuwenScore    shuxueScore
0    1    小明    99    79
1    2    小敏    77    56
2    3    小红    45    88
3    4    小黑    87    92
4    5    小王    66    68
[13]



# how设置合并的方式,inner:键的交集;left左边的;right右边的;outer使用联合

pd.merge(yuwen,shuxue,on=['id','name'], how='right')# 按照右边的表shuxue合并
id    name    yuwenScore    shuxueScore
0    1    小明    99.0    79
1    2    小敏    77.0    56
2    3    小红    45.0    88
3    4    小黑    87.0    92
4    5    小王    66.0    68
5    6    老李    NaN    88
[14]



yuwen = pd.DataFrame({
    'id':[1,2,3,4,5,6],
    'name':['小明','小敏','小红','小黑','小王','老陈'],
    'yuwenScore':[99,77,45,87,66,99]
})
yuwen
id    name    yuwenScore
0    1    小明    99
1    2    小敏    77
2    3    小红    45
3    4    小黑    87
4    5    小王    66
5    6    老陈    99
[17]



pd.merge(yuwen,shuxue,on=['id','name'], how='outer')
id    name    yuwenScore    shuxueScore
0    1    小明    99.0    79.0
1    2    小敏    77.0    56.0
2    3    小红    45.0    88.0
3    4    小黑    87.0    92.0
4    5    小王    66.0    68.0
5    6    老陈    99.0    NaN
6    6    老李    NaN    88.0
[-]
原文地址:https://www.cnblogs.com/vvzhang/p/15024249.html