Función Pandas DataFrame DataFrame.append()

Suraj Joshi 16 febrero 2024
  1. Sintaxis de pandas.DataFrame.append() Método:
  2. Códigos de ejemplo: Agrega dos DataFrames con pandas.DataFrame.append()
  3. Códigos de ejemplo: Añade los DataFrames e ignora el índice con pandas.DataFrame.append()
  4. Establezca verify_integrity=True en el método DataFrame.append()
  5. Códigos de ejemplo: Agregar DataFrame con Columna(s) Diferente(s)
Función Pandas DataFrame DataFrame.append()

El método pandas.DataFrame.append() toma un DataFrame como entrada y fusiona sus filas con filas de DataFrame llamando al método finalmente devolviendo un nuevo DataFrame. Si alguna columna en el DataFrame de entrada no está presente en el DataFrame que llama, entonces las columnas se añaden al DataFrame, y los valores que faltan se establecen como NaN.

Sintaxis de pandas.DataFrame.append() Método:

DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=False)

Parámetros

other Input DataFrame o Series, o Diccionario de Python cuyas filas deben ser anexadas
ignore_index Booleana. Si True, los índices del DataFrame original son ignorados. El valor por defecto es False, lo que significa que se utilizan los índices.
verify_integrity Booleana. Si True, sube ValueError al crear el índice con los duplicados. El valor por defecto es False.
sort Booleana. Ordena el original y el otro DataFrame si las columnas no están alineadas.

Códigos de ejemplo: Agrega dos DataFrames con pandas.DataFrame.append()

import pandas as pd

names_1=['Hisila', 'Brian','Zeppy']
salary_1=[23,30,21]

names_2=['Ram','Shyam',"Hari"]
salary_2=[22,23,31]

df_1 = pd.DataFrame({'Name': names_1, 'Salary': salary_1})
df_2 = pd.DataFrame({'Name': names_2, 'Salary': salary_2})


merged_df = df_1.append(df_2)
print(merged_df)

Resultado:

     Name  Salary
0  Hisila      23
1   Brian      30
2   Zeppy      21
    Name  Salary
0    Ram      22
1  Shyam      23
2   Hari      31
     Name  Salary
0  Hisila      23
1   Brian      30
2   Zeppy      21
0     Ram      22
1   Shyam      23
2    Hari      31

Añade df_2 al final de df_1 y devuelve merged_df fusionando filas de ambos DataFrames. Aquí, los índices de merged_df son los mismos que sus DataFrames padres.

Códigos de ejemplo: Añade los DataFrames e ignora el índice con pandas.DataFrame.append()

import pandas as pd

names_1=['Hisila', 'Brian','Zeppy']
salary_1=[23,30,21]

names_2=['Ram','Shyam',"Hari"]
salary_2=[22,23,31]

df_1 = pd.DataFrame({'Name': names_1, 'Salary': salary_1})
df_2 = pd.DataFrame({'Name': names_2, 'Salary': salary_2})

merged_df = df_1.append(df_2,ignore_index=True)

print(df_1)
print(df_2)
print( merged_df)

Resultado:

     Name  Salary
0  Hisila      23
1   Brian      30
2   Zeppy      21
    Name  Salary
0    Ram      22
1  Shyam      23
2   Hari      31
     Name  Salary
0  Hisila      23
1   Brian      30
2   Zeppy      21
3     Ram      22
4   Shyam      23
5    Hari      31

Añade df_2 al final de df_1 y aquí el merged_df obtiene índices completamente nuevos usando el argumento ignore_index=True en el método append().

Establezca verify_integrity=True en el método DataFrame.append()

Si ponemos verify_integrity=True en el método append(), obtenemos el ValueError para los índices duplicados.

import pandas as pd

names_1=['Hisila', 'Brian','Zeppy']
salary_1=[23,30,21]

names_2=['Ram','Shyam',"Hari"]
salary_2=[22,23,31]

df_1 = pd.DataFrame({'Name': names_1, 'Salary': salary_1})
df_2 = pd.DataFrame({'Name': names_2, 'Salary': salary_2})

merged_df = df_1.append(df_2,verify_integrity=True)

print(df_1)
print(df_2)
print( merged_df)

Resultado:

ValueError: Indexes have overlapping values: Int64Index([0, 1, 2], dtype='int64')

Genera un ValueError porque los elementos en “ff_1” y “ff_2” tienen los mismos índices por defecto. Para evitar este error, usamos el valor por defecto de verify_integrity, es decir, verify_integrity=False.

Códigos de ejemplo: Agregar DataFrame con Columna(s) Diferente(s)

Si añadimos un DataFrame con una columna diferente, esta columna se añade al DataFrame resultante, y las celdas correspondientes de las columnas inexistentes en el original o el otro DataFrame se establecen como NaN.

import pandas as pd

names_1=['Hisila', 'Brian','Zeppy']
salary_1=[23,30,21]

names_2=['Ram','Shyam',"Hari"]
salary_2=[22,23,31]
Age=[30,31,33]

df_1 = pd.DataFrame({'Name': names_1, 'Salary': salary_1})
df_2 = pd.DataFrame({'Name': names_2, 'Salary': salary_2,"Age":Age})

merged_df = df_1.append(df_2, sort=False)

print(df_1)
print(df_2)
print( merged_df)

Resultado:

     Name  Salary
0  Hisila      23
1   Brian      30
2   Zeppy      21
    Name  Salary  Age
0    Ram      22   30
1  Shyam      23   31
2   Hari      31   33
     Name  Salary   Age
0  Hisila      23   NaN
1   Brian      30   NaN
2   Zeppy      21   NaN
0     Ram      22  30.0
1   Shyam      23  31.0
2    Hari      31  33.0

Aquí, las filas de df_1 obtienen valores NaN para la columna Age porque la columna Age está presente sólo en df_2.

También establecemos sort=False para silenciar la advertencia de que la ordenación será desaprobada en la futura versión de Pandas.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Pandas DataFrame