Pandas 基于“not in”条件从数据框中删除行
在本文中,我们将讨论使用Pandas如何基于“not in”条件从数据框中删除行。这是一个经常遇到的问题,需要我们对Pandas的筛选和删除方法有一定的了解。
阅读更多:Pandas 教程
数据框
首先,我们需要先了解一下什么是Pandas的数据框,类似于Excel中的表格。我们可以使用以下代码创建一个具有三列的数据框:
import pandas as pd
import numpy as np
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'],
'age': [20, 25, 30, 35, 40],
'gender': ['F', 'M', 'M', 'M', 'F']}
df = pd.DataFrame(data)
这段代码会生成以下数据框:
name | age | gender | |
---|---|---|---|
0 | Alice | 20 | F |
1 | Bob | 25 | M |
2 | Charlie | 30 | M |
3 | David | 35 | M |
4 | Ella | 40 | F |
Pandas基于“not in”条件从数据框中删除行
接下来,我们会讨论如何利用Pandas基于“not in”条件从数据框中删除行。
方法1:使用~符号
我们可以使用~符号来实现“not in”条件,以下代码演示了如何删除’Bob’和’David’的数据:
df = df[~df.name.isin(['Bob', 'David'])]
这段代码使用了isin()
函数来通过一个列表来筛选数据,然后使用~符号来表示“not in”的条件,最后用df[]
来取出符合条件的数据框。删除结果如下:
name | age | gender | |
---|---|---|---|
0 | Alice | 20 | F |
2 | Charlie | 30 | M |
4 | Ella | 40 | F |
方法2:使用query()函数
我们还可以使用query()函数来实现数据筛选,以下代码演示了如何删除’Bob’和’David’的数据:
df = df.query("name not in ['Bob', 'David']")
这段代码使用了query()
函数来完成数据筛选,查询条件是”name not in [‘Bob’, ‘David’]”,最后将返回符合条件的数据框。删除结果如下:
name | age | gender | |
---|---|---|---|
0 | Alice | 20 | F |
2 | Charlie | 30 | M |
4 | Ella | 40 | F |
总结
本文主要介绍了使用Pandas基于“not in”条件从数据框中删除行的两种方法:使用~符号和使用query()函数。在实践中,我们可以根据具体的需求来选择合适的方法进行数据筛选和删除。这些方法也可以应用于复杂的条件筛选和删除场景,希望对您的数据处理工作有所帮助。