2015-09-23 9 views
10

1:मल्टी-इंडेक्स पांडस डेटाफ्रेम में किसी मान से अधिक सेल्स का चयन कैसे करें?

df[ df > 1.0 ]: यह NAN में सभी कक्षों को वापस कर दिया।

Try2:

df.loc[ df > 1.0 ]: इस लौटे KeyError: 0

df[df['A']> 1.0]: इस काम करता है - लेकिन मैं सभी स्तंभों फ़िल्टर की शर्त को लागू करना चाहते हैं।

+1

आप किस फ़िल्टर की स्थिति को लागू करना चाहते हैं, उदाहरण 'डीएफ' क्या है और आप आउटपुट के रूप में क्या उम्मीद कर रहे हैं? पूरे डीएफ के लिए कोशिश करते समय, निश्चित रूप से कुछ पंक्तियां होंगी जहां केवल कुछ कॉलम ही स्थिति (और इसके विपरीत) को पूरा करते हैं, इसलिए उन स्थानों के लिए जहां स्थिति पूरी नहीं होती है, इसे 'NaN' के साथ प्रतिस्थापित किया जाता है। –

+0

क्या आप पंक्तियों का चयन करने की कोशिश कर रहे हैं जहां कोई भी कॉलम शर्त को पूरा करता है? या जहां सभी कॉलम इस शर्त को पूरा करते हैं? –

+0

@AandandSumar मैं उन पंक्तियों का चयन करना चाहता हूं जहां कोई कॉलम शर्त को पूरा करता है। पूछने के लिए धन्यवाद। – Rex

उत्तर

12

यदि आप जो करने की कोशिश कर रहे हैं वह केवल पंक्तियों का चयन करना है जहां कोई भी कॉलम स्थिति को पूरा करता है, तो आप DataFrame.any() का उपयोग axis=1 (पंक्ति-वार समूह करने के लिए) के साथ कर सकते हैं। उदाहरण -

In [3]: df 
Out[3]: 
    A B C 
0 1 2 3 
1 3 4 5 
2 3 1 4 

In [6]: df[(df <= 2).any(axis=1)] 
Out[6]: 
    A B C 
0 1 2 3 
2 3 1 4 

वैकल्पिक रूप से, अगर आप पंक्तियों जहां सभी स्तंभों शर्त को पूरा छानने के लिए कोशिश कर रहे हैं, .any() की .all() inplace का उपयोग करें। all का उदाहरण -

In [8]: df = pd.DataFrame([[1,2,3],[3,4,5],[3,1,4],[1,2,1]],columns=['A','B','C']) 

In [9]: df 
Out[9]: 
    A B C 
0 1 2 3 
1 3 4 5 
2 3 1 4 
3 1 2 1 

In [11]: df[(df <= 2).all(axis=1)] 
Out[11]: 
    A B C 
3 1 2 1 
+3

यह उस प्रश्न का उत्तर नहीं देता है जहां डेटाफ्रेम में बहु-अनुक्रमणिका है। – Elliott

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