Cómo concatenar dos Pandas DataFrames: ¡Explicado!
Published 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.
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:
- Convertir un Diccionario en un DataFrame en Pandas
- Acceder a Filas y Columnas en un DataFrame de Pandas Usando loc e iloc
- Agregar una Columna a un DataFrame de Pandas | Tutorial de Pandas
- Creación de un DataFrame en R | Tutorial de DataFrame de R
- Cambiar el Nombre de una O Varias Columnas en un DataFrame de Pandas | Tutorial de Pandas