Lösung: die länge der werte stimmt nicht mit der indexlänge überein


Ein Fehler, der bei der Verwendung von Pandas auftreten kann, ist:

 ValueError: Length of values does not match length of index

Dieser Fehler tritt auf, wenn Sie versuchen, einer neuen Spalte in einem Pandas-DataFrame ein Array von NumPy-Werten zuzuweisen, die Länge des Arrays jedoch nicht mit der aktuellen Länge des Index übereinstimmt.

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir haben den folgenden Pandas-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

Nehmen wir nun an, wir versuchen, eine neue Spalte namens „bounces“ als NumPy-Array hinzuzufügen:

 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)

Wir erhalten einen ValueError, weil wir versuchen, ein NumPy-Array der Länge 3 zu einem DataFrame hinzuzufügen, der einen Index der Länge 4 hat.

So beheben Sie den Fehler

Der einfachste Weg, diesen Fehler zu beheben, besteht darin, einfach eine neue Spalte mit einer Pandas-Reihe anstelle eines NumPy-Arrays zu erstellen.

Wenn die Länge der Pandas-Reihe nicht der Länge des DataFrame-Index entspricht, werden standardmäßig die NaN-Werte eingegeben:

 #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

Mithilfe einer Pandas-Reihe können wir die Spalte „Bounces“ erfolgreich hinzufügen und die fehlenden Werte werden einfach mit NaN aufgefüllt.

Beachten Sie, dass wir NaN-Werte mit der Methode fillna() wie folgt schnell in einen anderen Wert (z. B. Null) konvertieren können:

 #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

Beachten Sie, dass der NaN-Wert in Null umgewandelt wurde.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:

So beheben Sie KeyError in Pandas
So beheben Sie: ValueError: Float NaN kann nicht in int konvertiert werden
So beheben Sie: ValueError: Operanden konnten nicht mit Formen übertragen werden

Einen Kommentar hinzufügen

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