用python进行表格的连接
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')))


2.concat函数()
#pd.concat()函数,实现列表的堆叠,默认沿着列进行拼接,若传入axis=1,则沿着行进行拼接 # s1=pd.Series([0,1],index=['a','b']) # s2=pd.Series([2,3,4],index=['c','d','e']) # s3=pd.Series([5,6],index=['f','g']) # print(pd.concat([s1,s2,s3],axis=1))#相当于s1,s2,s3的outer join # s4=pd.concat([s1,s3]) # #横向拼接 # print(pd.concat([s1,s4],axis=1)) # #取横向拼接后的交集 # print(pd.concat([s1,s4],axis=1,join='inner')) # #为了区分连接后的对象,可以使用keys参数来进行 # result=pd.concat([s1,s2,s3],keys=['one','two','three']) # print(result.unstack().stack()) #将concat()函数应用到dataframe上 # df1=pd.DataFrame(np.arange(6).reshape(3,2),index=['a','b','c'],columns=['one','two']) # df2=pd.DataFrame(5+np.arange(4).reshape(2,2),index=['a','c'],columns=['three','four']) # print(pd.concat([df1,df2],axis=1,keys=['level1','level2'])) # print(df1) # print(df2) #粗暴拼接,不按照索引进行拼接,按照先后谁许进行拼接 df1=pd.DataFrame(np.random.randn(3,4),columns=['a','b','c','d']) df2=pd.DataFrame(np.random.rand(2,3),columns=['b','d','a']) print(df1) print(df2) print(pd.concat([df1,df2],ignore_index=True)) print(pd.concat([df1,df2],axis=1))



浙公网安备 33010602011771号