mặc dù có ít nhất twogood hướng dẫn về cách lập chỉ mục một DataFrame trong thư viện pandas
của Python, tôi vẫn không thể thực hiện một cách thanh lịch SELECT
ing trên nhiều cột.Trác thảo Python: Lập chỉ mục Boolean trên nhiều cột
>>> 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()
Tôi đã tìm thấy (những gì tôi nghĩ là) một cách khá thanh nha để làm việc đó, như thế này
>>> d[d['x']>2][d['y']>7]
Nhưng nó không đẹp, và nó điểm khá thấp để có thể đọc (tôi nghĩ).
Có cách nào tốt hơn, Python-tastic hơn không?
công trình này, nhưng kết thúc bằng cách sử dụng toán tử python (chứ không phải là gumpy) và vì vậy sẽ chậm hơn nhiều – Jeff
đó là một giải pháp tốt đẹp. Tôi thích thực tế là nó sử dụng một cách rõ ràng 'và'. Làm cho nó rõ ràng hơn rằng có hai điều kiện được đánh giá. – LondonRob
Ồ, tôi vừa tìm thấy [một bản sao] (http://stackoverflow.com/questions/8916302/selecting-across-multiple-columns-with-python-pandas) của câu hỏi này. Rất tiếc. – LondonRob