pandas 级联 追加 合并 pd.concat| pd.append| pd.merge

numpy.concatenate((a1,a2,...),axis=0)  数组的拼接,一维数组 与axis值无关,都往横向拼接。多维数组 与axis有关,0是纵向,1是横向

pandas.concat((a,b,c...),axis=0,join='outter',sort=True, ignore_index=True)  

表格行列索引都一致叫做匹配级联

表格维度不一致,叫做不匹配级联。包括行方向布置,列方向不一致。这个时候有两种连接方式,inner (只连接匹配的项)和 outter(默认模式,不一致的补NaN)

df1.append(df1)  追加,在表格后面追加行

pd.merge(df1,df2,on='name') 合并,根据‘name’列 合并两张表格, 分为一对一,一对多,多对多的合并

当两张表没有可进行连接的列时,可使用left_on和right_on手动指定merge中左右两边的哪一列列作为连接的列

pd.merge(df1,df5,how='outer',left_on='employee',right_on='name') 

 

 

 

numpy提供了numpy.concatenate((a1,a2,...), axis=0)函数。能够一次完成多个数组的拼接。其中a1,a2,...是数组类型的参数

>>> a=np.array([1,2,3])
>>> b=np.array([11,22,33])
>>> c=np.array([44,55,66])
>>> np.concatenate((a,b,c),axis=0)  # 默认情况下,axis=0可以不写
array([ 1,  2,  3, 11, 22, 33, 44, 55, 66]) #对于一维数组拼接,axis的值不影响最后的结果

 

>>> a=np.array([[1,2,3],[4,5,6]])
>>> b=np.array([[11,21,31],[7,8,9]])
>>> np.concatenate((a,b),axis=0)
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [11, 21, 31],
       [ 7,  8,  9]])

>>> np.concatenate((a,b),axis=1)  #axis=1表示对应行的数组进行拼接
array([[ 1,  2,  3, 11, 21, 31],
       [ 4,  5,  6,  7,  8,  9]])

 

pandas使用pd.concat函数,与np.concatenate函数类似,只是多了一些参数:

objs
axis=0
keys
join='outer' / 'inner':表示的是级联的方式,outer会将所有的项进行级联(忽略匹配和不匹配),而inner只会将匹配的项级联到一起,不匹配的不级联
ignore_index=False

 

 

 

 

 

 

 

 

 

 

 

 append函数的使用

 

 

 

 

合并操作

  • merge与concat的区别在于,merge需要依据某一共同列来进行合并

  • 使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。

  • 注意每一列元素的顺序不要求一致

一对一合并

 

 

 

一对多合并

 

 

多对多合并

 

 

 

 

key的规范化

当两张表没有可进行连接的列时,可使用left_on和right_on手动指定merge中左右两边的哪一列列作为连接的列

 

 

 

 

内合并与外合并:out取并集 inner取交集

 

 

 

 








posted @ 2021-03-09 19:26  正在学Python  阅读(1535)  评论(0编辑  收藏  举报