Combinar dos Pandas DataFrames con condiciones complejas

En este artículo, analicemos cómo fusionar dos marcos de datos de Pandas con algunas condiciones complejas. Los marcos de datos en Pandas se pueden fusionar usando el método pandas.merge() .

Sintaxis:

pandas.merge(parámetros)

Devoluciones: un marco de datos de los dos objetos combinados.

Mientras se trabaja en conjuntos de datos, es posible que sea necesario fusionar dos marcos de datos con algunas condiciones complejas. A continuación se muestran algunos ejemplos de la fusión de dos marcos de datos con algunas condiciones complejas.

Ejemplo 1 :

Fusionar dos marcos de datos con la función merge() con los parámetros como los dos marcos de datos. 

Python3

# importing pandas as pd
import pandas as pd
  
# creating dataframes
df1 = pd.DataFrame({'ID': [1, 2, 3, 4], 
                    'Name': ['John', 'Tom', 'Simon', 'Jose']})
  
df2 = pd.DataFrame({'ID': [1, 2, 3, 5], 
                    'Class': ['Second', 'Third', 'Fifth', 'Fourth']})
  
# merging df1 and df2 with merge function
df = pd.merge(df1, df2)
print(df)

Producción : 

Ejemplo 2:

Fusionar dos marcos de datos con la función merge() en algún nombre de columna específico de los marcos de datos.

Python3

# importing pandas as pd
import pandas as pd
  
# creating dataframes
df1 = pd.DataFrame({'Name': ['John', 'Tom', 'Simon', 'Jose'],
                    'Age': [5, 6, 4, 5]})
  
df2 = pd.DataFrame({'Name': ['John', 'Tom', 'Jose'],
                    'Class': ['Second', 'Third', 'Fifth']})
  
# merging df1 and df2 with merge function 
# with the common column as Name
df = pd.merge(df1, df2, on='Name')
print(df)

Producción : 

Ejemplo 3:

Fusionar dos marcos de datos con todos los valores en el primer marco de datos y NaN para los valores no coincidentes del segundo marco de datos. Se puede hacer lo mismo para fusionar con todos los valores del segundo marco de datos, lo que tenemos que hacer es dar la posición del marco de datos cuando se fusiona como izquierda o derecha.

Python3

# importing pandas as pd
import pandas as pd
  
# creating dataframes
df1 = pd.DataFrame({'Name': ['John', 'Tom', 'Simon', 'Jose'], 
                    'Age': [5, 6, 4, 5]})
  
df2 = pd.DataFrame({'Name': ['John', 'Tom', 'Jose'],
                    'Class': ['Second', 'Third', 'Fifth']})
  
# merging df1 and df2 with merge function 
# with the common column as Name
df = pd.merge(df1, df2, on='Name', how="left")
print(df)

Producción : 

Ejemplo 4:

Fusionar dos marcos de datos con todos los valores de ambos marcos de datos usando la función de combinación con una combinación externa. Se puede hacer lo mismo para unir dos marcos de datos con unión interna también.

Python3

# importing pandas as pd
import pandas as pd
  
# creating dataframes
df1 = pd.DataFrame({'Name':['John', 'Tom', 'Simon', 'Jose'],
                    'Age':[5, 6, 4, 5]})
  
df2 = pd.DataFrame({'Name':['John', 'Tom', 'Philip'],
                    'Class':['Second', 'Third', 'Fifth']})
  
# merging df1 and df2 with merge function 
# with the records of both the dataframes
df = pd.merge(df1, df2, how = "outer")
print(df)

Producción : 

Ejemplo 5: 

Combinar marcos de datos con el valor del indicador para ver qué marco de datos tiene ese registro en particular.

Python3

# importing pandas as pd
import pandas as pd
  
# creating dataframes
df1 = pd.DataFrame({'Name':['John', 'Tom', 'Simon', 'Jose'],
                    'Age':[5, 6, 4, 5]})
  
df2 = pd.DataFrame({'Name':['John', 'Tom', 'Simon', 'Tom'],
                    'Class':['Second', 'Third', 'Fifth', 'Fourth']})
  
# merging df1 and df2 with merge function 
# with the records of both the dataframes
df = pd.merge(df1, df2, how = 'left', indicator = True)
print(df)

Producción : 

Ejemplo 6:

Fusionar marcos de datos con la relación de uno a muchos en los dos marcos de datos. Se puede hacer lo mismo para fusionarse con el tipo de relación muchos a muchos, uno a uno y uno a muchos.

Python3

# importing pandas as pd
import pandas as pd
  
# creating dataframes
df1 = pd.DataFrame({'Name':['John', 'Tom', 'Simon', 'Jose'],
                    'Age':[5, 6, 4, 5]})
  
df2 = pd.DataFrame({'Name':['John', 'Tom', 'Simon', 'Tom'],
                    'Class':['Second', 'Third', 'Fifth', 'Fourth']})
  
# merging df1 and df2 with merge function with 
# the one to many relations from both the dataframes
df = pd.merge(df1, df2, validate = 'one_to_many')
print(df)

Producción : 

Publicación traducida automáticamente

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