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