Rumah >pembangunan bahagian belakang >Tutorial Python >Pengindeksan Boolean Panda: Mengapa Menggunakan `&` Daripada `dan`?
Apabila melakukan pengindeksan Boolean dalam Pandas, adalah penting untuk memahami perbezaan antara operator logik & (bitwise AND) dan dan ( logik DAN).
Pertimbangkan contoh berikut:
a = pd.DataFrame({'x': [1, 1], 'y': [10, 20]}) a[(a['x'] == 1) & (a['y'] == 10)]
Kod ini mengembalikan hasil yang dijangkakan:
x y 0 1 10
Walau bagaimanapun, jika anda menggunakan dan bukannya &, anda' akan menghadapi ralat:
a[(a['x'] == 1) and (a['y'] == 10)]
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Ralat berlaku kerana dan cuba menilai kebenaran setiap Siri secara individu (a['x'] dan a['y']). Walau bagaimanapun, Siri ini tidak mempunyai nilai Boolean yang jelas, yang membawa kepada ralat nilai kebenaran yang tidak jelas.
Sebaliknya, bitwise & operator menjalankan operasi logik mengikut unsur. Ia mengembalikan tatasusunan boolean di mana setiap elemen mewakili hasil operasi antara elemen yang sepadan dalam a['x'] dan a['y']. Ini membolehkan anda mencipta topeng Boolean untuk pengindeksan.
Perhatikan bahawa adalah wajib untuk menggunakan kurungan apabila menggunakan &. Tanpa mereka, operasi akan dinilai secara salah disebabkan oleh keutamaan pengendali yang lebih tinggi daripada & melebihi ==.
a['x'] == 1 & a['y'] == 10 # Incorrect: Triggers the error (a['x'] == 1) & (a['y'] == 10) # Correct: Boolean indexing works as expected
Apabila melakukan pengindeksan boolean dalam Pandas, sentiasa gunakan operator & untuk operasi logik mengikut unsur. Ini memastikan penilaian yang betul dan mengelakkan ralat nilai kebenaran yang tidak jelas.
Atas ialah kandungan terperinci Pengindeksan Boolean Panda: Mengapa Menggunakan `&` Daripada `dan`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!