Jak naprawić: długość wartości nie odpowiada długości indeksu
Błąd, który możesz napotkać podczas korzystania z pand, to:
ValueError: Length of values does not match length of index
Ten błąd występuje, gdy próbujesz przypisać tablicę wartości NumPy do nowej kolumny w pandzie DataFrame, ale długość tablicy nie odpowiada bieżącej długości indeksu.
Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.
Jak odtworzyć błąd
Załóżmy, że mamy następującą ramkę DataFrame pand:
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
Załóżmy teraz, że próbujemy dodać nową kolumnę o nazwie „odbicia” jako tablicę 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)
Otrzymujemy błąd ValueError , ponieważ próbujemy dodać tablicę NumPy o długości 3 do ramki DataFrame mającej indeks o długości 4 .
Jak naprawić błąd
Najłatwiejszym sposobem naprawienia tego błędu jest po prostu utworzenie nowej kolumny przy użyciu serii pand zamiast tablicy NumPy.
Domyślnie, jeśli długość serii pand nie odpowiada długości indeksu DataFrame to zostaną wprowadzone wartości 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
Wykorzystując serię pandy z powodzeniem możemy dodać kolumnę „odbicia” a brakujące wartości po prostu uzupełnimy NaN.
Zauważ, że możemy szybko przekonwertować wartości NaN na inną wartość (np. zero) za pomocą metody fillna() w następujący sposób:
#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
Należy zauważyć, że wartość NaN została przekonwertowana na zero.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:
Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami