¿Cómo usar el filtro «NO EN» en Pandas?

En este artículo, discutiremos el filtro NOT IN en pandas, NOT IN es un operador de membresía que se usa para verificar si los datos están presentes en el marco de datos o no. Devolverá verdadero si el valor no está presente, de lo contrario, será falso

Vamos a crear un marco de datos de muestra

Python3

# 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

Producción:

marco de datos de muestra

Método 1: Use el filtro NOT IN con una columna

Estamos utilizando el operador isin() para obtener los valores dados en el marco de datos y esos valores se toman de la lista, por lo que estamos filtrando los valores de una columna del marco de datos que están presentes en esa lista.

Sintaxis : dataframe[~dataframe[nombre_columna].isin(lista)]

dónde

  • dataframe es el dataframe de entrada
  • column_name es la columna que se filtra
  • lista es la lista de valores que se eliminarán en esa columna

Python3

# 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)])

Producción:

NO EN Filtro con una columna

Método 2: Use el filtro NOT IN con varias columnas

Ahora podemos filtrar en más de una columna usando la función any(). Esta función verificará el valor que existe en cualquier columna dada y las columnas se dan en [[]] separadas por una coma.

Sintaxis : dataframe[~dataframe[[columnas]].isin(lista).any(eje=1)]

Python3

# 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)])

Producción:

 NO EN Filtro con Columna Múltiple

Método 3: use numpy con el filtro NOT IN

Esto es similar a la funcionalidad anterior.

Sintaxis: dataframe[~numpy.isin(dataframe[‘column’], list)]

Python3

# 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)]

Producción:

numpy con filtro NOT IN

Publicación traducida automáticamente

Artículo escrito por sravankumar8128 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *