Mengapa Menggunakan Operator AND (`&`) dan OR (`|`) dalam Operasi Penapisan Pandas Menghasilkan Keputusan Yang Tidak Dijangka?

Susan Sarandon
Lepaskan: 2024-10-25 06:55:28
asal
649 orang telah melayarinya

Why Does Using AND (`&`) and OR (`|`) Operators in Pandas Filtering Operations Produce Unexpected Results?

panda: Pelbagai Keadaan Semasa Mengindeks Bingkai Data - Gelagat Tidak Dijangka

Dalam analisis data, panda ialah perpustakaan penting untuk memanipulasi dan memproses bingkai data. Semasa menjalankan operasi penapisan, adalah penting untuk memahami gelagat pengendali apabila menggunakan berbilang syarat.

Mari kita pertimbangkan senario di mana kita ingin menapis baris dalam bingkai data berdasarkan nilai dalam dua lajur, 'a' dan ' b'. Menggunakan operator AND '&' dan OR '|' pengendali, kami menjangkakan DAN akan menggugurkan baris dengan sekurang-kurangnya satu nilai bersamaan dengan -1 manakala OR harus mengekalkan baris dengan kedua-dua nilai ialah -1.

<code class="python">df = pd.DataFrame({'a': range(5), 'b': range(5)})
df['a'][1] = -1
df['b'][1] = -1
df['a'][3] = -1
df['b'][4] = -1

df1 = df[(df.a != -1) & (df.b != -1)]
df2 = df[(df.a != -1) | (df.b != -1)]

print(pd.concat([df, df1, df2], axis=1, keys=['original df', 'using AND (&)', 'using OR (|)',]))</code>
Salin selepas log masuk

Tanpa diduga, operator AND menjatuhkan setiap baris dengan sekurang-kurangnya satu nilai ialah -1, manakala pengendali OR memerlukan kedua-dua nilai menjadi -1 untuk menggugurkannya.

Kunci untuk memahami tingkah laku ini terletak pada mengingati bahawa kita menulis syarat dari segi perkara yang ingin kita simpan, bukan apa yang kita mahu jatuhkan.

  • Untuk df1: (df.a != -1) & (df.b != -1) bermaksud "kekalkan baris di mana df.a tidak - 1 dan df.b bukan -1", yang bersamaan dengan menjatuhkan baris dengan sekurang-kurangnya satu nilai ialah -1.
  • Untuk df2: (df.a != -1) | (df.b != -1) bermaksud "kekalkan baris di mana sama ada df.a atau df.b bukan -1", yang bersamaan dengan menjatuhkan baris dengan kedua-dua nilai ialah -1.

Adalah penting untuk menggunakan akses berantai seperti df.loc dan df.iloc dan bukannya df['a'][1] = -1 untuk mengelakkan isu yang berpotensi.

Atas ialah kandungan terperinci Mengapa Menggunakan Operator AND (`&`) dan OR (`|`) dalam Operasi Penapisan Pandas Menghasilkan Keputusan Yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!