Función Pandas concat()
pd.concat()es una función de la biblioteca Pandas utilizada paraconcatenar (unir) múltiples Series o DataFramesEsta función puede fusionar múltiples objetos en un nuevo objeto a lo largo de las filas o las columnas.
Esta es una de las operaciones de combinación más comunes en el procesamiento de datos, ya sea para agregar datos verticalmente o combinar campos horizontalmente,pd.concat()puede manejarlo bien.
Definición de la palabra: concates la abreviatura de "concatenate" (conectar, enlazar), y significa unir varias cosas de extremo a extremo.
Sintaxis básica y parámetros
pd.concat()es una función de nivel superior de la biblioteca Pandas, utilizada para concatenar múltiples objetos Series o DataFrame a lo largo de un eje especificado.
Formato de sintaxis
pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False)
Descripción de parámetros
- Parámetro:
objs- Tipo: Series, DataFrame o una lista de ellos.
- Descripción: uno o más objetos Series/DataFrame a concatenar. Puede ser un solo objeto, una lista o un diccionario.
- Parámetro:
axis- Tipo: entero (0 o 1).
- Descripción: especifica el eje de concatenación.
0Representa la concatenación por filas (adición vertical),1Representa la concatenación por columnas (combinación horizontal). El valor predeterminado es0。
- Parámetro:
join- Tipo: cadena de texto ('outer' o 'inner').
- Descripción: método de manejo cuando los índices en el eje de concatenación no son consistentes.
'outer'Representa tomar la unión (conservar todos los índices),'inner'Representa tomar la intersección (conservar solo los índices comunes). El valor predeterminado es'outer'。
- Parámetro:
ignore_index- Tipo: valor booleano.
- Descripción: si es
True, después de la concatenación no se utiliza el índice original, sino que se crea un nuevo índice entero. El valor predeterminado esFalse。
- Parámetro:
keys- Tipo: secuencia.
- Descripción: se utiliza para crear un índice multinivel después de la concatenación, identificando el origen de cada objeto original. El valor predeterminado es
None。
Descripción de la función
- Valor de retorno: Devuelve un objeto Series o DataFrame concatenado. El tipo es el mismo que el de los objetos de entrada.
- Efecto: Fusiona varios objetos en un solo objeto a lo largo del eje especificado.
Ejemplos
A través de una serie de ejemplos de simples a complejos, dominaremos completamentepd.concat()el uso de pd.concat().
Ejemplo 1: Uso básico - Concatenación vertical de Series
Ejemplo
# 1. Crear dos Series
s1 = pd.Series(['Alice', 'Bob', 'Charlie'], name='name')
s2 = pd.Series(['Diana', 'Eve', 'Frank'], name='name')
print("=== Series original ===")
print("s1:", s1.tolist())
print("s2:", s2.tolist())
# 2. Usar pd.concat() para la concatenación vertical (por defecto axis=0)
result = pd.concat([s1, s2])
print("\n=== pd.concat([s1, s2]) resultado de concatenación vertical ===)
print(result)
# 3. Ignorar el índice original, crear un nuevo índice entero
result_ignore = pd.concat([s1, s2], ignore_index=True)
print("\n=== resultado de ignore_index=True ===)
print(result_ignore)
Resultado esperado:
=== 原始 Series === s1: ['Alice', 'Bob', 'Charlie'] s2: ['Diana', 'Eve', 'Frank'] === pd.concat([s1, s2]) 纵向拼接结果 === 0 Alice 1 Bob 2 Charlie 0 Diana 1 Eve 2 Frank dtype: object === ignore_index=True 结果 === 0 Alice 1 Bob 2 Charlie 3 Diana 4 Eve 5 Frank dtype: object
Análisis del código:
pd.concat([s1, s2])Concatena verticalmente dos Series en una Serie más larga.- Por defecto, se conservan los índices originales, por lo que habrá valores de índice duplicados 0, 1, 2.
- Al establecer
ignore_index=Truese puede regenerar un índice numérico consecutivo.
Ejemplo 2: Concatenación horizontal de DataFrame
Usandoaxis=1se pueden concatenar varios DataFrames por columnas, lo cual es muy útil cuando se necesitan combinar diferentes campos.
Ejemplo
# 1. Crear dos DataFrames
df1 = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35]
})
df2 = pd.DataFrame({
'city': ['Beijing', 'Shanghai', 'Guangzhou'],
'score': [85, 90, 95]
})
print(=== DataFrame original ===)
print("df1:")
print(df1)
print("\ndf2:")
print(df2)
# 2. Concatenación horizontal (axis=1)
result = pd.concat([df1, df2], axis=1)
print("\n=== pd.concat([df1, df2], axis=1) concatenación horizontal ===)
print(result)
Resultado esperado:
=== 原始 DataFrame ===
df1:
name age
0 Alice 25
1 Bob 30
2 Charlie 35
df2:
city score
0 Beijing 85
1 Shanghai 90
2 Guangzhou 95
=== pd.concat([df1, df2], axis=1) 横向拼接 ===
name age city score
0 Alice 25 Beijing 85
1 Bob 30 Shanghai 90
2 Charlie 35 Guangzhou 95
Análisis del código:
- Usando
axis=1se concatenan dos DataFrames por columnas. - La concatenación horizontal requiere que los dos DataFrames tengan el mismo número de filas (alineación de índices).
- El DataFrame resultante contiene todas las columnas de ambos objetos.
Ejemplo 3: Uso del parámetro keys para crear un índice jerárquico
keysEl parámetro keys nos ayuda a identificar el origen de los datos, lo cual es muy útil al combinar contenido de diferentes conjuntos de datos.
Ejemplo
# 1. Crear un diccionario que contenga múltiples Series
data = {
'group_a': pd.Series([1, 2, 3, 4]),
'group_b': pd.Series([5, 6, 7, 8]),
'group_c': pd.Series([9, 10, 11, 12])
}
print(=== Concatenación usando el parámetro keys ===)
# 2. Usar el parámetro keys para crear un índice jerárquico
result = pd.concat(data, keys=['Primer grupo', 'Segundo grupo', 'Tercer grupo'])
print(result)
# 3. Acceder a los datos de un nivel específico
print("\n=== Acceder a los datos del 'Primer grupo' ===)
print(result['Primer grupo'])
Resultado esperado:
=== 使用 keys 参数拼接 ===
第一组 group_a 1
group_b 2
group_c 3
group_a 4
第二组 group_a 5
group_b 6
group_c 7
group_a 8
第二组 group_b 9
...
Análisis del código:
keysEl parámetro keys crea un índice multinivel (índice jerárquico) para el resultado de la concatenación; el primer nivel identifica el grupo de origen de los datos.- Se puede
result['第一组']acceder a los datos de un grupo específico.
Ejemplo 4: Manejo de DataFrames con diferentes columnas (parámetro join)
Cuando los DataFrames a concatenar tienen diferentes columnas, se puede usarjoinel parámetro para controlar el método de procesamiento.
Ejemplo
# 1. Crear un DataFrame con diferentes columnas
df1 = pd.DataFrame({
'name': ['Alice', 'Bob'],
'age': [25, 30]
})
df2 = pd.DataFrame({
'name': ['Charlie', 'Diana'],
'score': [85, 90]
})
print(=== DataFrame original ===)
print("df1:")
print(df1)
print("\ndf2:")
print(df2)
# 2. Unión externa (por defecto) - conservar todas las columnas
print("\n=== join='outer' (combinación externa) ===)
print(pd.concat([df1, df2], join='outer'))
# 3. Unión interna - solo conservar columnas comunes
print("\n=== join='inner' (combinación interna) ===)
print(pd.concat([df1, df2], join='inner'))
Resultado esperado:
=== 原始 DataFrame ===
df1:
name age
0 Alice 25
1 Bob 30
df2:
name score
0 Charlie 85
1 Diana 90
=== join='outer' (外连接) ===
name age score
0 Alice 25.0 NaN
1 Bob 30.0 NaN
0 Charlie NaN 85.0
1 Diana NaN 90.0
=== join='inner' (内连接) ===
name
0 Alice
1 Bob
0 Charlie
1 Diana
Análisis del código:
join='outer'(por defecto) conserva todas las columnas, las columnas inexistentes se rellenan conNaN。join='inner'solo conserva las columnas comunes de los dos DataFrames (aquí esname)。
Otras extensionesConsejo:
pd.concat()es adecuado para operaciones de concatenación simples. Si necesita una combinación más compleja (como la coincidencia basada en valores de columna), consultepd.merge()la función.
Funciones comunes de Pandas