2016-10-13 44 views
7

Tôi có tệp csv với 50 cột dữ liệu. Tôi đang sử dụng Pandas read_csv chức năng để kéo trong một tập hợp con của các cột này, bằng cách sử dụng tham số usecols để lựa chọn những cái tôi muốn:Giữ các cột theo thứ tự được chỉ định khi sử dụng UseCols trong Pandas Read_CSV

cols_to_use = [0,1,5,16,8] 
df_ret = pd.read_csv(filepath, index_col=False, usecols=cols_to_use) 

Vấn đề là df_ret chứa các cột đúng, nhưng không phải theo thứ tự tôi đã chỉ định. Chúng nằm trong thứ tự tăng dần, vì vậy [0,1,5,8,16]. (Bằng cách này, các số cột có thể thay đổi từ chạy để chạy, đây chỉ là một ví dụ.) Đây là vấn đề vì phần còn lại của mã có các mảng nằm trong thứ tự "đúng" và tôi không muốn sắp xếp lại tất cả của họ.

Có bất kỳ cách thức thông minh nào để kéo theo các cột theo thứ tự được chỉ định không? Bất kì sự trợ giúp nào đều được đánh giá cao!

Trả lời

5

bạn có thể tái sử dụng cùng một danh sách cols_to_use cho việc lựa chọn các cột theo thứ tự mong muốn:

df_ret = pd.read_csv(filepath, index_col=False, usecols=cols_to_use)[cols_to_use] 
+0

Cảm ơn cho điều này! Phương pháp này có ý nghĩa nhưng tôi không nghĩ rằng tôi có thể sử dụng cols_to_use để sắp xếp lại nó, bởi vì các khung dữ liệu chỉ có 5 cột và vì vậy cột 5, 8 và 16 nằm ngoài giới hạn. – AButkov

+0

Vì vậy, tôi đã thực hiện col_reorder = [0,1,2,4,3] mà tôi sử dụng ở cuối, tức là df_ret = pd.read_csv (filepath, index_col = False, usecols = cols_to_use) [col_reorder]. Điều này đặt chúng theo thứ tự mong muốn. – AButkov

+0

@AButkov, câu trả lời của tôi sẽ hoạt động đúng nếu bạn chỉ định tên cột thay vì chỉ mục của chúng trong danh sách 'cols_to_use' – MaxU

Các vấn đề liên quan