orऔर andअजगर बयानों की आवश्यकता होती है truth-values। के लिए pandasइन अस्पष्ट माना जाता है तो आप का उपयोग करना चाहिए "बिटवाइज़" |(या) या &(और) आपरेशन:
result = result[(result['var']>0.25) | (result['var']<-0.25)]
तत्व-वार or(या and) की उपज के लिए इस तरह के डेटास्ट्रक्चर के लिए इन्हें ओवरलोड किया जाता है ।
इस कथन में कुछ और स्पष्टीकरण जोड़ने के लिए:
अपवाद फेंक दिया जाता है जब आप प्राप्त करना चाहते हैं boolएक की 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().
आपने जो मारा वह एक ऐसी जगह थी जहां ऑपरेटर ने ऑपरेंड को कथित रूप से परिवर्तित कर दिया bool(आपने उपयोग किया orलेकिन यह भी होता है and, ifऔर 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().
इन 4 बयान इसके अलावा वहाँ कई अजगर कार्यों कि कुछ छिपाने हैं boolकॉल (जैसे any, all, filter, ...) इन सामान्य रूप से नहीं के साथ समस्याग्रस्त हैं pandas.Seriesलेकिन पूर्णता के लिए मैं इन उल्लेख करना चाहता था।
आपके मामले में अपवाद वास्तव में मददगार नहीं है, क्योंकि इसमें सही विकल्पों का उल्लेख नहीं है । के लिए andऔर orआप उपयोग कर सकते हैं (यदि आप तत्व-वार तुलना चाहते हैं):
यदि आप ऑपरेटरों का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप ऑपरेटर वरीयता के कारण अपने कोष्ठक को सही ढंग से सेट करते हैं ।
रहे हैं कई तार्किक numpy कार्यों जो चाहिए पर काम pandas.Series।
अपवाद में उल्लिखित विकल्प अधिक अनुकूल हैं यदि आपने इसे करते समय सामना किया ifया while। मैं जल्द ही इनमें से प्रत्येक की व्याख्या करूँगा:
यदि आप जांचना चाहते हैं कि आपकी श्रृंखला खाली है या नहीं :
>>> x = pd.Series([])
>>> x.empty
True
>>> x = pd.Series([1])
>>> x.empty
False
पाइथन सामान्य रूप lenसे कंटेनरों के समूह की व्याख्या करता है (जैसे list, tuple...) सत्य-मूल्य के रूप में अगर इसकी कोई स्पष्ट बूलियन व्याख्या नहीं है। इसलिए यदि आप अजगर जैसी जांच चाहते हैं, तो आप कर सकते हैं: if x.sizeया if not x.emptyइसके बजाय if x।
अपने तो Seriesशामिल एक और केवल एक बूलियन मान:
>>> x = pd.Series([100])
>>> (x > 50).bool()
True
>>> (x < 50).bool()
False
यदि आप अपनी श्रृंखला की पहली और एकमात्र वस्तु की जांच करना चाहते हैं (जैसे .bool()कि बूलियन सामग्री के लिए भी काम करता है):
>>> x = pd.Series([100])
>>> x.item()
100
यदि आप जांचना चाहते हैं कि सभी या कोई वस्तु शून्य नहीं है, खाली नहीं है या गलत नहीं है:
>>> 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
|इसके बजाय का उपयोग करेंor