2014-05-08 7 views
50

में कोई मान मौजूद है या नहीं, मुझे यकीन है कि ऐसा करने का एक स्पष्ट तरीका है लेकिन अभी कुछ भी इस बारे में सोचना नहीं है।जांचें कि पांडा डेटाफ्रेम इंडेक्स

असल में अपवाद बढ़ाने के बजाय मैं True या False प्राप्त करना चाहता हूं यह देखने के लिए कि पांडा df अनुक्रमणिका में कोई मान मौजूद है या नहीं।

df = pandas.DataFrame({'test':[1,2,3,4]}, index=['a','b','c','d']) 

df.loc['g'] # (should give False) 

क्या मैं अब काम कर रहा है निम्नलिखित

sum(df.index == 'g') 
+1

किसी भी (df.index == 'g') के बारे में क्या? – luffe

उत्तर

101

इस बस में संदर्भ के लिए चाल

'g' in df.index 
+2

यह तब प्रतीत नहीं होता है जब कई प्रविष्टियां समान इंडेक्स मान साझा करती हैं। – MaximG

+0

@MaximG आपका क्या मतलब है? यह एक गैर-अद्वितीय सूचकांक के लिए भी काम करता है। – joris

+0

मल्टी इंडेक्स के लिए भी काम करते हैं। यदि आपकी अनुक्रमणिका में लंबाई 'n' है, तो' 1..n' से किसी भी लंबाई का एक टुपल –

21

करना चाहिए के रूप में यह कुछ मैं खोज रहा था था, आप के लिए परीक्षण कर सकते हैं है मूल्यों या सूचकांक के भीतर उपस्थिति ".values" विधि को जोड़कर, उदाहरण के लिए

g in df.<your selected field>.values 
g in df.index.values 

मुझे लगता है कि ".values" जोड़कर एक सरल सूची प्राप्त या बनाता है बाहर ndarray के लिए मौजूद हैं या "में" चेक अन्य अजगर उपकरणों के साथ अधिक सुचारू रूप से चलाने के लिए। बस सोचा कि मैं लोगों के लिए वहां टॉस करूंगा।

+0

चेक किया जा सकता है लेकिन विशेषता Error: 'DataFrame' ऑब्जेक्ट में कोई विशेषता नहीं है 'फ़ील्ड' – Gank

+1

हाय गैंक। "फ़ील्ड" दिखाना था कि आप डेटाफ्रेम के विभिन्न क्षेत्रों जैसे स्तंभ या चयनित कॉलम के लिए ".values" विधि लागू कर सकते हैं। ".index" उपलब्ध क्षेत्र के साथ "फ़ील्ड" को बदलने का एक उदाहरण है :) मुझे लगता है कि यह स्पष्ट हो सकता है ... –

+1

यह इंगित करने में वास्तव में सहायक था। मेरे पास एक पदानुक्रमित मामला है जहां 'g में df.index' में वास्तविकता उत्पन्न होती है और' g में df.index.values' झूठी होती है। दिलचस्प। – watsonic

1
df = pandas.DataFrame({'g':[1]}, index=['isStop']) 

#df.loc['g'] 

if 'g' in df.index: 
    print("find g") 

if 'isStop' in df.index: 
    print("find a") 
9

मल्टी सूचकांक एकल सूचकांक से थोड़ा अलग काम करता है। बहु-अनुक्रमित डेटाफ्रेम के लिए यहां कुछ विधियां दी गई हैं। पहले स्तर पर ही एक सूचकांक मूल्य की जाँच के लिए

df = pd.DataFrame({'col1': ['a', 'b','c', 'd'], 'col2': ['X','X','Y', 'Y'], 'col3': [1, 2, 3, 4]}, columns=['col1', 'col2', 'col3']) 
df = df.set_index(['col1', 'col2']) 

in df.index काम करता है।

'a' in df.index  # True 
'X' in df.index  # False 

अन्य स्तरों के लिए चेक df.index.levels

'a' in df.index.levels[0] # True 
'X' in df.index.levels[1] # True 

एक सूचकांक संयोजन टपल के लिए df.index में चेक।

('a', 'X') in df.index # True 
('a', 'Y') in df.index # False 
+1

मुझे नहीं लगता कि '.olist()' आवश्यक है ... –

+0

@JeyeyoungChun, आप सही हैं। मैंने जवाब संपादित किया। धन्यवाद। – broccoli2000

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