Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengubah Suai Bingkai Data Pandas Berdasarkan Pertanyaan Tanpa Gelagat Tidak Dijangka?

Bagaimanakah Saya Boleh Mengubah Suai Bingkai Data Pandas Berdasarkan Pertanyaan Tanpa Gelagat Tidak Dijangka?

Susan Sarandon
Susan Sarandonasal
2024-11-03 17:25:02438semak imbas

How Can I Modify Pandas Dataframes Based on Queries Without Unexpected Behavior?

Memahami Pandas View vs Salin Peraturan

Pernyataan Masalah

Panda, data Python yang popular perpustakaan manipulasi, menyediakan pelbagai kaedah untuk memilih dan mengubah suai bingkai data. Walau bagaimanapun, ia boleh mengelirukan untuk menentukan apabila pilihan mencipta salinan kerangka data asal atau paparan padanya. Kekaburan ini membawa kepada tingkah laku yang tidak dijangka apabila cuba mengubah suai data.

Peraturan Mudah

Untuk menangani kekeliruan ini, berikut ialah beberapa peraturan mudah yang mengawal pandangan Panda vs tingkah laku penyalinan :

  • Semua operasi biasanya menjana salinan.
  • Jika inplace=True argument ditentukan, pengubahsuaian dibuat di tempatnya, tetapi hanya operasi tertentu yang menyokong ciri ini.
  • Penindeks yang digunakan untuk tetapan (cth., .loc, .iloc, .iat, .at) menetapkan nilai di tempat.
  • Penindeks yang digunakan untuk mendapatkan objek jenis d tunggal biasanya mengembalikan paparan. Walau bagaimanapun, tingkah laku ini tidak boleh dipercayai sepenuhnya disebabkan oleh pertimbangan susun atur memori.
  • Penindeks yang digunakan untuk mendapatkan objek berbilang djenis sentiasa mencipta salinan.

Menggunakan Peraturan untuk Kes Tertentu

Mari kita periksa kes kompleks yang anda nyatakan:

df[df.C <= df.B] = 7654321

Dalam kes ini, peraturan untuk menetapkan dengan pengindeks digunakan. Memandangkan syarat tersebut melibatkan perbandingan dua lajur, Pandas mencipta salinan perantaraan bingkai data untuk menilai keadaan. Salinan ini kemudiannya diubah suai di tempatnya. Oleh itu, ungkapan ini berjaya menukar nilai dalam bingkai data asal.

Walau bagaimanapun, ungkapan pengindeksan berantai:

df[df.C <= df.B].ix[:, 'B':'E']

melanggar peraturan. Merantai dua pengindeks mencipta operasi Python yang berasingan, menjadikannya sukar untuk Panda memintas dengan pasti. Ini boleh membawa kepada tingkah laku yang tidak dijangka dan oleh itu amat tidak digalakkan.

Mengubah suai Bingkai Data dengan Pertanyaan

Untuk mengubah suai nilai bingkai data berdasarkan pertanyaan, gunakan pendekatan berikut:

df.loc[df.C <= df.B, 'B':'E'] = 7654321

Ungkapan ini menggunakan pengindeks tunggal untuk menilai keadaan pertanyaan dan menentukan subset lajur untuk diubah suai. Ia lebih pantas dan lebih dipercayai daripada pendekatan pengindeksan berantai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Suai Bingkai Data Pandas Berdasarkan Pertanyaan Tanpa Gelagat Tidak Dijangka?. 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