使用逻辑和运算符在 Pandas 中创建 DataFrame

aro*_*oma 2 python pandas jupyter-notebook

我有一个带有一些列的 Pandas Datarame,我首先想只打印特定列中值小于某个值的那些行。所以我做了:

df[df.marks < 4.5]
Run Code Online (Sandbox Code Playgroud)

它成功创建了数据框,现在我只想添加那些值在某个范围内的列,所以我尝试了这个:

df[(df.marks < 4.5 and df.marks > 4)]
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误:

712         raise ValueError("The truth value of a {0} is ambiguous. "    
713                          "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 714                          .format(self.__class__.__name__))
715 
716     __bool__ = __nonzero__    
ValueError: The truth value of a Series is ambiguous. Use a.empty,
a.bool(), a.item(), a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)

我该如何解决?最初我还认为它会遍历所有行并检查真值,然后在数据框中添加行,但似乎并非如此,如果是这样,它如何在数据框中添加行?

小智 5

df[(df.marks < 4.5) & (df.marks > 4)]
Run Code Online (Sandbox Code Playgroud)

更一般地,数组逻辑操作使用括号来组合各个条件:

(a < b) & (c > d)
Run Code Online (Sandbox Code Playgroud)

类似的 OR 组合,或 2 个以上的条件。

这就是它在 NumPy 中的设置方式,在数组上使用布尔运算符,而 Pandas 已经复制了这种行为。