Jak naprawić: błąd wartości: indeks zawiera zduplikowane wpisy, nie można go zmienić
Błąd, który możesz napotkać podczas korzystania z pand, to:
ValueError : Index contains duplicate entries, cannot reshape
Ten błąd zwykle występuje, gdy próbujesz zmienić kształt ramki DataFrame pandy za pomocą funkcji przestawnej () , ale w wynikowej ramce DataFrame znajduje się wiele wartości, które mają te same wartoś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 #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [5, 7, 7, 9, 4, 9, 9, 12]}) #view DataFrame df team position points 0 A G 5 1 A G 7 2 A F 7 3 A F 9 4 B G 4 5 B G 9 6 B F 9 7 B F 12
Załóżmy teraz, że próbujemy obrócić ramkę danych, używając zespołu jako wierszy i pozycji jako kolumn:
#attempt to reshape DataFrame
df. pivot (index=' team ', columns=' position ', values=' points ')
ValueError : Index contains duplicate entries, cannot reshape
Otrzymujemy błąd, ponieważ wiele wierszy w DataFrame ma te same wartości dla zespołu i pozycji .
Kiedy więc próbujemy zmienić kształt ramki danych, pandy nie wiedzą, która wartość punktowa ma zostać wyświetlona w każdej komórce wynikowej ramki danych.
Jak naprawić błąd
Aby naprawić ten błąd, możemy użyć funkcji przestawnej() z konkretnym argumentem aggfunc , aby w określony sposób agregować wartości danych.
Na przykład możemy użyć metody przestawnej() , aby utworzyć nową ramkę DataFrame, która używa zespołu jako wierszy, pozycji jako kolumn i sumy wartości punktowych w komórkach DataFrame:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' sum ')
position F G
team
At 16 12
B 21 13
Pamiętaj, że tym razem nie otrzymamy błędu.
Wartości w DataFrame pokazują sumę punktów dla każdej kombinacji zespołu i pozycji .
Zauważ, że możemy również użyć innej wartości aggfunc , takiej jak średnia:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' mean ')
position F G
team
At 8.0 6.0
B 10.5 6.5
Używając argumentu aggfunc w funkcji przestawnej() , możemy uniknąć błędów.
Uwaga: pełną dokumentację funkcji przestawnej() można znaleźć tutaj .
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