Skip to content

Cómo concatenar dos Pandas DataFrames: ¡Explicado!

Updated on

Pandas es una de las herramientas de código abierto más populares para la Ciencia de Datos. Ofrece estructuras de DataFrame que ofrecen un alto rendimiento para la manipulación, limpieza, análisis y visualización de datos tabulares. En Pandas, es común tener que fusionar dos o más DataFrames para lograr algún tipo de análisis en los datos. Podemos lograr esto combinando los DataFrames ya sea horizontal o verticalmente. Aquí, ilustraremos y discutiremos ambos métodos en detalle.

¿Quieres crear rápidamente visualizaciones de datos a partir de Pandas Dataframe en Python sin código?

PyGWalker es una biblioteca en Python para el Análisis Exploratorio de Datos con Visualización. PyGWalker (opens in a new tab) puede simplificar tu flujo de trabajo de análisis y visualización de datos en el cuaderno Jupyter, convirtiendo tus marcos de datos de pandas (y marcos de datos de polars) en una interfaz de usuario estilo Tableau para la exploración visual.

PyGWalker para visualización de datos (opens in a new tab)

Concatenando dos DataFrames verticalmente

En Pandas, dos DataFrames se pueden concatenar usando el método concat(). Para demostrar esto, comenzaremos creando dos DataFrames de ejemplo. En el primer DataFrame de muestra, digamos que tenemos información sobre algunos empleados en una empresa:

import pandas as pd
 
# Creando DataFrame 1
df1 = pd.DataFrame({
    'Nombre': ['John', 'Jack', 'Steve', 'Sarah'],
    'Edad': [24, 32, 19, 29],
    'Género': ['M', 'M', 'M', 'F']
})

Esto creará un DataFrame que se ve así:

    Nombre    Edad    Género
0   John      24      M
1   Jack      32      M
2   Steve     19      M
3   Sarah     29      F

Digamos que tenemos otro DataFrame que contiene información sobre los departamentos en la empresa:

# Creando DataFrame 2
df2 = pd.DataFrame({
    'Departamento': ['Marketing', 'Ventas', 'Recursos Humanos'],
    'Empleados': [15, 12, 10],
})

Esto creará un DataFrame que se ve así:

        Departamento      Empleados
0       Marketing          15
1           Ventas          12
2   Recursos Humanos       10

Ahora, podemos usar el método concat() para combinar los dos DataFrames verticalmente:

# Concatenando verticalmente
df3 = pd.concat([df1, df2], axis=0)

Aquí, el parámetro axis=0 denota que queremos concatenar los DataFrames apilándolos uno encima del otro (es decir, verticalmente). Después de la concatenación, obtenemos la siguiente salida:

    Nombre  Edad    Género  Departamento        Empleados
0   John    24      M       NaN             NaN
1   Jack    32      M       NaN             NaN  
2   Steve   19      M       NaN             NaN
3   Sarah   29      F       NaN             NaN
0   NaN     NaN     NaN     Marketing       15
1   NaN     NaN     NaN     Ventas          12
2   NaN     NaN     NaN     Recursos Humanos 10

Podemos ver que los dos DataFrames se concatenan como se desea, pero hay algunos valores NaN (nulos) en el nuevo DataFrame donde los nombres de las columnas no coinciden. Podemos eliminar esas filas si no se ajustan a nuestro análisis de datos, o podemos proporcionar algunos valores predeterminados para llenar los valores nulos.

Concatenando dos DataFrames horizontalmente

También podemos concatenar dos DataFrames horizontalmente (es decir, combinarlos uno al lado del otro) usando el método concat(), así:

# Concatenando horizontalmente
df4 = pd.concat([df1, df2], axis=1)

Aquí, el parámetro axis=1 denota que queremos concatenar los DataFrames poniéndolos uno al lado del otro (es decir, horizontalmente). Después de conConcatenación, obtenemos la siguiente salida:

    Name    Age Gender     Department   Employees
0   John    24     M        Marketing      15
1   Jack    32     M        Sales          12
2   Steve   19     M        Human Resources 10
3   Sarah   29     F        NaN             NaN

Podemos ver que los dos DataFrames se concatenan horizontalmente según lo deseado. Sin embargo, tenemos algunos valores NaN (nulos) en el nuevo DataFrame donde los nombres de las filas no coinciden. Nuevamente, podemos eliminar esas filas si no se ajustan a nuestro análisis de datos, o podemos proporcionar algunos valores predeterminados para llenar los valores nulos.

Concatenar DataFrames con Columnas Diferentes

¿Qué sucede si los dos DataFrames que se van a concatenar tienen columnas diferentes? En tales casos, Pandas identificará los nombres de las columnas que no coinciden y los agregará al nuevo DataFrame como columnas separadas. Veámoslo con un ejemplo:

# Creating DataFrame with different columns
df5 = pd.DataFrame({
    'Employee Name': ['John', 'Jack', 'Steve', 'Sarah'],
    'Employee Age': [24, 32, 19, 29],
    'Job Title': ['Manager', 'Assistant', 'Clerk', 'Executive']
})

Esto creará un DataFrame que se ve así:

    Employee Name   Employee Age    Job Title
0       John          24             Manager
1       Jack          32             Assistant
2       Steve         19             Clerk
3       Sarah         29             Executive

Ahora podemos concatenar df1 y df5:

# Concatenate df1 and df5
df6 = pd.concat([df1, df5], axis=1)

Después de la concatenación, obtenemos la siguiente salida:

    Name    Age Gender  Employee Name   Employee Age    Job Title
0   John    24     M       John          24             Manager
1   Jack    32     M       Jack          32             Assistant
2   Steve   19     M       Steve         19             Clerk
3   Sarah   29     F       Sarah         29             Executive

Como podemos ver, Pandas concatena los dos DataFrames agregando las columnas que no coinciden como columnas separadas en el nuevo DataFrame.

Ignorando el índice al concatenar DataFrames horizontalmente

Cuando se concatenan dos DataFrames horizontalmente, el DataFrame resultante conserva los índices originales de los dos DataFrames. Esto puede causar problemas mientras se trabaja con este nuevo DataFrame. Por lo tanto, puede ser necesario en algunos casos ignorar el índice al concatenar horizontalmente. Podemos lograr esto configurando el parámetro ignore_index en True mientras concatenamos:

# Concatenate df1 and df2, ignoring the index
df7 = pd.concat([df1, df2], axis=1, ignore_index=True)

Después de la concatenación, obtenemos la siguiente salida:

    0       1   2   3               4
0   John    24  M   Marketing      15
1   Jack    32  M   Sales          12
2   Steve   19  M   Human Resources 10
3   Sarah   29  F   NaN            NaN

Ahora el nuevo DataFrame tiene un nuevo índice, lo cual es más conveniente para un análisis de datos adicional.

Conclusión

La concatenación horizontal y vertical de Pandas DataFrames nos proporciona una manera eficiente de fusionar datos para el análisis. Con esta guía, hemos cubierto lo básico de la concatenación usando el método concat(). Con algo de práctica y más conocimiento de Pandas DataFrames, podrás tomar grandes cantidades de datos y convertirlos en ideas. Si estás interesado en aprender más sobre Pandas, echa un vistazo a nuestras páginas de tutoriales de Pandas a continuación: