一、concat:沿着一條軸,將多個對象堆疊到一起
concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True):
objs:需要連接的對象集合,一般是列表或字典;
axis:連接軸向;
join:參數為‘outer’或‘inner’;
join_axes=[]:指定自定義的索引;
keys=[]:創建層次化索引;
ignore_index=True:重建索引
pd.concat()只是單純的把兩個表拼接在一起,參數axis是關鍵,它用於指定是行還是列,axis默認是0。
當axis=0時,pd.concat([obj1, obj2])的效果與obj1.append(obj2)是相同的;
當axis=1時,pd.concat([obj1, obj2], axis=1)的效果與pd.merge(obj1, obj2, left_index=True, right_index=True, how='outer')是相同的。merge方法的介紹請參看下文。
import pandas as pd import numpy as np random = np.random.RandomState(0) #隨機數種子,相同種子下每次運行生成的隨機數相同 df1=pd.DataFrame(random.randn(3,4),columns=['a','b','c','d']) df1
random = np.random.RandomState(0) df2=pd.DataFrame(random.randn(2,3),columns=['b','d','a'],index=["a1","a2"]) df2
random = np.random.RandomState(1) df22=pd.DataFrame(random.randn(3,3),columns=['b','d','a'],index=['1',"a1","a2"]) df22
當axis=0時
pd.concat([df1,df2],axis=0)
pd.concat([df1,df2],axis=0,join="outer")
df12=df1.append(df2)
df12
pd.concat([df1,df2],axis=0,join="inner")
當axis=1時
pd.concat([df1,df2],axis=1,join='inner')
pd.concat([df1,df1],axis=1,join='inner') #和outer一樣
pd.concat([df1,df2],axis=1,join="outer")
pd.concat([df1,df22],axis=1,join="inner")
pd.concat([df1,df22],axis=1,join="outer")
pd.concat([df1,df1],axis=1,join="outer")