如何在 Python Pandas 中合併多個列?
Pandas 是 Python 中一個流行的資料處理庫,廣泛用於處理結構化資料。處理資料時,常見的任務之一是清理和轉換資料,以便為分析做好準備。
有時,資料可能包含多個具有相似資訊或彼此相關的列。在這種情況下,為了簡化分析或視覺化,將這些列合併成一列可能很有用。
Pandas 提供了幾種將多列合併成一列的方法。在本教程中,我們將詳細探討這些方法,並提供示例來演示如何使用它們。在本教程結束時,您將更好地理解如何在 Pandas 中合併多列,並能夠將這些技術應用到您自己的資料集中。
現在讓我們討論兩種不同的方法,我們可以使用它們來合併 Pandas 中的多列。
使用 Pandas 中的 melt() 方法合併多列
Pandas 中的 melt() 方法是一個強大的工具,用於將寬資料轉換為長資料。我們可以使用此方法將多列合併成一列。
要使用 melt() 方法,我們需要使用 value_vars 引數指定要保留為識別符號變數的列和要合併成一列的列。
結果 DataFrame 將包含一個新列,其中包含來自合併列的值,舊列將轉換為兩列,一列用於識別符號變數,另一列用於值變數。
以下是使用 melt() 方法合併多列的步驟:
匯入 Pandas 庫。
將資料集載入到 DataFrame 中。
在 DataFrame 上使用 melt() 方法,並使用 id_vars 引數指定識別符號變數,使用 value_vars 引數指定要合併的列。
根據需要重新命名列。
示例
現在讓我們來看一下相應的程式碼。
import pandas as pd from tabulate import tabulate data = { 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'income_2019': [50000, 60000, 70000], 'income_2020': [55000, 65000, 75000]} df = pd.DataFrame(data) print(tabulate(df, headers='keys', tablefmt='psql')) print("\n Data Frame After Collapsing Similar Columns") melted_df = df.melt( id_vars=['name', 'age'], value_vars=['income_2019', 'income_2020'], var_name='year', value_name='income') print(tabulate(melted_df, headers = 'keys', tablefmt = 'psql'))
輸出
執行此程式碼後,您將獲得以下輸出:

觀察原始表格以及合併相似列後的外觀。
使用 Pandas 中的 stack() 方法合併多列
Pandas 中的 stack() 方法是將多列合併成一列的另一種方法。當要合併的列具有分層索引時,我們可以使用此方法。
要使用 stack() 方法,我們首先需要使用 set_index() 方法在 DataFrame 上建立多索引。
然後,我們可以使用 stack() 方法合併列並建立一個 Series 物件。
以下是使用 stack() 方法合併多列的步驟:
匯入 Pandas 庫。
將資料集載入到 DataFrame 中。
使用 set_index() 方法使用要保留為識別符號變數的列在 DataFrame 上建立多索引。
使用 stack() 方法合併列。
使用 reset_index() 方法將生成的 Series 物件轉換回 DataFrame。
根據需要重新命名列。
示例
請考慮以下程式碼。
import pandas as pd from tabulate import tabulate data = { 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'income': [(50000, 55000), (60000, 65000), (70000, 75000)] } df = pd.DataFrame(data) print(tabulate(df, headers='keys', tablefmt='fancy_grid')) df.set_index(['name', 'age'], inplace=True) stacked_df = df['income'].apply(pd.Series) print(tabulate(stacked_df, headers='keys', tablefmt='fancy_grid'))
輸出
執行此程式碼後,您將獲得以下輸出:

觀察使用 stack() 方法合併一些列後 Pandas DataFrame 的外觀。
結論
總而言之,合併 Pandas 中的多列可以使用多種方法完成,例如使用 melt() 和 stack() 方法。這兩種方法都是將寬資料轉換為長資料的強大工具,它們可以用於將多列合併成一列。方法的選擇取決於特定的資料集和需要合併的列的結構。透過使用這些方法,我們可以建立一個更有條理且更高效的資料集,這對於資料分析和機器學習應用至關重要。
Pandas 提供了各種強大的資料處理工具,掌握這些工具可以大大提高您分析和處理資料的能力。