Memahami "ValueError: tidak boleh mengindeks semula daripada paksi pendua"
Dalam pustaka Pandas Python, mesej ralat ini menunjukkan bahawa operasi tidak boleh dilakukan kerana struktur data mengandungi nilai pendua dalam paksi yang dirujuk.
Punca Ralat
Secara khusus, ralat berlaku apabila cuba mengindeks semula DataFrame atau Siri dengan menetapkan baris atau lajur baharu menggunakan indeks yang telah wujud. Pengindeksan semula melibatkan penukaran label indeks dan jika label pendua hadir, menjadi mustahil untuk memetakan operasi secara unik kepada data yang sepadan.
Senario Contoh
Untuk menggambarkan perkara ini ralat, pertimbangkan Pandas DataFrame dengan nama lajur pendua. Berikut ialah coretan Python yang menunjukkan cara ini boleh berlaku:
<code class="python">import pandas as pd df = pd.DataFrame({ "ID": [1, 2, 3], "Name": ["Alice", "Bob", "Charlie"], "Score": [90, 80, 70], "Age": [25, 26, 27] }) df["Score"] = df["Score"] * 2 df["Age"] = df["Age"] + 1 # Attempt to create a duplicate column df["Score"] = df["Score"] * 1.1</code>
Apabila anda melaksanakan coretan ini, anda akan menghadapi ralat berikut:
ValueError: cannot reindex from a duplicate axis
Ini kerana DataFrame sudah mempunyai lajur bernama "Skor," dan anda cuba memberikan nilai baharu padanya menggunakan nama yang sama. Lajur pendua menghalang Panda daripada mengindeks semula lajur dengan jayanya.
Penyelesaian
Untuk menyelesaikan ralat ini, anda mesti memastikan bahawa nilai indeks yang digunakan untuk pengindeksan semula adalah unik. Dalam kes penugasan kepada baris atau lajur sedia ada, ini bermakna mengelakkan label pendua. Jika nilai pendua diperkenalkan secara tidak sengaja, anda boleh menyemak indeks menggunakan kaedah .duplicated() dan mengalih keluar pendua dengan sewajarnya.
Atas ialah kandungan terperinci Apa yang Menyebabkan Ralat Pandas \'ValueError: tidak boleh mengindeks semula daripada paksi pendua\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!