Jak naprawić: valueerror: nie można zdefiniować wiersza z niedopasowanymi kolumnami
Błąd, który możesz napotkać podczas korzystania z pand, to:
ValueError : cannot set a row with mismatched columns
Ten błąd występuje, gdy próbujesz dodać nowy wiersz do ramki DataFrame pandy, ale liczba wartości w nowym wierszu nie odpowiada liczbie kolumn w istniejącej ramce DataFrame.
Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.
Jak odtworzyć błąd
Załóżmy, że tworzymy następującą ramkę danych pandy:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28, 22], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4, 8], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12, 9]}) #view DataFrame df team points assists rebounds 0 A 18 5 11 1 B 22 7 8 2 C 19 7 10 3 D 14 9 6 4 E 14 12 6 5 F 11 9 5 6 G 20 9 9 7:28 4 12 8 I 22 8 9
Załóżmy teraz, że próbujemy dodać nowy wiersz na końcu ramki danych:
#define new row to append
new_team = ['I', 30]
#append row to DataFrame
df. loc [ len (df)] = new_team
#view updated DataFrame
df
ValueError : cannot set a row with mismatched columns
Otrzymujemy błąd ValueError, ponieważ nowy wiersz, który próbujemy dodać, ma tylko dwie wartości, ale istniejąca ramka DataFrame ma cztery kolumny.
Jak naprawić błąd
Najprostszym sposobem naprawienia tego błędu jest użycie funkcji append() w celu dodania nowej linii na końcu DataFrame, która automatycznie uzupełni brakujące wartości NaN:
Poniższa składnia pokazuje, jak w praktyce korzystać z tej funkcji:
#define new row to append new = ['J', 30] #append row to end of DataFrame df = df. append ( pd.Series (new,index= df.columns [: len (new)]), ignore_index= True ) #view updated DataFrame df team points assists rebounds 0 to 18 5.0 11.0 1 B 22 7.0 8.0 2 C 19 7.0 10.0 3 D 14 9.0 6.0 4 E 14 12.0 6.0 5 F 11 9.0 5.0 6 G 20 9.0 9.0 7:28 a.m. 4.0 12.0 8 I 22 8.0 9.0 9 D 30 NaN NaN
Należy pamiętać, że nie otrzymujemy żadnego błędu ValueError , a na końcu ramki DataFrame dodano znak nowej linii.
Należy również pamiętać, że dwie brakujące wartości w nowym wierszu zostały po prostu uzupełnione wartościami NaN.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:
Jak naprawić: Kolumny nakładają się, ale nie określono żadnego sufiksu
Jak naprawić: Obiekt „numpy.ndarray” nie ma atrybutu „dołącz”.
Jak naprawić: jeśli używasz wszystkich wartości skalarnych, musisz przekazać indeks