¿Cómo combinar dos marcos de datos en Python – Pandas?

Requisitos previos : Pandas

En muchas situaciones de la vida real, los datos que queremos usar vienen en varios archivos. A menudo tenemos la necesidad de combinar estos archivos en un solo DataFrame para analizar los datos. Pandas proporciona tales facilidades para combinar fácilmente Series o DataFrame con varios tipos de lógica de conjuntos para los índices y la funcionalidad de álgebra relacional en el caso de operaciones de tipo unión/fusión. Además, los pandas también brindan utilidades para comparar dos Series o DataFrame y resumir sus diferencias.

Concatenación de marcos de datos 

La función concat() en pandas se usa para agregar columnas o filas de un DataFrame a otro. La función concat() hace todo el trabajo pesado de realizar operaciones de concatenación a lo largo de un eje mientras realiza una lógica de conjunto opcional (unión o intersección) de los índices (si los hay) en los otros ejes.

Python3

import pandas as pd
# First DataFrame
df1 = pd.DataFrame({'id': ['A01', 'A02', 'A03', 'A04'],
                    'Name': ['ABC', 'PQR', 'DEF', 'GHI']})
  
# Second DataFrame
df2 = pd.DataFrame({'id': ['B05', 'B06', 'B07', 'B08'],
                    'Name': ['XYZ', 'TUV', 'MNO', 'JKL']})
  
  
frames = [df1, df2]
  
result = pd.concat(frames)
display(result)

Producción:

Unión de tramas de datos 

Cuando concatenamos nuestros DataFrames, simplemente los agregamos entre sí, es decir, los apilamos verticalmente o uno al lado del otro. Otra forma de combinar DataFrames es usar columnas en cada conjunto de datos que contengan valores comunes (una identificación única común). La combinación de DataFrames utilizando un campo común se denomina «unión». Las columnas que contienen los valores comunes se denominan «clave(s) de unión». Unir DataFrames de esta manera suele ser útil cuando un DataFrame es una «tabla de búsqueda» que contiene datos adicionales que queremos incluir en el otro.

Nota: Este proceso de unir tablas es similar a lo que hacemos con las tablas en una base de datos SQL.

Al unir varios DataFrames, tiene la opción de manejar los otros ejes (aparte del que se está concatenando). Esto se puede hacer de las siguientes dos maneras:

  • Toma la unión de todos ellos, join=’outer’. Esta es la opción predeterminada ya que da como resultado una pérdida de información cero.
  • Tome la intersección, join=’inner’.

Ejemplo:

Python3

import pandas as pd
  
df1 = pd.DataFrame({'id': ['A01', 'A02', 'A03', 'A04'],
                    'Name': ['ABC', 'PQR', 'DEF', 'GHI']})
  
df3 = pd.DataFrame({'City': ['MUMBAI', 'PUNE', 'MUMBAI', 'DELHI'],
                    'Age': ['12', '13', '14', '12']})
  
# the default behaviour is join='outer'
# inner join
  
result = pd.concat([df1, df3], axis=1, join='inner')
display(result)

Producción:

Concatenar usando append

Un atajo útil para concat() es el método de instancia append() en Series y DataFrame. Estos métodos en realidad son anteriores a concat. 

Ejemplo:

Python3

import pandas as pd
# First DataFrame
df1 = pd.DataFrame({'id': ['A01', 'A02', 'A03', 'A04'],
                    'Name': ['ABC', 'PQR', 'DEF', 'GHI']})
  
# Second DataFrame
df2 = pd.DataFrame({'id': ['B05', 'B06', 'B07', 'B08'],
                    'Name': ['XYZ', 'TUV', 'MNO', 'JKL']})
  
# append method
result = df1.append(df2)
display(result)

Producción:

Nota: append() puede tomar varios objetos para concatenar.

Ejemplo:

Python3

import pandas as pd
# First DataFrame
df1 = pd.DataFrame({'id': ['A01', 'A02', 'A03', 'A04'],
                    'Name': ['ABC', 'PQR', 'DEF', 'GHI']})
  
# Second DataFrame
df2 = pd.DataFrame({'id': ['B05', 'B06', 'B07', 'B08'],
                    'Name': ['XYZ', 'TUV', 'MNO', 'JKL']})
  
df3 = pd.DataFrame({'City': ['MUMBAI', 'PUNE', 'MUMBAI', 'DELHI'],
                    'Age': ['12', '13', '14', '12']})
  
  
# appending multiple DataFrame
result = df1.append([df2, df3])
display(result)

Producción:

Publicación traducida automáticamente

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