2015-08-25 11 views
5

मैं अलग dtypes के कॉलम के साथ एक dataframe है क्वेरी और मैं pandas.query उपयोग करने के लिए कॉलम फिल्टर करने के लिए की जरूरत है।पांडा कोई भी महत्व देता

कॉलम में अनुपलब्ध मान शामिल हो सकते हैं: NaN, None और NaT और मुझे ऐसी पंक्तियां प्रदर्शित करने की आवश्यकता है जिनमें ऐसे मान हैं। pandas.query पर उत्तीर्ण अभिव्यक्ति में ऐसा करने का कोई तरीका है? मुझे पता है कि यह विभिन्न विधियों का उपयोग किया जा सकता है हूँ, लेकिन मुझे पता है कि अगर यह query

बूलियन कॉलम मैं यह कहते हुए एक तरीके का उपयोग करने में सक्षम था के लिए के माध्यम से संभव है की जरूरत है:

df.query('col not in (True, False)') 

लेकिन इस जीत अन्य प्रकार के कॉलम के लिए काम नहीं करते हैं। वर्कअराउंड सहित किसी भी मदद की सराहना की जाती है।

+0

क्या आप 'np.isnan' का उपयोग कर सकते हैं? –

+0

@ M.Massias ओपी एक प्रश्न बयान है कि 'df.query' विधि के साथ संगत है के लिए पूछ रहा है, यहां मुद्दा यह है कि कैसे एक बयान है कि वांछित के रूप में काम करेंगे' numexpr' – EdChum

उत्तर

4

NaN तो आप बस का परीक्षण कर सकते हैं अगर एक कॉलम यह फिल्टर करने के लिए खुद के लिए बराबर है, जो अपने आप के बराबर नहीं है। यह भी None के लिए काम करने के लिए, हालांकि मुझे यकीन है कि क्यों है, यह जांच के दौरान कुछ बिंदु पर NaN लिए डाली लिया जा सकता है नहीं कर रहा हूँ लगता है।

df.query('col == col') 

दिन के लिए, यह काम करता है, लेकिन बहुत हैकी लगता है, एक बेहतर तरीका हो सकता है।

df.query('col not in [@pd.NaT]') 
+0

बहुत बुरा है कि दूसरा दृष्टिकोण करता है का उपयोग कर पारित करने के लिए है NaN और कोई नहीं के लिए काम नहीं! हालांकि पहले मेरे लिए पूरी तरह से काम करता है – architectonic

संबंधित मुद्दे