如何在 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 上创建一个 MultiIndex。
然后,我们可以使用 stack() 方法折叠列并创建一个 Series 对象。
以下是使用 stack() 方法折叠多列的步骤 -
导入 Pandas 库。
将数据集加载到 DataFrame 中。
使用 set_index() 方法在 DataFrame 上使用我们想要保留为标识符变量的列创建 MultiIndex。
使用 stack() 方法折叠列。
将生成的 Series 对象转换回DataFrame 使用 reset_index() 方法。
根据需要重命名列。
示例
考虑下面显示的代码。
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 数据框的某些列后的样子。
结论
总之,可以使用各种方法折叠 Pandas 中的多列,例如使用 melt() 和 stack() 方法。这两种方法都是将宽数据转换为长数据的强大工具,它们可用于将多列折叠为单列。方法的选择取决于特定的数据集和需要折叠的列的结构。通过使用这些方法,我们可以创建一个更有条理、更高效的数据集,这对于数据分析和机器学习应用至关重要。
Pandas 提供了各种强大的数据操作工具,掌握这些工具可以大大增强你分析和处理数据的能力。