Funzione Pandas DataFrame DataFrame.append()

Suraj Joshi 16 febbraio 2024
  1. Sintassi del metodo pandas.DataFrame.append():
  2. Codici di esempio: aggiungi due DataFrame con pandas.DataFrame.append()
  3. Codici di esempio: aggiungi DataFrames e ignora l’indice con pandas.DataFrame.append()
  4. Imposta verify_integrity=True nel metodo DataFrame.append()
  5. Codici di esempio: Aggiungi dataframe con colonne diverse
Funzione Pandas DataFrame DataFrame.append()

pandas.DataFrame.append() prende un DataFrame come input e unisce le sue righe con le righe di DataFrame chiamando il metodo che alla fine restituisce un nuovo DataFrame. Se una colonna nell’input DataFrame non è presente nel chiamante DataFrame, le colonne vengono aggiunte a DataFrame ei valori mancanti vengono impostati su NaN.

Sintassi del metodo pandas.DataFrame.append():

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

Parametri

other Input DataFrame o Series o Python Dictionary-like le cui righe devono essere aggiunte
ignore_index Booleano. Se True, gli indici del DataFrame originale vengono ignorati. Il valore predefinito è False, il che significa che vengono utilizzati gli indici.
verify_integrity Booleano. Se True, solleva ValueError durante la creazione di un indice con duplicati. Il valore predefinito è False.
sort Booleano. Ordina l’originale e l’altro DataFrame se le colonne non sono allineate.

Codici di esempio: aggiungi due DataFrame 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)

Produzione:

     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

Aggiunge df_2 alla fine di df_1 e restituisce merged_df che unisce le righe di entrambi i DataFrame. Qui, gli indici di merged_df sono gli stessi dei DataFrame principali.

Codici di esempio: aggiungi DataFrames e ignora l’indice 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)

Produzione:

     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

Aggiunge df_2 alla fine di df_1 e qui merged_df ottiene indici completamente nuovi utilizzando l’argomento ignore_index=True nel metodo append().

Imposta verify_integrity=True nel metodo DataFrame.append()

Se impostiamo verify_integrity=True nel metodo append(), otteniamo ValueError per gli indici duplicati.

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)

Produzione:

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

Genera un ValueError perché gli elementi in df_1 e df_2 hanno gli stessi indici di default. Per evitare questo errore, utilizziamo il valore predefinito di verify_integrity cioè verify_integrity=False.

Codici di esempio: Aggiungi dataframe con colonne diverse

Se aggiungiamo un DataFrame con una colonna diversa, questa colonna viene aggiunta al risultato DataFrame e le celle corrispondenti delle colonne non esistenti nell’originale o nell’altro DataFrame vengono impostate come 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)

Produzione:

     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

Qui, le righe di df_1 ottengono valori NaN per la colonna Age perché la colonna Age è presente solo in df_2.

Abbiamo anche impostato sort=False per silenziare l’avvertimento che l’ordinamento sarà deprecato nella futura versione di Pandas.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Pandas DataFrame