导语
在数据分析前时我们经常需要整合数据,经常需要将表与表联结起来,下面介绍两种常用的方法。
导入要用的数据
1 d1=pd.DataFrame(np.random.randn(5,3),index=range(5),columns=["a","b","c"]) 2 d2=pd.DataFrame(np.random.randn(5,3),index=range(5),columns=["a","b","c"]) 3 d3=pd.DataFrame(np.random.randn(5,3),index=range(2,7),columns=["d","b","c"])
d1
d2
d3
•concat
按某一维度拼接pandas对象
pd.concat(objs,axis=0, join='outer',join_axes=None, ignore_index=False, keys=None, levels=None,names=None, verify_integrity=False,sort=None, )
outer为并,inner为交,axis=0按照列名联结,axis=1按照index联结
1 d12=pd.concat([d1,d2],join="outer",axis=0) 2 d12
d13_in=pd.concat([d1,d3],join="inner",axis=1)#axis=1根据index联结 d13_in
d13_out=pd.concat([d1,d3],join="outer",axis=1) d13_out
1 d13_out0=pd.concat([d1,d3],join="outer",axis=0) 2 d13_out0
1 d13_in0=pd.concat([d1,d3],join="inner",axis=0) 2 d13_in0
•merge
pd.merge( left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,indicator=False)
how可以是:inner(默认),outer,lefti,right
on=[key1,key2]连接俩个数据的共同名的键值,当然可以用left_on=None,right_on=None,left_index=False,right_index=False随意组合
1 d12=pd.merge(d1,d3,how="outer",left_index=True,right_index=True) 2 d12
1 d13=pd.merge(d1,d3,how="inner",left_index=True,right_index=True) 2 d13
总结:merge更像是SQL中的join按照指定的列名来联结表,而concat则是按照轴来联结表