pandas merge,join,concat数据之间连接

1.merge,类似数据库的,on可以有2个或者多个条件

# (1)内连接,pd.merge(a1, a2, on='key')
# (2)左连接,pd.merge(a1, a2, on='key', how='left')
# (3)右连接,pd.merge(a1, a2, on='key', how='right')
# (4)外连接, pd.merge(a1, a2, on='key', how='outer')

data1 = pd.DataFrame(np.arange(0,16).reshape(4,4), columns=list('abcd'))
data2 = [[4,1,5,7],[6,5,7,1],[9,9,123,129],[16,16,32,1]]
data2 = pd.DataFrame(data2,columns = ['a','b','c','d'])
pd.merge(data1,data2,on
='b') #内连接 ,也就是交集 pd.merge(data1,data2,on='b',how='left') #左连接 ,没有值的标记为空 pd.merge(data1,data2,on='b',how='right') #右连接 ,没有值的标记为空 pd.merge(data1,data2,on='b',how='outer') #外连接 ,求同存异

 

 

 2.append  类似于union all

#ignore_index = True:这个时候 表示index重新记性排列
data1.append(data2,ignore_index = True)

3.join列名不能重复,类似于在将第二个数据拼接在右边

data2.columns=list('pown')
data1.join(data2)

 4.concat

#pd.concat(objs, axis=0, join='outer', join_axes=None,ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False)
#参数说明:objs:series,dataframe,或者panel构成的序列list,axis:0 行,1列,join:inner,outer

data1.columns = list('abcd')
data2.columns =list('abcd')
data3 = data2
pd.concat([data1,data2,data3],keys=['data1','data2','data3'])

pd.concat([data1,data2,data3],axis = 1,keys = ['data1','data2','data3'])
pd.concat([data1,data2,data3],axis = 1)

 

原文地址:https://www.cnblogs.com/cgmcoding/p/13274960.html