如何在Pandas中使用 “NOT IN “过滤器

如何在Pandas中使用 “NOT IN “过滤器

在这篇文章中,我们将讨论pandas中的NOT IN过滤器,NOT IN是一个成员运算符,用于检查数据帧中是否存在数据。如果该值不存在,它将返回true,否则返回false。

让我们创建一个样本数据框架

# import pandas module
import pandas as pd
  
# create dataframe
data1 = pd.DataFrame({'name': ['sravan', 'harsha', 'jyothika'],
                      'subject1': ['python', 'R', 'php'],
                      'marks': [96, 89, 90]}, index=[0, 1, 2])
  
# display
data1

输出:

如何在Pandas中使用NOT IN过滤器

sample dataframe

方法1:使用单列的NOT IN过滤器

我们使用isin()操作符来获取数据框中的给定值,这些值来自于列表,所以我们正在过滤数据框中存在于该列表中的一列值。

语法 :

dataframe[~dataframe[column_name].isin(list)]

其中

  • dataframe是输入数据帧
  • column_name是被过滤的列。
  • list是该列中要删除的值的列表
# import pandas module
import pandas as pd
  
# create dataframe
data1 = pd.DataFrame({'name': ['sravan', 'harsha', 'jyothika'],
                      'subject1': ['python', 'R', 'php'],
                      'marks': [96, 89, 90]}, index=[0, 1, 2])
  
# consider a list
list1 = ['harsha', 'jyothika']
  
# filter in name column
print(data1[~data1['name'].isin(list1)])
print("============")
  
# consider a list
list2 = ['R']
  
  
# filter in name column
print(data1[~data1['subject1'].isin(list2)])
print("============")
  
# consider a list
list3 = [96, 89]
  
# filter in name column
print(data1[~data1['marks'].isin(list3)])

输出:

如何在Pandas中使用NOT IN过滤器

单列的NOT IN过滤器

方法2:使用多列的NOT IN过滤器

现在我们可以通过使用any()函数来过滤多于一列的内容。这个函数将检查任何给定列中存在的值,列是用逗号分隔的[[]]。

语法 :

dataframe[~dataframe[[columns]].isin(list).any(axis=1)] 
# import pandas module
import pandas as pd
  
# create dataframe
data1 = pd.DataFrame({'name': ['sravan', 'harsha', 'jyothika'],
                      'subject1': ['python', 'R', 'php'],
                      'marks': [96, 89, 90]}, index=[0, 1, 2])
  
# consider a list
list1 = ['harsha', 'jyothika', 96]
  
# filter in name and marks column
print(data1[~data1[['name', 'marks']].isin(list1).any(axis=1)])
print("============")
  
# consider a list
list2 = ['R', 'sravan']
  
# filter in name and subject1 column
print(data1[~data1[['subject1', 'name']].isin(list2).any(axis=1)])

输出:

如何在Pandas中使用NOT IN过滤器

带有多列的NOT IN过滤器

方法3:使用带有NOT IN过滤器的numpy

这与上述功能类似。

语法:

dataframe[~numpy.isin(dataframe[‘column’], list)] 
# import pandas module
import numpy as np
import pandas as pd
  
# create dataframe
data1 = pd.DataFrame({'name': ['sravan', 'harsha', 'jyothika'],
                      'subject1': ['python', 'R', 'php'],
                      'marks': [96, 89, 90]}, index=[0, 1, 2])
  
# consider a list
list1 = ['harsha', 'jyothika', 96]
  
# filter in name column
data1[~np.isin(data1['name'], list1)]

输出:

如何在Pandas中使用NOT IN过滤器

带有NOT IN过滤器的numpy

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程