Come risolvere il problema in panda: keyerror: “['label'] non trovato nell'asse”
Un errore che potresti riscontrare quando usi i panda è:
KeyError : "['Label'] not found in axis"
Questo errore in genere si verifica quando si tenta di rimuovere una colonna da un DataFrames panda e si dimentica di specificare axis=1 .
Per impostazione predefinita, l’argomento dell’asse è impostato su 0 , che si riferisce alle linee. Devi specificare axis=1 per dire ai panda di guardare le colonne.
L’esempio seguente mostra come correggere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di avere i seguenti panda DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4], ' points ': [11, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame print (df) team assists points 0 to 5 11 1 to 7 8 2 to 7 10 3 to 9 6 4 B 12 6 5 B 9 5 6 B 9 9 7 B 4 12
Supponiamo ora di provare a rimuovere la colonna “punti” dal DataFrame:
#attempt to drop "points" column
df_new = df. drop (' points ')
KeyError : "['points'] not found in axis"
Per impostazione predefinita, la funzione drop() utilizza axis=0 , che si riferisce alle righe del DataFrame.
Poiché non esiste un nome di riga chiamato “punti”, riceviamo un errore.
Come correggere l’errore
Per dire ai panda di guardare invece le colonne, dobbiamo specificare axis=1 come segue:
#drop "points" column
df_new = df. drop (' points ', axis= 1 )
#view updated DataFrame
print (df)
team assists
0 to 5
1 to 7
2 to 7
3 to 9
4 B 12
5 B 9
6 B 9
7 B 4
Tieni presente che la colonna “punti” è stata rimossa dal DataFrame e non riceviamo alcun errore.
Questo perché abbiamo usato axis=1 , quindi i panda sapevano di guardare i nomi delle colonne per i “punti” quando decidevano quali valori rimuovere dal DataFrame.
Risorse addizionali
I seguenti tutorial spiegano come correggere altri errori comuni in Python:
Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme