Come risolvere il problema: la lunghezza dei valori non corrisponde alla lunghezza dell'indice


Un errore che potresti riscontrare quando usi i panda è:

 ValueError: Length of values does not match length of index

Questo errore si verifica quando si tenta di assegnare un array di valori NumPy a una nuova colonna in un DataFrame panda, ma la lunghezza dell’array non corrisponde alla lunghezza corrente dell’indice.

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

#define DataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14],
                   ' assists ': [5, 7, 13, 12]})

#view DataFrame
print (df)

   assist points
0 25 5
1 12 7
2 15 13
3 14 12

Ora diciamo di provare ad aggiungere una nuova colonna chiamata “bounces” come array NumPy:

 import numpy as np

#attempt to add 'rebounds' column
df[' rebounds '] = np. array ([3, 3, 7])

ValueError : Length of values (3) does not match length of index (4)

Riceviamo un ValueError perché stiamo provando ad aggiungere un array NumPy di lunghezza 3 a un DataFrame che ha un indice di lunghezza 4 .

Come correggere l’errore

Il modo più semplice per correggere questo errore è creare semplicemente una nuova colonna utilizzando una serie Panda anziché un array NumPy.

Per impostazione predefinita, se la lunghezza della serie panda non corrisponde alla lunghezza dell’indice DataFrame, verranno inseriti i valori NaN:

 #create 'rebounds' column
df[' rebounds '] = pd. Series ([3, 3, 7])

#view updated DataFrame
df

	points assists rebounds
0 25 5 3.0
1 12 7 3.0
2 15 13 7.0
3 14 12 NaN

Utilizzando una serie di panda possiamo aggiungere con successo la colonna “rimbalzi” e i valori mancanti vengono semplicemente riempiti con NaN.

Tieni presente che possiamo convertire rapidamente i valori NaN in un altro valore (come zero) utilizzando il metodo fillna() come segue:

 #fill in NaN values with zero
df = df. fillna (0)

#view updated DataFrame
df

points assists rebounds
0 25 5 3.0
1 12 7 3.0
2 15 13 7.0
3 14 12 0.0

Si noti che il valore NaN è stato convertito in zero.

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

Aggiungi un commento

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