我有一个Pandas DF,我需要过滤掉一些包含值== 0的行,用于特征'a'和特征'b'.
为了检查值,我运行以下命令:
DF1 = DF[DF['a'] == 0]
返回正确的值.同样,通过这样做:
DF2 = DF[DF['b'] == 0]
我可以看到特征'b'的0值.
但是,如果我尝试使用OR操作数在单行代码中组合这些2:
DF3 = DF[DF['a'] == 0 | DF['b'] == 0]
我明白了:
TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]
这里发生了什么事?
您可以转换列'a'或'b',因此它们都是float64或bool.但是,保留功能数据类型的更简单的解决方案是:
DF3 = DF[(DF['a'] == 0) | (DF['b'] == 0)]
常见的操作是使用布尔向量来过滤数据.运营商是:| for或,&for and,和for for not.必须使用括号对这些进行分组.