Tôi đang cố gắng thực hiện nhiều lựa chọn nhiều cột từ khung dữ liệu gấu trúc nhưng dường như không thể tìm ra cách hay để thực hiện điều đó.
cài đặt:
nhập gấu trúc dưới dạng pd
nhập numpy dưới dạng np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 8)),columns=list('ABCDEFGH'))
Giả sử tôi muốn tìm các hàng trong khung dữ liệu trong đó cột "A" và cột "B" lớn hơn 50, tôi sẽ làm như sau:
df[['A', 'B']].where(lambda x: x > 50).dropna()
Bây giờ giả sử tôi cũng muốn chọn các cột "E" và "F" nhỏ hơn 25.
Làm thế nào tôi có thể đạt được mục tiêu này?
Để ý: Trong tập dữ liệu thực tế, ['A', 'B'] có thể là một tập hợp gồm hơn 10 cột không liên tiếp, trong khi ['E', 'F'] có thể là một tập hợp hoặc một tập hợp gồm hơn 10 cột không liên tiếp -các cột liên tiếp. Tôi có danh sách tên cột cho từng bộ tiêu chí. Vì vậy tôi muốn tránh ('A' > 50) & ('B' > 50)
Bởi vì tôi phải xâu chuỗi hơn 30 điều kiện bool lại với nhau.
nhập gấu trúc dưới dạng pd
nhập numpy dưới dạng np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 8)),columns=list('ABCDEFGH'))
Xác định các cột bị ràng buộc:
cột1 = ['A', 'B', 'C', 'E']
cột2 = ['D', 'F']
Xác định và áp dụng các ràng buộc
ràng buộc1 = (df[cột1] > 50).all(axis =1)
ràng buộc2 = (df[cột2] < 50).any(trục =1)
in df[ràng buộc1 & ràng buộc2]
Để ý:
.any(axis=1) hoạt động như một toán tử OR khi áp dụng các ràng buộc cho các cột.
.all(axis=1) Hoạt động như toán tử AND khi áp dụng các ràng buộc cho các cột.
Tôi là một lập trình viên xuất sắc, rất giỏi!