Cara memperbaiki: valueerror: indeks berisi entri duplikat, tidak dapat dibentuk ulang
Kesalahan yang mungkin Anda temui saat menggunakan pandas adalah:
ValueError : Index contains duplicate entries, cannot reshape
Kesalahan ini biasanya terjadi saat Anda mencoba membentuk ulang DataFrame panda menggunakan fungsi pivot() , tetapi ada beberapa nilai dalam DataFrame yang dihasilkan yang memiliki nilai indeks yang sama.
Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita memiliki panda DataFrame berikut:
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
Sekarang misalkan kita mencoba memutar DataFrame, menggunakan tim sebagai baris dan posisi sebagai kolom:
#attempt to reshape DataFrame
df. pivot (index=' team ', columns=' position ', values=' points ')
ValueError : Index contains duplicate entries, cannot reshape
Kami menerima kesalahan karena beberapa baris di DataFrame berbagi nilai yang sama untuk team dan position .
Jadi saat kami mencoba membentuk ulang DataFrame, panda tidak mengetahui nilai titik mana yang akan ditampilkan di setiap sel DataFrame yang dihasilkan.
Bagaimana cara memperbaiki kesalahan tersebut
Untuk memperbaiki kesalahan ini, kita dapat menggunakan fungsi pivot_table() dengan argumen aggfunc tertentu untuk menggabungkan nilai data dengan cara tertentu.
Misalnya, kita dapat menggunakan pivot_table() untuk membuat DataFrame baru yang menggunakan tim sebagai baris, posisi sebagai kolom, dan jumlah nilai titik dalam sel DataFrame:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' sum ')
position F G
team
At 16 12
B 21 13
Perhatikan bahwa kami tidak menerima kesalahan kali ini.
Nilai dalam DataFrame menunjukkan jumlah poin untuk setiap tim dan kombinasi posisi .
Perhatikan bahwa kita juga dapat menggunakan nilai yang berbeda untuk aggfunc , seperti rata-rata:
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
Dengan menggunakan argumen aggfunc di fungsi pivot_table() , kita dapat menghindari kesalahan apa pun.
Catatan: Anda dapat menemukan dokumentasi lengkap untuk fungsi pivot_table() di sini .
Sumber daya tambahan
Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:
Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk