如何在 pandas 中使用“not in”过滤器(附示例)


您可以使用以下语法在 pandas DataFrame 中执行“NOT IN”过滤器:

 df[ ~ df[' col_name ']. isin (values_list)]

注意Values_list中的值可以是数值也可以是字符值。

以下示例展示了如何在实践中使用此语法。

示例 1:使用列执行“NON IN”过滤器

以下代码显示如何过滤 pandas DataFrame 以查找团队名称不在名称列表中的行:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#define list of teams we don't want
values_list = [' A ', ' B ']

#filter for rows where team name is not in list
df[ ~ df[' team ']. isin (values_list)]

        team points assists rebounds
6 C 25 9 9
7 C 29 4 12

以下代码显示了如何过滤 pandas DataFrame 中“points”列不包含某些值的行:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#define list of values we don't want
values_list = [12, 15, 25]

#filter for rows where team name is not in list
df[ ~ df[' team ']. isin (values_list)]

	team points assists rebounds
3 B 14 9 6
4 B 19 12 6
5 B 23 9 5
7 C 29 4 12

示例 2:执行具有多个列的“NON IN”过滤器

以下代码显示了如何过滤 pandas DataFrame 以查找某些团队名称不在几列之一中的行:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' star_team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' backup_team ': ['B', 'B', 'C', 'C', 'D', 'D', 'D', 'E'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#define list of teams we don't want
values_list = [' C ', ' E ']

#filter for rows where team name is not in one of several columns
df[ ~ df[[' star_team ', ' backup_team ']]. isin (values_list). any (axis= 1 )] 

        star_team backup_team points assists rebounds
0 A B 25 5 11
1 A B 12 7 8
4 B D 19 12 6
5 B D 23 9 5

请注意,我们过滤了“star_team”列或“backup_team”列中出现“C”或“E”团队的每一行。

其他资源

以下教程解释了如何在 pandas 中执行其他常见的过滤操作:

如何在 Pandas 中使用“Is Not Null”
如何按列值过滤 Pandas DataFrame
如何按日期过滤 Pandas DataFrame 行
如何根据多个条件过滤 Pandas DataFrame

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注