Pernyataan or
dan and
python membutuhkan truth
nilai-. Untuk pandas
ini 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 bool
dari 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 or
tetapi juga terjadi untuk and
, if
dan 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 bool
panggilan (seperti any
, all
, filter
, ...) ini biasanya tidak bermasalah dengan pandas.Series
tapi untuk kelengkapan saya ingin menyebutkan ini.
Dalam kasus Anda, pengecualian tidak terlalu membantu, karena tidak menyebutkan alternatif yang tepat . Untuk and
dan or
Anda 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 if
atau 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 len
gth 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.size
atau if not x.empty
bukannya if x
.
Jika Anda Series
mengandung 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