HOWTO · Pandas
Crea una colonna vuota in Pandas DataFrame
Possiamo aggiungere una colonna vuota a DataFrame in Pandas utilizzando semplici metodi di operatore di assegnazione, reindex(), assign() e insert().
In questa pagina
Per aggiungere una colonna vuota a un DataFrame pandas esistente in Python, usa df["NewColumn"] = "" per inserire testo vuoto oppure df["NewColumn"] = float("nan") per i valori mancanti (NaN). Entrambe le opzioni mantengono le righe e le altre colonne. Una stringa vuota è comunque un valore testuale: scegli la rappresentazione più adatta ai calcoli e ai filtri che userai in seguito.
Usa reindex() per aggiungere più colonne, assign() per ottenere un DataFrame con nuove colonne nominate oppure insert() per controllarne la posizione. Gli esempi richiedono pandas e NumPy.
Aggiungere una colonna vuota con l’assegnazione semplice
Assegnando uno scalare a una nuova colonna, il valore viene ripetuto per tutte le righe esistenti. L’assegnazione modifica direttamente df e aggiunge la nuova colonna a destra. Se il nome esiste già, l’assegnazione ne sostituisce i contenuti: per conservare i dati, scegli un nome nuovo.
Questo esempio confronta una stringa vuota, il valore indicante i dati mancanti di NumPy e una Series pandas vuota:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
import pandas as pd
import numpy as np
dates = ["April-20", "April-21", "April-22", "April-23", "April-24", "April-25"]
income = [10, 20, 10, 15, 10, 12]
expenses = [3, 8, 4, 5, 6, 10]
df = pd.DataFrame({"Date": dates, "Income": income, "Expenses": expenses})
df["Empty_1"] = ""
df["Empty_2"] = np.nan
df["Empty_3"] = pd.Series()
print(df)
Output:
Date Income Expenses Empty_1 Empty_2 Empty_3
0 April-20 10 3 NaN NaN
1 April-21 20 8 NaN NaN
2 April-22 10 4 NaN NaN
3 April-23 15 5 NaN NaN
4 April-24 10 6 NaN NaN
5 April-25 12 10 NaN NaN
Empty_1 contiene stringhe vuote, mentre Empty_2 contiene NaN. Quando assegni una Series, pandas allinea le etichette del suo indice con quelle delle righe del DataFrame. La Series vuota non ha etichette corrispondenti, quindi anche Empty_3 contiene valori mancanti in tutte le righe.
Per specificare anche il tipo, puoi usare df["NewColumn"] = pd.Series(index=df.index, dtype="float64"). Includere df.index rende esplicito l’allineamento desiderato. Per selezionare in seguito i valori mancanti, usa df["NewColumn"].isna() invece di confrontare i valori con NaN; per le stringhe vuote serve invece un confronto separato con "".
Aggiungere una colonna vuota con il metodo pandas.DataFrame.reindex()
Il metodo pandas.DataFrame.reindex() restituisce un DataFrame con le etichette e l’ordine delle colonne richiesti. Per impostazione predefinita, alle nuove etichette vengono assegnati valori mancanti. Fai attenzione: columns indica l’intero elenco di colonne del risultato, non soltanto quelle da aggiungere.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
import pandas as pd
import numpy as np
dates = ["April-20", "April-21", "April-22", "April-23", "April-24", "April-25"]
income = [10, 20, 10, 15, 10, 12]
expenses = [3, 8, 4, 5, 6, 10]
df = pd.DataFrame({"Date": dates, "Income": income, "Expenses": expenses})
column_names = ["Empty_1", "Empty_2", "Empty_3"]
df = df.reindex(columns=column_names)
print(df)
Output:
Empty_1 Empty_2 Empty_3
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
Il risultato mantiene le sei etichette di riga, ma elimina Date, Income ed Expenses. Se assegni il risultato a df, il riferimento originale viene sostituito.
Per mantenere i dati esistenti, parti da df.columns.tolist() e aggiungi i nuovi nomi. In questo modo conservi l’ordine delle colonne originali e inserisci le nuove a destra. Salva il DataFrame restituito: questo metodo non modifica l’oggetto originale sul posto. Esegui questo esempio:
import pandas as pd
import numpy as np
dates = ["April-20", "April-21", "April-22", "April-23", "April-24", "April-25"]
income = [10, 20, 10, 15, 10, 12]
expenses = [3, 8, 4, 5, 6, 10]
df = pd.DataFrame({"Date": dates, "Income": income, "Expenses": expenses})
df = df.reindex(columns=df.columns.tolist() + ["Empty_1", "Empty_2", "Empty_3"])
print(df)
Output:
Date Income Expenses Empty_1 Empty_2 Empty_3
0 April-20 10 3 NaN NaN NaN
1 April-21 20 8 NaN NaN NaN
2 April-22 10 4 NaN NaN NaN
3 April-23 15 5 NaN NaN NaN
4 April-24 10 6 NaN NaN NaN
5 April-25 12 10 NaN NaN NaN
Le date, le entrate e le spese originali restano presenti, seguite da tre colonne contenenti NaN. Scegli nomi non ancora presenti per evitare di richiedere etichette duplicate.
Aggiungere una colonna vuota a un DataFrame con pandas.DataFrame.assign()
Il metodo pandas.DataFrame.assign() restituisce un DataFrame con una o più colonne nominate. Ogni argomento per parola chiave specifica il nome di una colonna e i relativi valori. Conserva l’oggetto restituito, come in df = df.assign(...), oppure assegnalo a un altro nome per mantenere il DataFrame originale.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
import pandas as pd
import numpy as np
dates = ["April-20", "April-21", "April-22", "April-23", "April-24", "April-25"]
income = [10, 20, 10, 15, 10, 12]
expenses = [3, 8, 4, 5, 6, 10]
df = pd.DataFrame({"Date": dates, "Income": income, "Expenses": expenses})
df = df.assign(Empty_1="", Empty_2=np.nan)
print(df)
Output:
Date Income Expenses Empty_1 Empty_2
0 April-20 10 3 NaN
1 April-21 20 8 NaN
2 April-22 10 4 NaN
3 April-23 15 5 NaN
4 April-24 10 6 NaN
5 April-25 12 10 NaN
Empty_1 contiene stringhe vuote; solo Empty_2 contiene NaN. Le colonne esistenti restano invariate. Come nell’assegnazione diretta, specificare il nome di una colonna esistente ne sostituisce i valori nel DataFrame restituito.
Aggiungere una colonna vuota a un DataFrame con pandas.DataFrame.insert()
Usa pandas.DataFrame.insert() quando la posizione della colonna è importante. La sintassi è df.insert(loc, column, value): loc è la posizione della colonna, a partire da zero; column è la nuova etichetta; value è obbligatorio. Specifica "" per il testo vuoto o np.nan per i valori mancanti.
La posizione deve essere compresa tra 0 e len(df.columns), estremi inclusi; il limite superiore aggiunge la colonna in fondo. Per impostazione predefinita, l’inserimento di un’etichetta già esistente genera un errore. Passando allow_duplicates=True puoi usare un’etichetta duplicata, ma la selezione successiva delle colonne potrebbe risultare ambigua.
A differenza di assign() e reindex(), insert() modifica df sul posto e restituisce None. Non scrivere df = df.insert(...).
L’esempio seguente aggiunge due colonne in fondo:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
import pandas as pd
import numpy as np
dates = ["April-20", "April-21", "April-22", "April-23", "April-24", "April-25"]
income = [10, 20, 10, 15, 10, 12]
expenses = [3, 8, 4, 5, 6, 10]
df = pd.DataFrame({"Date": dates, "Income": income, "Expenses": expenses})
df.insert(3, "Empty_1", "")
df.insert(4, "Empty_2", np.nan)
print(df)
Output:
Date Income Expenses Empty_1 Empty_2
0 April-20 10 3 NaN
1 April-21 20 8 NaN
2 April-22 10 4 NaN
3 April-23 15 5 NaN
4 April-24 10 6 NaN
5 April-25 12 10 NaN
Empty_1 si trova in posizione 3 e contiene stringhe vuote. Dopo questo inserimento, la posizione 4 è disponibile per Empty_2, che contiene NaN. Per inserire invece una colonna all’inizio, usa loc=0: le colonne esistenti si spostano a destra senza cambiare i propri valori.