Pengindeksan Pelbagai Keadaan Panda: Gelagat Tidak Dijangka
Dengan panda, menggunakan penapis pada DataFrame ialah operasi biasa. Walau bagaimanapun, apabila menggunakan berbilang keadaan, terutamanya dengan operator logik seperti AND dan OR, hasil yang tidak dijangka boleh berlaku.
Masalah:
Apabila menapis baris berdasarkan nilai dalam dua lajur , pengendali DAN nampaknya berkelakuan seperti ATAU, dan sebaliknya. Sebagai contoh, kod di bawah hendaklah:
<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>
Penjelasan:
Tingkah laku yang tidak dijangka berpunca daripada cara pengendali logik ditafsirkan dalam konteks pengindeksan panda.
DAN Operator:
ATAU Operator:
Oleh itu, operator AND berkelakuan seperti OR kerana ia mengecualikan baris berdasarkan ketiadaan -1 dalam mana-mana lajur. Sebaliknya, pengendali OR berkelakuan seperti DAN kerana ia termasuk baris hanya apabila kedua-dua lajur tidak mengandungi -1.
Nota Tambahan:
Atas ialah kandungan terperinci Mengapa Pengindeksan Panda dengan Pelbagai Keadaan Menunjukkan Gelagat Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!