Pandas 如何根据条件表达式从 pandas DataFrame 中删除行

Pandas 如何根据条件表达式从 pandas DataFrame 中删除行

在本文中,我们将介绍如何使用 Pandas 删除 DataFrame 中符合条件的行。Pandas 是一个 Python 库,用于处理和分析数据。其中一个常见的需求是去除不需要的行,通常是基于某个条件。

假设我们有以下 DataFrame:

import pandas as pd

df = pd.DataFrame({
   'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'],
   'age': [25, 30, 35, 40, 45],
   'salary': [5000, 6000, 7000, 8000, 9000]
})

print(df)

这将输出:

       name  age  salary
0     Alice   25    5000
1       Bob   30    6000
2   Charlie   35    7000
3     David   40    8000
4      Emma   45    9000

阅读更多:Pandas 教程

操作1:使用布尔索引

布尔索引是 Pandas 中基于一组布尔条件的索引。对于那些满足条件的行或列,将返回 True,反之则返回 False。在 Pandas 中,我们可以使用这些布尔值来过滤 DataFrame。下面是如何基于条件删除 Pandas DataFrame 中的行:

df = df[df.age != 35]

print(df)

这将输出:

    name  age  salary
0  Alice   25    5000
1    Bob   30    6000
3  David   40    8000
4   Emma   45    9000

在这个例子中,我们选择了所有年龄不等于35的行,并将它们重新赋值给原始 DataFrame,这样就可以删除了.

我们也可以选择年龄小于或等于35的行,使用以下代码:

df = df[df.age <= 35]

print(df)

这将输出:

    name  age  salary
0  Alice   25    5000
1    Bob   30    6000

操作2:使用 loc 方法

Python Pandas 提供了 loc 方法,它允许我们选择满足指定条件的行。loc 方法需要一个布尔条件,以过滤行。以下是如何使用 loc 条件删除 Pandas DataFrame 中的行:

df = df.loc[df['age'] != 25]

print(df)

这将输出:

       name  age  salary
1       Bob   30    6000
2   Charlie   35    7000
3     David   40    8000
4      Emma   45    9000

在这个例子中,我们选择了所有年龄不等于25的行,并将它们重新赋值给原始 DataFrame,这样就可以删除了。

我们也可以选择薪水多于或等于8000的行,使用以下代码:

df = df.loc[df['salary'] >= 8000]

print(df)

这将输出:

    name  age  salary
3  David   40    8000
4   Emma   45    9000

操作3:使用 drop 方法

可以使用 Pandas 中的 drop 方法,通过传递条件来删除符合此条件的行。在这个例子中,我们将删除所有年龄等于30和35的行。

df = df.drop(df[(df.age == 30) | (df.age == 35)].index)

print(df)

输出如下:

    name  age  salary
0  Alice   25    5000
3  David   40    8000
4   Emma   45    9000

在该示例中,我们首先选择考虑删除的行,通过将这些行的索引传递给 drop 方法来删除它们。

我们也可以根据薪水删除所有行:

df = df.drop(df[df.salary > 0].index)

print(df)

这将输出:

      name  age  salary
Series([], Name: name, dtype: object)

在这个例子中,我们选择了所有薪水大于0的行,但实际上不存在这样的行,因此输出结果为空Series。

操作4: 使用 where 方法

另一种删除符合条件的行的方法是使用 where 方法。

df = df.where(df.age <= 35)

print(df)

输出结果:

       name   age   salary
0     Alice  25.0   5000.0
1       Bob  30.0   6000.0
2       NaN   NaN      NaN
3       NaN   NaN      NaN
4       NaN   NaN      NaN

在这个例子中,我们选择了所有年龄小于等于35的行,并将其余行设为 NaN。

我们可能想要删除 NaN 值,这可以使用 dropna 方法实现:

df = df.dropna()

print(df)

结果显示:

    name  age  salary
0  Alice   25    5000
1    Bob   30    6000

总结

通过本文,我们学习了四种删除 Pandas DataFrame 中符合条件的行的方法,它们是:

  • 使用布尔索引:通过选择满足条件的行并重新赋值 DataFrame 来删除它们。
  • 使用 loc 方法:通过 loc 条件选择器来筛选行
  • 使用 drop 方法:通过传递条件来删除符合该条件的行。
  • 使用 where 方法:使用 where 方法过滤 DataFrame 并将其余行设为 NaN。

通过这些技术,您将能够在 Pandas中删除基于条件的行,存储和保持数据结构的完整性。

希望这篇文章能够对您有所帮助!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程