[英]Pandas - Group by Period of Time / deleting consecutive rows based on multiple conditions
[英]Deleting rows based on multiple conditions Python Pandas
我想在满足几个条件时删除行:
例如,生成一个随机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
我想根据以下条件删除行:
行的值为col'one','two' 或 'three'大于0; 并且应删除col'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()
有人可以根据多种情况帮助我如何删除吗?
对于不是100%我清楚的原因 , pandas
扮演与位逻辑运算符不错|
和&
,但不是布尔值or
and
。
试试这个:
df = df[(df.one > 0) | (df.two > 0) | (df.three > 0) & (df.four < 1)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.