Evite columnas duplicadas al unir dos Pandas DataFrames

La duplicación de columnas generalmente ocurre cuando los dos marcos de datos tienen columnas con el mismo nombre y cuando las columnas no se usan en la instrucción JOIN. En este artículo, analicemos los tres métodos diferentes en los que podemos evitar la duplicación de columnas al unir dos marcos de datos.

Sintaxis:

pandas.merge(left, right, how=’inner’, on=Ninguno, left_on=Ninguno, right_on=Ninguno)

Explicación:

  • izquierda : marco de datos que debe unirse desde la izquierda
  • derecha : marco de datos que debe unirse desde la derecha
  • cómo : especifica el tipo de combinación. izquierda, derecha, exterior, interior, cruz
  • on : nombres de columna para unir los dos marcos de datos.
  • left_on : nombres de columna para unirse en el DataFrame izquierdo.
  • right_on : nombres de columna para unirse en el DataFrame derecho.

Normalmente fusionar:

Cuando unimos un conjunto de datos usando la función pd.merge() con el tipo ‘interior’, la salida tendrá un prefijo y un sufijo adjuntos a las columnas idénticas en dos marcos de datos, como se muestra en la salida.

Python3

# import python pandas package
import pandas as pd
  
# import the numpy package
import numpy as np
  
# Create sample dataframe data1 and data2
data1 = pd.DataFrame(np.random.randint(1000, size=(1000, 3)),
                     columns=['EMI', 'Salary', 'Debt'])
data2 = pd.DataFrame(np.random.randint(1000, size=(1000, 3)),
                     columns=['Salary', 'Debt', 'Bonus'])
  
# Merge the DataFrames
merged = pd.merge(data1, data2, how='inner', left_index=True,
                  right_index=True)
print(merged)

Producción:

Método 1: use las columnas que tienen los mismos nombres en la declaración de combinación

En este enfoque para evitar que las columnas duplicadas se unan a los dos marcos de datos, el usuario simplemente necesita usar la función pd.merge() y pasar sus parámetros a medida que se unen usando la unión interna y los nombres de las columnas que se van a unir. de los marcos de datos izquierdo y derecho en python.

Ejemplo:

En este ejemplo, primero creamos un marco de datos de muestra data1 y data2 usando la función pd.DataFrame como se muestra y luego usando la función pd.merge() para unir los dos marcos de datos mediante unión interna y mencionar explícitamente los nombres de las columnas que se van a se unió desde los marcos de datos izquierdo y derecho.

Python3

# import python pandas package
import pandas as pd
  
# import the numpy package
import numpy as np
  
# Create sample dataframe data1 and data2
data1 = pd.DataFrame(np.random.randint(100, size=(1000, 3)),
                     columns=['EMI', 'Salary', 'Debt'])
data2 = pd.DataFrame(np.random.randint(100, size=(1000, 3)),
                     columns=['Salary', 'Debt', 'Bonus'])
  
# Merge the DataFrames
merged = pd.merge(data1, data2, how='inner', 
                  left_on=['Salary', 'Debt'],
                  right_on=['Salary', 'Debt'])
  
print(merged)

Producción:

Método 2: Evitar duplicados mencionando nombres de sufijos explícitos para columnas

En este método para evitar la duplicación al unir las columnas de los dos marcos de datos diferentes, el usuario debe usar la función pd.merge() que es responsable de unir las columnas del marco de datos, y luego el usuario debe llamar la función drop() con la condición requerida pasada como parámetro, como se muestra a continuación, para eliminar todos los duplicados del marco de datos final.

función soltar():

Esta función se usa para eliminar etiquetas específicas de filas o columnas.

Sintaxis:

DataFrame.drop(self, etiquetas=Ninguno, eje=0, índice=Ninguno, columnas=Ninguno, nivel=Ninguno, en el lugar=Falso, errores=’aumentar’)

Parámetros:

  • etiquetas: Índice o etiquetas de columna para soltar.
  • eje: Ya sea para eliminar etiquetas del índice (0 o ‘índice’) o columnas (1 o ‘columnas’). {0 o ‘índice’, 1 o ‘columnas’}
  • índice: Alternativa a especificar eje (etiquetas, eje=0 es equivalente a índice=etiquetas).
  • columnas: Alternativa a especificar eje (etiquetas, eje=1 es equivalente a columnas=etiquetas).
  • level: para MultiIndex, el nivel del que se eliminarán las etiquetas.
  • en el lugar: si es verdadero, realice la operación en el lugar y devuelva Ninguno.
  • errores: si se ‘ignora’, se suprime el error y solo se eliminan las etiquetas existentes.

Ejemplo:

En este ejemplo, estamos usando la función pd.merge() para unir los dos marcos de datos mediante unión interna. Ahora, agregue un sufijo llamado ‘eliminar’ para las columnas recién unidas que tienen el mismo nombre en ambos marcos de datos. Utilice la función drop() para eliminar las columnas con el sufijo ‘eliminar’. Esto asegurará que no existan columnas idénticas en el nuevo marco de datos.

Python3

# import python pandas package
import pandas as pd
  
# import the numpy package
import numpy as np
  
# Create sample dataframe data1 and data2
data1 = pd.DataFrame(np.random.randint(100, size=(1000, 3)),
                     columns=['EMI', 'Salary', 'Debt'])
data2 = pd.DataFrame(np.random.randint(100, size=(1000, 3)),
                     columns=['Salary', 'Debt', 'Bonus'])
  
# Merge the DataFrames
df_merged = pd.merge(data1, data2, how='inner', left_index=True,
                     right_index=True, suffixes=('', '_remove'))
  
# remove the duplicate columns
df_merged.drop([i for i in df_merged.columns if 'remove' in i],
               axis=1, inplace=True)
  
print(merged)

Producción:

Método 3: elimine las columnas duplicadas antes de fusionar dos columnas

En este método, el usuario necesita llamar a la función merge() que simplemente unirá las columnas del marco de datos y luego el usuario necesita llamar a la función difference() para eliminar las columnas idénticas de ambos marcos de datos y conservar el únicos en el lenguaje python.

Función de diferencia:

Esta función devuelve un conjunto que contiene la diferencia entre dos conjuntos.

Sintaxis:

set.difference(set)

Parámetros:

  • conjunto: El conjunto para verificar las diferencias en

Ejemplo:

En este ejemplo. estamos utilizando la función de diferencia para eliminar las columnas idénticas de los marcos de datos dados y almacenar aún más el marco de datos con la columna única como un nuevo marco de datos. Ahora, use la función pd.merge() para unir el marco de datos izquierdo con el marco de datos de la columna única usando la unión ‘interna’. Esto garantizará que no se dupliquen columnas en el conjunto de datos fusionado.

Python3

# import python pandas package
import pandas as pd
  
# import the numpy package
import numpy as np
  
# Create sample dataframe data1 and data2
data1 = pd.DataFrame(np.random.randint(100, size=(1000, 3)),
                     columns=['EMI', 'Salary', 'Debt'])
data2 = pd.DataFrame(np.random.randint(100, size=(1000, 3)),
                     columns=['Salary', 'Debt', 'Bonus'])
  
# Find the columns that aren't in the first DataFrame
different_cols = data2.columns.difference(data1.columns)
  
# Filter out the columns that are different.
# You could pass in the df2[diff_cols] 
# directly into the merge as well.
data3 = data2[diff_cols]
  
# Merge the DataFrames
df_merged = pd.merge(data1, data3, left_index=True,
                     right_index=True, how='inner')

Producción:

Publicación traducida automáticamente

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