首頁 >後端開發 >Python教學 >Pandas DataFrame 如何使用不同的連接類型進行合併?

Pandas DataFrame 如何使用不同的連接類型進行合併?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-27 13:17:11341瀏覽

How Do Pandas DataFrames Merge Using Different Join Types?

Pandas 合併101

理解合併

合併根據共用金鑰組合兩個或多個DataFrame 以建立新>

合併根據共用金鑰組合兩個或多個DataFrame 以建立新的DataFrame 。 Pandas 提供各種類型的合併,包括 INNER、LEFT、RIGHT 和 FULL OUTER 連接。

基本聯結型

a。 INNER JOIN
  • 組合兩個 DataFrame 中共用公用鍵的行。

    left = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': np.random.randn(4)})
    right = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': np.random.randn(4)})
    left.merge(right, on='key')
    範例:

b. LEFT OUTER JOIN
  • 保留左側中的所有行,為右側DataFrame 中缺少的鍵加NaN 值。
  • 範例:
    left.merge(right, on='key', how='left')

c. RIGHT OUTER JOIN

  • 對應中的所有行,為左側DataFrame 中缺少的鍵加NaN 值。
  • 範例:

    left.merge(right, on='key', how='right')

d. FULL OUTER JOIN

    d. FULL OUTER JOIN
  • left.merge(right, on='key', how='outer')
    範例:

排除資料左/右排除連線

如果您需要排除特定行,您可以透過先執行左/右外部連接並過濾以排除特定行,從而執行左排除或右排除連接其他DataFrame。

e。左排除 JOIN
  • 排除左側 DataFrame 中存在的右側 DataFrame 中的行。

    (left.merge(right, on='key', how='left', indicator=True)
     .query('_merge == "left_only"')
     .drop('_merge', 1))
    範例:

f.右排除JOIN
  • 排除右中存在的左DataFrame 中的行。

    (left.merge(right, on='key', how='right', indicator=True)
     .query('_merge == "right_only"')
     .drop('_merge', 1))
    範例:

g。 ANTI JOIN
  • 合併兩個 DataFrame 中都不存在的行。

    (left.merge(right, on='key', how='outer', indicator=True)
     .query('_merge != "both"')
     .drop('_merge', 1))
    範例:

處理重複密鑰列

left3 = left2.set_index('keyLeft')
left3.merge(right2, left_index=True, right_on='keyRight')
為了避免輸出中出現重複的鍵列,您可以在合併之前設定適當的索引作為鍵:

合併多個欄位

left.merge(right, on=['key1', 'key2'] ...)
要連接多列,請指定on 的清單(或left_on 和right_on,如

附加合併函數
  • pd.merge_ordered:對於有序JOIN。

以上是Pandas DataFrame 如何使用不同的連接類型進行合併?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn