首頁 >後端開發 >Python教學 >如何基於公共列高效合併多個 Pandas DataFrame?

如何基於公共列高效合併多個 Pandas DataFrame?

Barbara Streisand
Barbara Streisand原創
2024-11-25 15:25:16895瀏覽

How to Efficiently Merge Multiple Pandas DataFrames Based on a Common Column?

透過三向聯接合併Pandas 中列上的多個DataFrame

資料合併是資料分析中的一項基本任務,允許您將來自多個來源的資料。在 Pandas 中, join() 函數是合併資料幀的強大工具。但是,在連接多個資料幀時,您可能會遇到與分層索引方案相關的挑戰。

使用公共列的三向連接

考慮您有三個資料幀的場景CSV 文件,每個文件都包含有關同一組人員的資訊。每個文件中的第一列是人員的姓名,而後續列代表他們的屬性。您的目標是將這些文件合併到一個 CSV 中,每行包含每個獨特人員的所有屬性。

分層索引和多重索引

在 Pandas 中,多重索引是指每個索引層級代表不同列的索引方案。連接資料幀時,使用多個索引根據共用值對齊資料。在您的情況下,「join」函數可能會指定您需要多索引,因為您要連接單一列(名稱),這是每個資料幀中的索引。

合併資料幀而不需要分層索引

但是,某些場景可能不需要分層索引。如果資料幀具有公共列,則可以使用 lambda 函數和 functools 套件來簡化合併過程。這是一個範例:

import pandas as pd
import functools as ft

dfs = [df1, df2, df3, ..., dfN]

df_final = ft.reduce(lambda left, right: pd.merge(left, right, on='name'), dfs)

在此程式碼中:

  • dfs 是包含要合併的資料幀的清單。
  • ft.reduce 應用 lambda 函數對於每對資料幀,根據「名稱」合併它們
  • df_final 是產生的資料幀,包含每個唯一人員的所有屬性。

這種方法可以方便地合併多個資料幀,而無需指定複雜的分層索引方案。

以上是如何基於公共列高效合併多個 Pandas DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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