Come risolvere il problema: valueerror: impossibile definire una riga con colonne non corrispondenti


Un errore che potresti riscontrare quando usi i panda è:

 ValueError : cannot set a row with mismatched columns

Questo errore si verifica quando si tenta di aggiungere una nuova riga a un DataFrame panda ma il numero di valori nella nuova riga non corrisponde al numero di colonne nel DataFrame esistente.

L’esempio seguente mostra come correggere questo errore nella pratica.

Come riprodurre l’errore

Supponiamo di creare il seguente DataFrame panda:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28, 22],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4, 8],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12, 9]})

#view DataFrame
df

	team points assists rebounds
0 A 18 5 11
1 B 22 7 8
2 C 19 7 10
3 D 14 9 6
4 E 14 12 6
5 F 11 9 5
6 G 20 9 9
7:28 4 12
8 I 22 8 9

Supponiamo ora di provare ad aggiungere una nuova riga alla fine del DataFrame:

 #define new row to append
new_team = ['I', 30]

#append row to DataFrame
df. loc [ len (df)] = new_team

#view updated DataFrame
df

ValueError : cannot set a row with mismatched columns

Riceviamo un ValueError perché la nuova riga che stiamo tentando di aggiungere ha solo due valori, ma il DataFrame esistente ha quattro colonne.

Come correggere l’errore

Il modo più semplice per correggere questo errore è utilizzare la funzione append() per aggiungere il ritorno a capo alla fine del DataFrame, che riempirà automaticamente i valori mancanti con NaN:

La seguente sintassi mostra come utilizzare questa funzione nella pratica:

 #define new row to append
new = ['J', 30]

#append row to end of DataFrame
df = df. append ( pd.Series (new,index= df.columns [: len (new)]), ignore_index= True )

#view updated DataFrame
df

	team points assists rebounds
0 to 18 5.0 11.0
1 B 22 7.0 8.0
2 C 19 7.0 10.0
3 D 14 9.0 6.0
4 E 14 12.0 6.0
5 F 11 9.0 5.0
6 G 20 9.0 9.0
7:28 a.m. 4.0 12.0
8 I 22 8.0 9.0
9 D 30 NaN NaN

Tieni presente che non stiamo ricevendo alcun ValueError e la nuova riga è stata aggiunta alla fine del DataFrame.

Si noti inoltre che i due valori mancanti nella nuova riga sono stati semplicemente riempiti con valori NaN.

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in Python:

Come risolvere il problema: le colonne si sovrappongono ma non è specificato alcun suffisso
Come risolvere il problema: l’oggetto “numpy.ndarray” non ha un attributo “append”.
Come risolvere il problema: se utilizzi tutti i valori scalari, devi passare un indice

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *