DataFrame(3):表合並


在Pandas的實踐過程中,我們經常需要將兩個DataFrame合並組合在一起再進行處理,比如將不同來源的數據合並在一起,或者將不同日期的DataFrame合並在一起。

DataFrame的合並組合從方向上分,大體上分為兩種情況:橫向的,縱向的。

看下如下的圖示(圖片來自Pandas官網)

橫向
縱向

另外需要注意的是,兩個DataFrame在合在一起的時候,如果針對重疊項(比如都有column B)會有兩種不同的處理方式,一種是針對重疊項進行合並處理(比如相加,或者直接取代);另一種是忽略重疊項,只是簡單的組合在一起。前者我們稱為合並,后者我們叫做組合。

另外,在Pandas中有很多不同函數和不同用法,比如有concat, join, merge, append,它們各有不同的使用場景。

縱向連接

橫向連接與合並

前面我們已經知道concat不僅可以縱向連接,也可以橫向連接

 

 我們看到concat仍然是一種拼接,其根據index進行join,而merge更加靈活,可以根據指定的column來進行合並,如下:

 可以針對多個列進行join,並重新命名后綴,如下:

 關於merge還有幾個常用的參數說明如下:

  • left_index & right_index: 當我們需要通過index來進行join的時候(類似concat),則可以使用left_index 或者right_index.
  • sort: 默認為False,如果True則將join的key按照字典順序進行排序,比如我們按照"city"進行join的時候,會按照"city"的字典順序進行排序。但如果我們不需要排序,則可以將其置為False,以提高性能
  • validate: 主要針對duplicate的情況,它有以下幾個參數可以設置
    “one_to_one” or “1:1”: checks if merge keys are unique in both left and right datasets.
    “one_to_many” or “1:m”: checks if merge keys are unique in left dataset.
    “many_to_one” or “m:1”: checks if merge keys are unique in right dataset.
    “many_to_many” or “m:m”: allowed, but does not result in checks.

更多關於merge的說明參考如下鏈接:
關於merge的說明

另外,join是merge的一種簡便寫法,其底層是通過merge來實現的,如下兩種表達方式是相同的。

示例:

merging_join_key_columns.png

需要注意的是當要join的兩個DataFrame有同名的列時,必須指定suffix,否則會報錯,如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM