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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *