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中删除基于条件的行,存储和保持数据结构的完整性。
希望这篇文章能够对您有所帮助!