Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Operator Pandas\' DAN (&) dan OR (|) Nampak Terbalik Apabila Mengindeks DataFrame dengan Berbilang Syarat?

Mengapa Operator Pandas\' DAN (&) dan OR (|) Nampak Terbalik Apabila Mengindeks DataFrame dengan Berbilang Syarat?

Linda Hamilton
Linda Hamiltonasal
2024-10-25 16:30:09627semak imbas

Why Does Pandas' AND (&) and OR (|) Operators Seem Reversed When Indexing a DataFrame with Multiple Conditions?

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.

  • Untuk df1, kami menyatakan bahawa kami mahu menyimpan baris di mana kedua-duanya df.a dan df.b bukan -1.
  • Untuk df2, kami menyatakan bahawa kami mahu menyimpan baris di mana sama ada df.a atau df.b bukan -1.

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!

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