मैं पंक्तियां हटाना चाहते जब कुछ शर्तें पूरी की जाएं:को हटाने से एकाधिक शर्तों अजगर पांडा के आधार पर पंक्तियों
उदाहरण के लिए, एक यादृच्छिक DataFrame उत्पन्न होता है:
तालिका केimport pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4), columns=['one', 'two', 'three', 'four'])
print df
एक उदाहरण के रूप में दिखाया गया है नीचे:
one two three four
0 -0.225730 -1.376075 0.187749 0.763307
1 0.031392 0.752496 -1.504769 -1.247581
2 -0.442992 -0.323782 -0.710859 -0.502574
3 -0.948055 -0.224910 -1.337001 3.328741
4 1.879985 -0.968238 1.229118 -1.044477
5 0.440025 -0.809856 -0.336522 0.787792
6 1.499040 0.195022 0.387194 0.952725
7 -0.923592 -1.394025 -0.623201 -0.738013
8 -1.775043 -1.279997 0.194206 -1.176260
9 -0.602815 1.183396 -2.712422 -0.377118
मैं परिस्थितियों के आधार पर हुई पंक्तियां हटाना चाहते है कि:
पंक्ति 'एक', 'दो', या 'तीन' से अधिक 0 के मूल्य के साथ पंक्ति; और 0 से कम 'चार' के मान को हटा दिया जाना चाहिए।
df = df[df.one > 0 or df.two > 0 or df.three > 0 and df.four < 1]
हालांकि, इस प्रकार एक त्रुटि संदेश में जिसके परिणामस्वरूप:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
किसी एकाधिक शर्तों के आधार पर हटाने के तरीके से मेरी मदद कर सके
तब मैं इस प्रकार लागू करने की कोशिश की?
आप 'DF = df [((df.one> 0) | (df.two> 0) | (df.three> 0)) चाहते हैं और (df। चार <1)] 'ऐसा क्यों है क्योंकि यह एरे की तुलना करने के लिए संदिग्ध है क्योंकि संभावित रूप से कई मैचों को यह देखा जाता है: http://stackoverflow.com/questions/10062954/valueerror-the-truth-value-of-an-array -एक-से-एक-तत्व-अस्पष्ट – EdChum
ओह, ओह, अंत में 'और' नहीं देखे। संपादित। – Brionius
@ ब्रियोनियस: यह मूल रूप से है क्योंकि 'या' और' और 'उनके वर्ग को कक्षा द्वारा अनुकूलित नहीं किया जा सकता है। वे बूल (the_object) के परिणाम के आधार पर करते हैं, और यही वह है। – DSM