pandas使用pd.concat函数,与np.concatenate函数类似,只是多了一些参数:
objs
axis=0
keys
join=‘outer‘ / ‘inner‘:表示的是级联的方式,outer会将所有的项进行级联(忽略匹配和不匹配),而inner只会将匹配的项级联到一起,不匹配的不级联
ignore_index=False
import numpy as np
import pandas as pd
from pandas import DataFrame
df1 = DataFrame(data=np.random.randint(0,100,size=(5,3)),columns=[‘A‘,‘B‘,‘C‘])
df2 = DataFrame(data=np.random.randint(0,100,size=(5,3)),columns=[‘A‘,‘D‘,‘C‘])
pd.concat((df1,df1),axis=1) # 行链接
A B C A B C
0 76 72 83 76 72 83
1 72 73 35 72 73 35
2 74 26 77 74 26 77
3 13 81 82 13 81 82
4 40 21 41 40 21 41
pd.concat((df1,df2),axis=0) pd.concat((df1,df2),axis=0,join=‘outer‘)
A B C D
0 76 72.0 83 NaN
1 72 73.0 35 NaN
2 74 26.0 77 NaN
3 13 81.0 82 NaN
4 40 21.0 41 NaN
0 4 NaN 42 37.0
1 61 NaN 7 53.0
2 0 NaN 13 39.0
3 85 NaN 37 92.0
4 40 NaN 71 61.0
pd.concat((df1,df2),axis=0,join=‘inner‘)
A C
0 7 5
1 69 8
2 88 19
3 93 77
4 13 61
0 26 27
1 32 13
2 40 95
3 97 22
4 51 24
merge与concat的区别在于,merge需要依据某一共同列来进行合并
使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。
注意每一列元素的顺序不要求一致
当列冲突时,即有多个列名称相同时,需要使用on=来指定哪一个列作为key,配合suffixes指定冲突列名
当两张表没有可进行连接的列时,可使用left_on和right_on手动指定merge中左右两边的哪一列列作为连接的列
原文:https://www.cnblogs.com/freedom0923/p/13214917.html