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>
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.
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!