在 pandas 中删除列2025年03月17日 | 阅读 9 分钟 在 Pandas 中处理数据时,我们可能会删除 Pandas DataFrame 中的列或某些行。通常会删除不再需要的列/行以便进一步研究。有几种方法可以做到这一点,但在 Pandas 中最好的方法是使用 .drop() 方法。DataFrame 通常可能包含与研究无关的列。应从 DataFrame 中删除此类列,以便我们能够专注于剩余的列。 可以通过定义标签名称和相应轴来删除列,或者直接指定索引或列名称。此外,还可以通过定义级别来删除多级索引上的标签。在本文中,我们将通过一些示例讨论在 pandas 中删除列。 drop() 函数drop() 函数用于从行或列中删除一组标签。我们可以通过定义标签名称和匹配的轴来排除行或列,或者直接定义索引或列名称。通过定义级别,可以删除多级索引上的标签。我们可以使用 .drop() 函数从 Python DataFrame 中删除一个或多个列。 语法 drop() 函数的语法可以定义为: 参数 Labels: 列名或行索引值的字符串或列表。 Index: 提供行标签。 Level: 在 MultiIndex DataFrame 的情况下,用于确定从哪个级别删除标签。它接受级别位置或级别名称作为输入。 Axis: 指示删除列或行。要删除列,请将轴设置为 1 或 'columns'。默认情况下,它会从 DataFrame 中删除行。 Columns: 这是 axis = 'columns' 的替代选项。作为输入,它接受单个列标签或列标签列表。 Inplace: 指定是返回一个新的 DataFrame 还是修改现有的 DataFrame。它是一个布尔标志,默认值为 False。 Errors: 如果设置为 'ignore',则忽略错误。 返回值
删除单列DataFrame 可能需要删除单个或复杂列。 示例: 在下面的示例中,我们使用 df.drop(columns = 'col name') 来从 DataFrame 中删除 'age' 列。 输出:执行此代码后,我们将获得如下所示的输出 name age marks 0 Joe 20 85.1 1 Nat 21 77.8 name marks 0 Joe 85.1 1 Nat 77.8 使用 axis = 'column' 或 axis = 1 的 drop 函数要删除列,请使用 DataFrame.drop() 方法的 axis 参数。行或列都可以用作轴。列轴由数字 1 或 'columns' 表示。设置 axis=1 或 axis= 'columns' 并提供要删除的列名列表。 示例: 让我们来看上面的例子,了解如何使用 axis = 'column' 和 axis = 1 的 drop 函数。 输出:执行此代码后,我们将获得如下所示的输出 name age marks 0 Joe 20 85.1 1 Nat 21 77.8 name 0 Joe 1 Nat 删除多列DataFrame.drop() 函数有两个参数,我们可以使用它们一次删除 DataFrame 的多列。
示例: 让我们来看一个例子,了解如何删除 DataFrame 中的多列。 输出:执行此代码后,我们将获得如下所示的输出 name age marks 0 John 24 77.29 1 Alex 18 69.15 name 0 John 1 Alex 就地删除列在之前的示例中,每当我们执行删除操作时,pandas 都会生成 DataFrame 的新副本,因为修改不是就地进行的。inplace 参数指定是从现有 DataFrame 中删除列还是制作副本。
示例: 让我们解释一下如何使用 drop 函数就地删除列。 输出: 执行上述代码后,我们将得到如下输出 name age marks 0 John 24 79.18 1 Alex 18 68.79 name 0 John 1 Alex 通过抑制错误删除列如果我们尝试删除的列不存在于数据集中,DataFrame.drop() 方法将引发 KeyError。如果我们只想在列存在时删除它,我们可以使用 errors 参数来消除错误。
示例: 让我们看一个例子,了解如何通过抑制错误来删除列。 输出: 执行上述代码后,我们将得到如下输出 name age marks 0 John 24 79.49 1 Alex 18 82.54 raise KeyError(f"{labels[mask]} not found in axis") KeyError: "['salary'] not found in axis" 按索引位置删除列如果我们想从 DataFrame 中删除列但不知道它们的名称,我们可以通过使用其索引位置删除列来做到这一点。列索引从 0 开始,一直到最后一列,其索引值为 len(df.columns)-1。 删除前 n 列如果我们想从 DataFrame 中删除前 'n' 列,我们可以使用 DataFrame.iloc 和 Python 的 range() 函数来定义要删除的列的范围。使用 DataFrame.drop() 的 columns 参数,我们需要使用内置函数 range()。 示例: 让我们看一个例子,了解如何删除 DataFrame 中的前 n 列。 输出:执行此代码后,我们将获得如下所示的输出 name age marks class city 0 John 24 84.45 A US 1 Alex 18 76.11 B UK marks class city 84.45 A US 76.11 B UK 删除最后一列假设我们想在不使用列名的情况下删除 DataFrame 的第一列或最后一列。在这种情况下,可以使用 DataFrame.columns 属性按索引位置删除 DataFrame 列。只需将 df.columns[index] 传递给 DataFrame.drop 的 columns 参数 ()。 示例: 让我们看一个例子,了解如何从 DataFrame 中删除最后一列。 输出: 执行上述代码后,我们将得到如下输出 name age marks 0 John 24 68.44 1 Alex 18 85.67 name age 0 John 24 1 Alex 18 使用 iloc 删除列范围我们可能需要从数据集中排除第四列或一组列。可以使用 DataFrame.iloc 从 DataFrame 中选择一个或多个列。为了定义需要删除的列的索引位置,我们可以在 columns 参数中使用 DataFrame.iloc。 示例: 让我们来看一个例子,了解如何使用 iloc 函数删除列范围。 输出: 执行上述代码后,我们将得到如下输出 name age marks 0 John 24 79.64 1 Alex 18 86.84 name 0 John 1 Alex 从多级索引 DataFrame 中删除列具有多个列头的 DataFrame 称为多级索引 DataFrame。此类头分为多个级别,级别 0 是第一个,级别 1 是第二个,依此类推。可以从多级索引 DataFrame 的任何级别删除列。默认情况下,它会从所有级别删除列,但我们可以使用 level 参数仅从一个级别删除列。我们需要将级别名称作为 level=level index 传递。 示例: 让我们看一个例子,了解如何从多级索引 DataFrame 中删除列。 输出: 执行上述代码后,我们将得到如下输出 Class X Class Y Class Z Class Y Name Marks Name Marks 0 John 87.22 Nat 68.79 1 Peter 73.45 Alex 82.76 Class X Class Z Name Name 0 John Nat 1 Peter Alex 使用函数删除列我们还可以使用该函数根据某些逻辑或条件删除列。我们可以使用内置函数和用户定义的函数来删除列。 使用 pandas DataFrame.pop() 函数删除列如果我们只想删除一列,我们可以使用 DataFrame.pop(col label) 函数。我们需要传递需要删除的列标签。通过更新现有 DataFrame,它会就地删除该列。如果找不到该列,它将引发 KeyError。 示例: 让我们看一个例子,了解如何使用 pandas DataFrame.pop() 函数删除列。 输出:执行此代码后,我们将获得如下所示的输出 name age marks 0 John 24 62.46 1 Alex 18 54.21 name marks 0 John 62.46 1 Alex 54.21 使用 loc 函数删除列如果我们想删除 DataFrame 中的所有列,我们可以使用 DataFrame.loc 在 DataFrame.drop() 的 columns 参数中快速轻松地做到这一点。使用 DataFrame.loc 定义需要删除的列标签。如果未定义列标签,例如 df.loc[:],则将删除 DataFrame 中的所有列。 示例: 让我们来看一个例子,了解如何使用 loc 函数删除列。 输出: 执行上述代码后,我们将得到如下输出 name age marks 0 John 24 79.68 1 Alex 18 84.45 使用 pandas DataFrame delete 删除列要从 DataFrame 中删除单个列,我们可以使用 pandas 内置函数 del。这是从 DataFrame 中删除列的一种非常简化的方法。我们必须选择要删除的 DataFrame 列,并将其作为 del df[col label] 传递。 示例: 让我们来看一个例子,了解如何使用 pandas DataFrame delete 删除列。 输出:执行此代码后,我们将获得如下所示的输出 name age marks 0 John 23 57.88 1 Alex 22 78.84 name marks 0 John 57.88 1 Alex 78.84 |
我们请求您订阅我们的新闻通讯以获取最新更新。