python:pandas 合并多個DataFrame

python ?把幾個DataFrame合并成一個DataFrame——merge,append,join,concat

pandas provides various facilities for easily combining together Series, DataFrame, and Panel objects with various kinds of set logic for the indexes and relational algebra functionality in the case of join / merge-type operations.

1、merge

pd.merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=True,suffixes=('_x','_y'),copy=True,indicator=False)

left︰?對象

right︰?另一個對象

on︰?要加入的列?(名稱)。必須在左、?右綜合對象中找到。如果不能通過?left_index?和?right_index?是假,將推斷?DataFrames?中的列的交叉點為連接鍵

left_on︰?從左邊的綜合使用作為鍵列??梢允橇忻驍?shù)組的長度等于長度綜合

right_on︰?從正確的綜合,以用作鍵列??梢允橇忻驍?shù)組的長度等于長度綜合

left_index︰?如果為?True,則使用索引?(行標(biāo)簽)?從左綜合作為其聯(lián)接鍵。在與多重?(層次)?的綜合,級別數(shù)必須匹配聯(lián)接鍵從右綜合的數(shù)目

right_index︰?相同用法作為正確綜合?left_index

how︰?之一?'左','右','外在'、?'內(nèi)部'。默認(rèn)為內(nèi)部。每個方法的更詳細(xì)說明請參閱︰

sort︰?綜合通過聯(lián)接鍵按字典順序?qū)Y(jié)果進(jìn)行排序。默認(rèn)值為?True,設(shè)置為?False將提高性能極大地在許多情況下

suffixes︰?字符串后綴并不適用于重疊列的元組。默認(rèn)值為?('_x','_y')。

copy︰?即使重新索引是不必要總是從傳遞的綜合對象,復(fù)制的數(shù)據(jù)?(默認(rèn)值True)。在許多情況下不能避免,但可能會提高性能?/?內(nèi)存使用情況??梢员苊鈴?fù)制上述案件有些病理但盡管如此提供此選項。

indicator︰?將列添加到輸出綜合呼吁?_merge?與信息源的每一行。_merge?是絕對類型,并對觀測其合并鍵只出現(xiàn)在?'左'?的綜合,觀測其合并鍵只會出現(xiàn)在?'正確'?的綜合,和兩個如果觀察合并關(guān)鍵發(fā)現(xiàn)在兩個?right_only?left_only?的值。

1.result=pd.merge(left,right,on='key')

2.result = pd.merge(left, right, on=['key1', 'key2'])

3.result=pd.merge(left,right,how='left',on=['key1','key2'])

4.result=pd.merge(left,right,how='right',on=['key1','key2'])

5.result=pd.merge(left,right,how='outer',on=['key1','key2'])

2、append

1.result=df1.append(df2)

2.result=df1.append(df4)

3.result=df1.append([df2,df3])

4.result=df1.append(df4,ignore_index=True)

4、join

left.join(right,on=key_or_keys)pd.merge(left,right,left_on=key_or_keys,right_index=True,how='left',sort=False)

1.result=left.join(right,on='key')

2.result=left.join(right,on=['key1','key2'])

3.result=left.join(right,on=['key1','key2'],how='inner')

4、concat

pd.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,copy=True)

objs︰?一個序列或系列、?綜合或面板對象的映射。如果字典中傳遞,將作為鍵參數(shù),使用排序的鍵,除非它傳遞,在這種情況下的值將會選擇?(見下文)。任何沒有任何反對將默默地被丟棄,除非他們都沒有在這種情況下將引發(fā)?ValueError。

axis:?{0,1,...},默認(rèn)值為

0。要連接沿軸。

join:?{'內(nèi)部'、?'外'},默認(rèn)?'外'。如何處理其他?axis(es)?上的索引。聯(lián)盟內(nèi)、?外的交叉口。

ignore_index︰?布爾值、?默認(rèn)?False。如果為?True,則不要串聯(lián)軸上使用的索引值。由此產(chǎn)生的軸將標(biāo)記?0,...,n-1。這是有用的如果你串聯(lián)串聯(lián)軸沒有有意義的索引信息的對象。請注意在聯(lián)接中仍然受到尊重的其他軸上的索引值。

join_axes︰?索引對象的列表。具體的指標(biāo),用于其他?n-1?軸而不是執(zhí)行內(nèi)部/外部設(shè)置邏輯。

keys︰?序列,默認(rèn)為無。構(gòu)建分層索引使用通過的鍵作為最外面的級別。如果多個級別獲得通過,應(yīng)包含元組。

levels︰?列表的序列,默認(rèn)為無。具體水平?(唯一值)?用于構(gòu)建多重。否則,他們將推斷鑰匙。

names︰?列表中,默認(rèn)為無。由此產(chǎn)生的分層索引中的級的名稱。

verify_integrity︰?布爾值、?默認(rèn)?False。檢查是否新的串聯(lián)的軸包含重復(fù)項。這可以是相對于實際數(shù)據(jù)串聯(lián)非常昂貴。

副本︰?布爾值、?默認(rèn)?True。如果為?False,請不要,不必要地復(fù)制數(shù)據(jù)。

1.frames=[df1,df2,df3]2.result=pd.concat(frames)

3.result=pd.concat(frames,keys=['x','y','z'])

4.result.ix['y']

? ? A? B? C? D4? A4? B4? C4? D45? A5? B5? C5? D56? A6? B6? C6? D67? A7? B7? C7? D7

5.result=pd.concat([df1,df4],axis=1)

6.result=pd.concat([df1,df4],axis=1,join='inner')

7.result=pd.concat([df1,df4],axis=1,join_axes=[df1.index])

8.result=pd.concat([df1,df4],ignore_index=True)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容