Oplossing: lengte van waarden komt niet overeen met indexlengte


Een fout die u kunt tegenkomen bij het gebruik van panda’s is:

 ValueError: Length of values does not match length of index

Deze fout treedt op wanneer u probeert een array van NumPy-waarden toe te wijzen aan een nieuwe kolom in een Panda DataFrame, maar de lengte van de array komt niet overeen met de huidige lengte van de index.

Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.

Hoe de fout te reproduceren

Stel dat we de volgende panda’s DataFrame hebben:

 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

Laten we nu zeggen dat we proberen een nieuwe kolom met de naam „bounces“ toe te voegen als een NumPy-array:

 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)

We ontvangen een ValueError omdat we proberen een NumPy-array met lengte 3 toe te voegen aan een DataFrame met een index met lengte 4 .

Hoe u de fout kunt oplossen

De eenvoudigste manier om deze fout op te lossen is door eenvoudigweg een nieuwe kolom te maken met behulp van een pandasreeks in plaats van een NumPy-array.

Als de lengte van de pandareeks niet overeenkomt met de lengte van de DataFrame-index, worden standaard de NaN-waarden ingevoerd:

 #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

Met behulp van een pandareeks kunnen we met succes de kolom „bounces“ toevoegen en worden de ontbrekende waarden eenvoudig gevuld met NaN.

Merk op dat we NaN-waarden snel naar een andere waarde (zoals nul) kunnen converteren met behulp van de fillna()- methode, als volgt:

 #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

Merk op dat de NaN-waarde is omgezet naar nul.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:

Hoe KeyError in Panda’s te repareren
Oplossing: ValueError: Kan float NaN niet naar int converteren
Oplossing: ValueError: Operanden konden niet worden uitgezonden met vormen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert