CDA數據分析師 出品
在工做中常常會遇到多個表進行拼接合並的需求,在pandas中有多個拼接合並的方法,每種方法都有本身擅長的拼接方式,這篇文章只對pd.concat()進行詳細講解,但願能幫助有須要的朋友一次完全弄清楚它的用法。小程序
pd.concat()函數能夠沿着指定的軸將多個dataframe或者series拼接到一塊兒,這一點和另外一個經常使用的pd.merge()函數不一樣,pd.merge()函數只能實現兩個表的拼接。文章的主題是pd.concat()函數,接下來認識一下這個函數吧:數據結構
pd.concat( objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True,)函數
以上是有關pd.concat()函數的全部參數,接下來經過例子對經常使用參數進行講解。spa
假設有兩個來自不一樣部門的表格,一個來自銷售部門,一個來自人力部門,這兩個表通常會有一兩個相同的列,大多數列名不一樣,可是行索引相同,由於是對同一批人不一樣信息的統計。3d
來看個例子:blog
來自銷售部門的表df_s排序
來自人力部門的表df_h索引
經過上邊的例子,可以看出在函數pd.concat()中的默認拼接方式是上下堆疊,而銷售和人力的表格很明顯須要左右拼接,這時候就須要參數axis出場了:seo
當表格拼接完成後,就不能判斷到底哪些數據是來自於哪個表了,若是須要保留來源信息,就能夠經過keys參數進行設置,而names參數能夠給拼接後造成的數據結構添加名字。rem
來,看代碼:
這是上下拼接狀況下標記每條記錄來自於哪一個表,添加名字說明
這是左右拼接狀況下標記每條記錄來自於哪一個表,添加名字說明
前邊的代碼中對這兩個參數都沒有進行設置,其中join參數控制的是外鏈接仍是內鏈接,默認外鏈接,保留兩個表中的全部信息;若是設置成內鏈接,拼接結果只保留兩個表共有的信息,而join_axes參數是在內鏈接時選擇要完整保留哪一個表的索引,可是這個參數在官方文檔中提醒即將被棄用,因此不作詳細講解,只看一下join參數的表現吧:
這兩個表有部分相同的列名和部分相同的行索引,來對這兩個表進行兩個方向的拼接,設置join="inner"後查看下效果:
上下拼接的時候,保留了共有的列信息!
左右拼接的時候保留了共有的行信息!
布爾值,默認值無
· 當" join"爲" outer"時,若是有未對齊的軸,則對軸信息進行排序。 當前默認的排序默認值已棄用,在之後的pandas版本中將更改成不排序。
· 顯式傳遞``sort = True''使警告和排序保持沉默。
· 顯式傳遞``sort = False''以使警告靜音而不進行排序。
· 當"join ='inner'"已經保留了非串聯軸的順序時,這個命令無效。
以下圖,默認上下拼接,不進行sort參數設置會跳出警告,而且能看到列名已經被從新排序了:
設置sort=True,使警告沉默可是依然會被從新排序:
設置sort = False,使警告沉默而且不會被從新排序:
levels:序列列表,默認值無。用於構建MultiIndex的特定級別(惟一值)。不然,它們將從鍵推斷。
copy:bool,默認爲True,若是爲False,則不要沒必要要地複製數據。
這兩個參數不是很經常使用,這裏很少作介紹了。
但願經過這篇文章讓你對pd.concat()函數有更深的認識,也但願你可以愈來愈優秀!
疫情當下,昔日匆匆的步伐終於放慢了些,也是時候好好想一想本身的職業計劃和人生規劃了。提早作好準備,未雨綢繆,爲將來蓄能——蓄勢待發!
(1)更多優質內容和精彩資訊,可前往:https://www.cda.cn/?seo
(2)搜索CDA小程序,手機端隨時隨地瀏覽最新資訊和優質課程: