2015-03-26 50 views
5

Các tiêu chí sau đây mang lại cho tôi một kết quả False Boolean True (lược là một dataframe với hơn 1.000 cột và tôi chọn các cột với hơn 4000 mục.cột Pandas Chọn DataFrame sử dụng boolean

criteria=comb.ix[:,'c_0327':].count()>4000 

Tôi muốn . sử dụng nó để chọn các cột Đúng như một Dataframe mới
Sau đây chỉ mang lại cho tôi "Unalignable chính boolean Dòng cung cấp"

comb.loc[criteria,] 

tôi cũng đã cố gắng:

comb.ix[:, comb.ix[:,'c_0327':].count()>4000] 

Tương tự như câu trả lời câu hỏi này dataframe boolean selection along columns instead of row nhưng điều đó mang lại cho tôi những lỗi tương tự: "Unalignable chính boolean Dòng cung cấp"

comb.ix[:,'c_0327':].count()>4000 

sản lượng:

c_0327 False 
c_0328 False 
c_0329 False 
c_0330 False 
c_0331 False 
c_0332 False 
c_0333 False 
c_0334 False 
c_0335 False 
c_0336 False 
c_0337  True 
c_0338 False 
..... 
+0

bạn không muốn 'comb [criteria.columns] '? – EdChum

+1

comb [criteria.columns] cho tôi đối tượng "Series" không có thuộc tính 'cột' – dartdog

Trả lời

10

gì được trả về là một Series với tên cột là chỉ mục và giá trị boolean làm giá trị hàng.

Tôi nghĩ rằng thực sự bạn muốn:

này nên bây giờ làm việc:

comb[criteria.index[criteria]] 

Về cơ bản này sử dụng các giá trị chỉ số từ tiêu chuẩn và các giá trị boolean để che giấu chúng, điều này sẽ trả về một mảng các tên cột , chúng ta có thể sử dụng điều này để chọn các cột quan tâm từ orig df.

3

Bạn cũng có thể sử dụng:

 
# To filter columns (assuming criteria length is equal to the number of columns of comb) 
comb.ix[:, criteria] 
comb.iloc[:, criteria] 

# To filter rows (assuming criteria length is equal to the number of rows of comb) 
comb[criteria] 
Các vấn đề liên quan