Lon*_*Rob 32 python dataframe pandas
尽管至少有两个 关于如何在Python 库中索引DataFrame的好教程pandas,但我仍然无法找到一个优雅的方法来SELECT处理多个列.
>>> d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 8]})
>>> d
x y
0 1 4
1 2 5
2 3 6
3 4 7
4 5 8
>>> d[d['x']>2] # This works fine
x y
2 3 6
3 4 7
4 5 8
>>> d[d['x']>2 & d['y']>7] # I had expected this to work, but it doesn't
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Run Code Online (Sandbox Code Playgroud)
我发现(我认为是)一种相当不优雅的方式,就像这样
>>> d[d['x']>2][d['y']>7]
Run Code Online (Sandbox Code Playgroud)
但它并不漂亮,而且它的可读性得分相当低(我认为).
是否有更好的,更具Python的方式?
Bou*_*oud 73
这是一个优先运营商问题.
您应该添加额外的括号以使您的多条件测试工作:
d[(d['x']>2) & (d['y']>7)]
Run Code Online (Sandbox Code Playgroud)
您提到的教程的这一部分显示了一个带有几个布尔条件的示例,并使用了括号.