LEFT ANTI Join es lo opuesto a semi-join. excluyendo la intersección, devuelve la tabla de la izquierda. Solo devuelve las columnas de la tabla de la izquierda y no de la derecha.
Método 1: Usar isin()
En los marcos de datos creados, realizamos la combinación izquierda y el subconjunto usando la función isin() para verificar si la parte en la que se fusionan los conjuntos de datos está en el subconjunto del conjunto de datos fusionado.
Sintaxis :
DataFrame.isin(valores)
Parámetros :
- valores: iterable, Series, DataFrame o dict
Devoluciones :
Marco de datos
Ejemplo :
En el siguiente código, usamos el indicador para encontrar las filas que son ‘Left_only’ y crear un subconjunto del conjunto de datos fusionado, y asignarlo a df. finalmente, recuperamos la parte que está solo en nuestro primer marco de datos df1. la salida es antijoin de los dos marcos de datos.
Python3
# importing packages import pandas as pd # anti-join # creating dataframes using pd.DataFrame() method. df1 = pd.DataFrame({ "city": ["new york", "chicago", "orlando", 'mumbai'], "temperature": [21, 14, 35, 30], "humidity": [65, 68, 75, 75], }) df2 = pd.DataFrame({ "city": ["chicago", "new york", "orlando"], "humidity": [67, 60, 70] }) # carrying out anti join using merge method df3 = df1.merge(df2, on='city', how='left', indicator=True) df = df3.loc[df3['_merge'] == 'left_only', 'city'] d = df1[df1['city'].isin(df)] print(d)
Producción:
city temperature humidity 3 mumbai 30 75
Método 2: Usar semijoin
Podemos usar el operador ‘~’ en la semi-unión. Resulta en anti-join.
Semi-join : similar a la combinación interna, semi-join devuelve la intersección pero solo devuelve las columnas de la tabla izquierda y no de la derecha. no tiene valores duplicados.
Sintaxis :
[~df1[‘nombre_columna’].isin(df2[‘nombre_columna’])]
dónde,
- df1 es el primer marco de datos
- df2 es el segundo marco de datos
- column_name es la columna coincidente en ambos marcos de datos
Ejemplo :
En este ejemplo, fusionamos df1 y df2 en ‘ciudad’ de forma predeterminada es ‘unión interna’, después de fusionar, excluimos la parte de df1 que está en df3 e imprimimos el marco de datos resultante.
Python3
# code import pandas as pd # inverse of semi-join: # creating dataframes using pd.DataFrame() method. df1 = pd.DataFrame({ "city": ["new york", "chicago", "orlando", 'mumbai'], "temperature": [21, 14, 35, 30], "humidity": [65, 68, 75, 75], }) df2 = pd.DataFrame({ "city": ["chicago", "new york", "orlando"], "humidity": [67, 60, 70] }) # carrying out anti join using merge method df3 = df1.merge(df2, on='city') df = df1[~df1['city'].isin(df3['city'])] print(df)
Salida :
city temperature humidity 3 mumbai 30 75
Publicación traducida automáticamente
Artículo escrito por isitapol2002 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA