Memahami "ValueError: tidak boleh mengindeks semula daripada paksi pendua"
Dalam Panda, pengindeksan semula merujuk kepada operasi menukar label baris atau lajur daripada DataFrame. Apabila operasi indeks semula dicuba dan paksi pendua ditemui, ralat "ValueError: tidak boleh indeks semula daripada paksi pendua" dibangkitkan.
Penjelasan
Ralat ini biasanya berlaku apabila anda menetapkan baris atau lajur baharu kepada DataFrame yang indeksnya (label baris) atau lajur (label lajur) mengandungi nilai pendua.
Dalam konteks soalan anda, anda menetapkan baris baharu bernama 'sums ' ke affinity_matrix DataFrame. Walau bagaimanapun, ralat menunjukkan bahawa affinity_matrix mungkin mempunyai nilai pendua dalam lajurnya. Ini berkemungkinan punca isu.
Contoh
Pertimbangkan DataFrame berikut dengan baris label rentetan dan lajur label integer:
import pandas as pd df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], index=["a", "b", "c"], columns=[1, 2, 2])
Dalam DataFrame ini, lajur 2 muncul dua kali. Jika kami cuba menetapkan baris baharu bernama 'jumlah' dengan menjumlahkan nilai dalam setiap lajur, kami akan menghadapi ralat yang sama:
df.loc['sum'] = df.sum(axis=0)
ValueError: cannot reindex from a duplicate axis
Ralat ini berlaku kerana DataFrame sudah mempunyai lajur berlabel '2,' dan cuba mengindeks semula daripadanya akan mencipta tugasan yang tidak jelas.
Menyelesaikan Isu
Untuk menyelesaikan isu ini, anda perlu mengesahkan bahawa indeks atau label lajur DataFrame anda tidak mengandungi nilai pendua. Jika ya, anda boleh sama ada mengalih keluar nilai pendua atau melabelkannya semula secara unik.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan \'ValueError: tidak boleh mengindeks semula daripada paksi pendua\' dalam Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!