Pernyataan ordan andpython membutuhkan truthnilai-. Untuk pandasini dianggap ambigu sehingga Anda harus menggunakan operasi "bitwise" |(atau) atau &(dan):
result = result[(result['var']>0.25) | (result['var']<-0.25)]
Ini kelebihan beban untuk jenis struktur data untuk menghasilkan elemen-bijaksana or(atau and).
Hanya dengan menambahkan beberapa penjelasan pada pernyataan ini:
Pengecualian dibuang ketika Anda ingin mendapatkan booldari pandas.Series:
>>> import pandas as pd
>>> x = pd.Series([1])
>>> bool(x)
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Apa yang Anda tekan adalah tempat di mana operator secara implisit mengubah operan ke bool(Anda menggunakan ortetapi juga terjadi untuk and, ifdan while):
>>> x or x
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
>>> x and x
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
>>> if x:
... print('fun')
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
>>> while x:
... print('fun')
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Selain 4 pernyataan ini ada beberapa fungsi python yang menyembunyikan beberapa boolpanggilan (seperti any, all, filter, ...) ini biasanya tidak bermasalah dengan pandas.Seriestapi untuk kelengkapan saya ingin menyebutkan ini.
Dalam kasus Anda, pengecualian tidak terlalu membantu, karena tidak menyebutkan alternatif yang tepat . Untuk anddan orAnda dapat menggunakan (jika Anda ingin perbandingan elemen-bijaksana):
Jika Anda menggunakan operator maka pastikan Anda mengatur tanda kurung dengan benar karena prioritas operator .
Ada beberapa fungsi numpy logis yang harus dikerjakan pandas.Series.
Alternatif yang disebutkan dalam Pengecualian lebih cocok jika Anda menemukannya saat melakukan ifatau while. Saya akan segera menjelaskan masing-masing:
Jika Anda ingin memeriksa apakah Seri Anda kosong :
>>> x = pd.Series([])
>>> x.empty
True
>>> x = pd.Series([1])
>>> x.empty
False
Python biasanya menafsirkan length kontainer (seperti list, tuple, ...) sebagai kebenaran-nilai jika tidak memiliki interpretasi boolean eksplisit. Jadi jika Anda ingin cek seperti python, Anda bisa melakukan: if x.sizeatau if not x.emptybukannya if x.
Jika Anda Seriesmengandung satu dan hanya satu nilai boolean:
>>> x = pd.Series([100])
>>> (x > 50).bool()
True
>>> (x < 50).bool()
False
Jika Anda ingin memeriksa item pertama dan satu-satunya dari Seri Anda (suka .bool()tetapi berfungsi bahkan untuk konten yang tidak boolean):
>>> x = pd.Series([100])
>>> x.item()
100
Jika Anda ingin memeriksa apakah semua atau semua item tidak-nol, tidak-kosong atau tidak-Salah:
>>> x = pd.Series([0, 1, 2])
>>> x.all() # because one element is zero
False
>>> x.any() # because one (or more) elements are non-zero
True
|sebagai gantior