Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apa yang Menyebabkan Ralat \"ValueError: tidak boleh mengindeks semula daripada paksi pendua\" dalam Perpustakaan Pandas Python dan Bagaimana untuk Membetulkannya?

Apa yang Menyebabkan Ralat \"ValueError: tidak boleh mengindeks semula daripada paksi pendua\" dalam Perpustakaan Pandas Python dan Bagaimana untuk Membetulkannya?

DDD
DDDasal
2024-10-23 17:56:02441semak imbas

What Causes the

Memahami "ValueError: tidak boleh mengindeks semula daripada paksi pendua"

Ralat "ValueError: tidak boleh mengindeks semula daripada paksi pendua" dalam Panda Python perpustakaan menandakan operasi pengindeksan yang menemui nilai pendua pada paksi. Untuk menangani perkara ini, fahami konsep paksi dalam Panda dahulu:

  • Baris: Diwakili oleh paksi '0'.
  • Lajur: Diwakili oleh paksi '1'.

Punca Ralat

Ralat ini timbul apabila anda cuba menetapkan nilai atau mencipta baris baharu /column (paksi) dengan nama yang telah wujud dalam indeks/lajur semasa DataFrame. Pandas mentafsirkan ini sebagai operasi pengindeksan semula, yang memerlukan pendua yang serasi di sepanjang paksi yang disasarkan. Walau bagaimanapun, jika pendua tersebut wujud, operasi gagal, menimbulkan ralat "ValueError: tidak boleh mengindeks semula daripada paksi pendua".

Contoh

Pertimbangkan DataFrame berikut:

<code class="python">import pandas as pd

data = {
    "Name": ["Alice", "Bob", "Alice"],
    "Age": [22, 25, 28]
}
df = pd.DataFrame(data)

# Attempting to set a row with a duplicate name (Alice)
df.loc["Alice"] = [30, 32]</code>

Tindakan ini membawa kepada ralat "ValueError: tidak boleh mengindeks semula daripada paksi pendua" kerana sudah ada baris dengan indeks "Alice" dalam DataFrame.

Menyelesaikan Ralat

Untuk menyelesaikan ralat ini, pastikan nama yang digunakan untuk mengindeks/menetapkan baris/lajur baharu tidak bercanggah dengan nama sedia ada. Anda boleh menyemak indeks pendua atau nama lajur menggunakan kaedah df.index.is_unique atau df.columns.is_unique, masing-masing.

Pendekatan Alternatif

Jika anda perlu tulis ganti nilai sedia ada untuk indeks yang mempunyai pendua, anda boleh menggunakan kaedah at:

<code class="python">df.at["Alice", "Age"] = 33</code>

Pendekatan ini mengemas kini nilai lajur "Umur" untuk baris pertama dengan indeks "Alice" tanpa menaikkan ralat.

Atas ialah kandungan terperinci Apa yang Menyebabkan Ralat \"ValueError: tidak boleh mengindeks semula daripada paksi pendua\" dalam Perpustakaan Pandas Python dan Bagaimana untuk Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn