Pandas: encuentra la diferencia entre dos marcos de datos

En este artículo, discutiremos cómo comparar dos DataFrames en pandas. Primero, creemos dos DataFrames.

Creando dos marcos de datos

Python3

import pandas as pd
  
  
# first dataframe
df1 = pd.DataFrame({
    'Age': ['20', '14', '56', '28', '10'],
    'Weight': [59, 29, 73, 56, 48]})
display(df1)
  
# second dataframe
df2 = pd.DataFrame({
    'Age': ['16', '20', '24', '40', '22'],
    'Weight': [55, 59, 73, 85, 56]})
display(df2)

Producción:

comapre dataframe pandas python

Comprobando si dos marcos de datos son exactamente iguales

Al usar la función equals() podemos verificar directamente si df1 es igual a df2. Esta función se utiliza para determinar si dos objetos de marco de datos en consideración son iguales o no. A diferencia del método dataframe.eq(), el resultado de la operación es un valor booleano escalar que indica si los objetos del marco de datos son iguales o no.

Sintaxis:

Marco de datos.equals(df)

Ejemplo:

Python3

df1.equals(df2)

Producción:

False

También podemos verificar una columna en particular también.

Ejemplo:

Python3

df2['Age'].equals(df1['Age'])

Producción:

False

Encontrar las filas comunes entre dos DataFrames

Podemos usar la función merge() o la función concat()

  • La función merge() sirve como punto de entrada para todas las operaciones estándar de combinación de bases de datos entre objetos DataFrame. La función de combinación es similar a la combinación interna de SQL, encontramos las filas comunes entre dos marcos de datos. 
  • La función concat() hace todo el trabajo pesado de realizar operaciones de concatenación junto con un eje de objetos Pandas mientras realiza una lógica de conjunto opcional (unión o intersección) de los índices (si los hay) en los otros ejes.

Ejemplo 1: Uso de la función de combinación

Python3

df = df1.merge(df2, how = 'inner' ,indicator=False)
df

Producción:

Ejemplo 2: Uso de la función concat

Agregamos el segundo marco de datos (df2) debajo del primer marco de datos (df1) usando la función concat. Luego agrupamos por el nuevo marco de datos usando columnas y luego vemos qué filas tienen un conteo mayor a 1. Estas son las filas comunes. Así es como podemos usar-

Python3

df = pd.concat([df1, df2])
  
df = df.reset_index(drop=True)
  
df_group = df.groupby(list(df.columns))
  
idx = [x[0] for x in df_group.groups.values() if len(x) > 1]
df.reindex(idx)

Producción:

Encontrar las filas poco comunes entre dos DataFrames

Hemos visto cómo podemos obtener las filas comunes entre dos marcos de datos. Ahora, para filas poco comunes, podemos usar la función concat con un parámetro drop_duplicate. 

Ejemplo:

Python3

pd.concat([df1,df2]).drop_duplicates(keep=False)

Producción:

Publicación traducida automáticamente

Artículo escrito por vanisinghal0201 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 *