Función Pandas concat()

Pandas 通用函数Funciones comunes de Pandas


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 esTrue, 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 esNone。

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

import pandas as pd

# 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:

  1. pd.concat([s1, s2])Concatena verticalmente dos Series en una Serie más larga.
  2. Por defecto, se conservan los índices originales, por lo que habrá valores de índice duplicados 0, 1, 2.
  3. Al establecerignore_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

import pandas as pd

# 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:

  • Usandoaxis=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

import pandas as pd

# 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 puederesult['第一组']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

import pandas as pd

# 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)。

Consejo: 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.

Pandas 常用函数Funciones comunes de Pandas

Otras extensiones