Ein Fehler, auf den Sie bei der Verwendung von Pandas stoßen können, ist:

ValueError: Length of values does not match length of index

Dieser Fehler tritt auf, wenn Sie versuchen, ein NumPy-Array von Werten einer neuen Spalte in einem pandas DataFrame 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

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

#Dataframe anzeigen
print(df)

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

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

import numpy as np

# Versuch, die Spalte „Rebounds“ hinzuzufügen
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 mit einer Länge von 3 zu einem DataFrame hinzuzufügen, der einen Index mit einer Länge von 4 hat.

So beheben Sie den Fehler

Der einfachste Weg, diesen Fehler zu beheben, besteht darin, einfach eine neue Spalte mit einer Pandas-Serie im Gegensatz zu einem NumPy-Array zu erstellen.

Wenn die Länge der Pandas-Serie nicht mit der Länge des Indexes des DataFrame übereinstimmt, werden standardmäßig NaN-Werte ausgefüllt:

#erstelle eine 'Rebounds'-Spalte
df['rebounds'] = pd.Series([3, 3, 7])

#aktualisierten DataFrame anzeigen
df

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

Mit einer Pandas-Serie können wir die Spalte „Rebounds“ erfolgreich hinzufügen und die fehlenden Werte werden einfach mit NaN ausgefüllt.

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

#Fülle NaN-Werte mit Null ein
df = df.fillna(0)

#aktualisierten DataFrame anzeigen
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
Behebung: ValueError: Float NaN kann nicht in Integer konvertiert werden
Behebung: ValueError: Operanden konnten nicht zusammen mit Shapes übertragen werden

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: