Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Operator Pandas\' DAN (&) dan OR (|) Nampak Terbalik Apabila Mengindeks DataFrame dengan Berbilang Syarat?
panda: Gelagat Tidak Dijangka dengan Pelbagai Keadaan semasa Mengindeks Bingkai Data
Apabila menapis baris dalam DataFrame mengikut nilai dalam berbilang lajur, adalah penting untuk fahami gelagat pengendali DAN (&) dan ATAU (|).
Dalam pemerhatian baru-baru ini, diperhatikan bahawa kelakuan pengendali ini kelihatan terbalik. Operator OR kelihatan berkelakuan seperti operator AND, dan sebaliknya.
Untuk menggambarkan, pertimbangkan DataFrame berikut:
<code class="python">df = pd.DataFrame({'a': range(5), 'b': range(5) }) # Insert -1 values 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>
Hasilnya ialah:
<code class="python"> Original df Using AND (&) Using OR (|) a b a b a b 0 0 0 0 0 0 0 1 -1 -1 NaN NaN NaN NaN 2 2 2 2 2 2 2 3 -1 3 NaN NaN -1 3 4 4 -1 NaN NaN 4 -1 [5 rows x 6 columns]</code>
Seperti yang dilihat dalam output, operator AND menjatuhkan baris di mana sekurang-kurangnya satu nilai ialah -1, manakala operator OR mengekalkan baris di mana kedua-dua nilai bukan -1.
Tingkah laku ini mungkin kelihatan berlawanan dengan intuitif, tetapi ia menjadikan rasa jika kita ingat bahawa kita menyatakan syarat untuk baris yang kita mahu simpan, bukan jatuhkan.
Oleh itu, tingkah laku yang diperhatikan adalah betul.
Atas ialah kandungan terperinci Mengapa Operator Pandas\' DAN (&) dan OR (|) Nampak Terbalik Apabila Mengindeks DataFrame dengan Berbilang Syarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!