1.merge()函数
#若未指定在哪一列上进行连接,则自动将重叠列名作为连接的键,指定键,用on=‘‘ # print(pd.merge(df1,df2,on=‘key‘))#innerjoin,交集 # print(pd.merge(df1,df2,how=‘outer‘))#联合了左连接和右连接的效果,是并集 # print(pd.merge(df1,df2,how=‘left‘))#相当于left join,若左边值唯一,右边值是两个,则会显示两个重复的值 #若列名不同,则可分别指定列名 # df3=pd.DataFrame({‘lkey‘:[‘b‘,‘b‘,‘a‘,‘c‘,‘a‘,‘a‘,‘b‘],‘data1‘:range(7)}) # df4=pd.DataFrame({‘rkey‘:[‘a‘,‘b‘,‘d‘],‘data2‘:range(3)}) # print(pd.merge(df3,df4,left_on=‘lkey‘,right_on=‘rkey‘)) df1=pd.DataFrame({‘key1‘:[‘b‘,‘b‘,‘a‘,‘c‘,‘a‘,‘b‘],‘data1‘:range(6)}) df2=pd.DataFrame({‘key2‘:[‘a‘,‘b‘,‘a‘,‘b‘,‘d‘],‘data2‘:range(5)}) #merge()函数进行多对多连接,结果为行的笛卡尔积,列如左边的df1有三个b,右边的df2有两个b,则昨连接后有6个b。 print(pd.merge(df1,df2,left_on=‘key1‘,right_on=‘key2‘,how=‘left‘)) #使用多个键进行合并时,传入一个列名的列表 on=[‘key1‘,‘key2‘] left=pd.DataFrame({‘key1‘:[‘foo‘,‘foo‘,‘bar‘],‘key2‘:[‘one‘,‘one‘,‘two‘],‘lval‘:[1,2,3]}) right=pd.DataFrame({‘key1‘:[‘foo‘,‘foo‘,‘bar‘,‘bar‘],‘key2‘:[‘one‘,‘one‘,‘one‘,‘two‘],‘rval‘:[4,5,6,7]}) print(pd.merge(left,right,on=[‘key1‘,‘key2‘],how=‘outer‘)) #连接合并后处理重叠列名,使用merge函数的suffixes参数 print(pd.merge(left,right,on=‘key1‘,suffixes=(‘_a‘,‘_b‘)))
原文:https://www.cnblogs.com/lianghaiming/p/13987006.html