当满足一些条件时,我想要删除行:
下面展示了一个示例数据框:
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
我想根据以下条件删除行:
列“one”、“two”或“three”的值大于0;并且列“four”的值小于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.four < 1)]
,原因是比较数组是不明确的,因为可能有多个匹配项,请参考此链接:https://dev59.com/Gmkw5IYBdhLWcg3wMHyn。 - EdChumand
。已编辑。 - Brioniusor
和and
不能通过类来自定义它们的行为。它们的运作方式基于bool(the_object)的结果,就是这样。 - DSM