Cómo apilar múltiples marcos de datos de Pandas

A menudo, es posible que desee apilar dos o más Pandas DataFrames. Afortunadamente, esto es fácil de hacer usando la función pandas concat () .

Este tutorial muestra varios ejemplos de cómo hacerlo.

Ejemplo 1: apilar dos marcos de datos de Pandas

El siguiente código muestra cómo «apilar» dos DataFrames de pandas uno encima del otro y crear un DataFrame:

importar pandas como pd

#create dos DataFrames
df1 = pd.DataFrame ({'jugador': ['A', 'B', 'C', 'D', 'E'],
                    'puntos': [12, 5, 13, 17, 27]})

df2 = pd.DataFrame ({'jugador': ['F', 'G', 'H', 'I', 'J'],
                    'puntos': [24, 26, 27, 27, 12]})

# "apile" los dos DataFrames juntos 
df3 = pd. concat ([df1, df2], ignore_index = True )

#ver DataFrame resultante
df3

	puntos de jugador
0 A 12
1 B 5
2 C 13
3 D 17
4 E 27
5 F 24
6 G 26
7 H 27
8 yo 27
9 J 12

Ejemplo 2: apilar tres marcos de datos de Pandas

Se puede usar un código similar para apilar tres DataFrames pandas uno encima del otro para crear un DataFrame:

importar pandas como pd

#create dos DataFrames
df1 = pd.DataFrame ({'jugador': ['A', 'B', 'C', 'D', 'E'],
                    'puntos': [12, 5, 13, 17, 27]})

df2 = pd.DataFrame ({'jugador': ['F', 'G', 'H', 'I', 'J'],
                    'puntos': [24, 26, 27, 27, 12]})

df3 = pd.DataFrame ({'jugador': ['K', 'L', 'M', 'N', 'O'],
                    'puntos': [9, 5, 5, 13, 17]})

# "apile" los dos DataFrames juntos 
df4 = pd. concat ([df1, df2, df3], ignore_index = True )

#ver DataFrame resultante
df4

        puntos de jugador
0 A 12
1 B 5
2 C 13
3 D 17
4 E 27
5 F 24
6 G 26
7 H 27
8 yo 27
9 J 12
10 K 9
11 L 5
12 M 5
13 N 13
14 O 172

La importancia de ignore_index

Tenga en cuenta que en los ejemplos anteriores usamos ignore_index = True . Esto le dice a los pandas que ignoren los números de índice en cada DataFrame y que creen un nuevo índice que va de 0 a n-1 para el nuevo DataFrame.

Por ejemplo, considere lo que sucede cuando no usamos ignore_index = True al apilar los siguientes dos DataFrames:

importar pandas como pd

#crea dos DataFrames con índices
df1 = pd.DataFrame ({'jugador': ['A', 'B', 'C', 'D', 'E'],
                    'puntos': [12, 5, 13, 17, 27]},
                    índice = [0, 1, 2, 3, 4])

df2 = pd.DataFrame ({'jugador': ['F', 'G', 'H', 'I', 'J'],
                    'puntos': [24, 26, 27, 27, 12]},
                    índice = [2, 4, 5, 6, 9])

# apilar los dos DataFrames juntos 
df3 = pd. concat ([df1, df2])

#ver DataFrame resultante
df3

        puntos de jugador
0 A 12
1 B 5
2 C 13
3 D 17
4 E 27
2 F 24
4 G 26
5 H 27
6 de 27
9 J 12

El DdataFrame resultante mantuvo sus valores de índice originales de los dos DataFrames. Por lo tanto, normalmente debe usar ignore_index = True cuando apila dos DataFrames a menos que tenga una razón específica para mantener los valores de índice originales.

Recursos adicionales

Cómo agregar una columna vacía a un DataFrame de Pandas
Cómo insertar una columna en un DataFrame de Pandas
Cómo exportar un DataFrame de Pandas a Excel

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:

La ayuda no cuesta nada

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

Deja un comentario

Una distribución multimodal es una distribución de probabilidad con dos o más modos. Si crea un histograma para visualizar una…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!