2016-10-13 27 views
7

我有一個包含50列數據的csv文件。我使用read_csv功能這些列的一個子集拉大熊貓,使用usecols參數來選擇我想要的:在熊貓中使用UseCols時按照指定順序保存列Read_CSV

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

麻煩的是df_ret包含正確的列,但不能在我指定的順序。它們按升序排列,因此[0,1,5,8,16]。 (順便提一下,列號可以從運行改變爲運行,這只是一個例子。)這是一個問題,因爲其餘的代碼都有「正確」順序的數組,而且我不想重新排序所有其中。

是否有任何聰明的熊貓方式在指定的順序拉列?任何幫助將非常感激!

回答

5

可以重複使用相同的cols_to_use列表中所需的順序選擇列:

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

感謝這個!該方法是有道理的,但我不認爲我可以使用cols_to_use對它重新排序,因爲數據幀只有5列,所以列5,8和16出界。 – AButkov

+0

所以我在最後使用了col_reorder = [0,1,2,4,3],即df_ret = pd.read_csv(filepath,index_col = False,usecols = cols_to_use)[col_reorder]。這使他們按照期望的順序。 – AButkov

+0

@AButkov,如果你要在'cols_to_use'列表中指定列名而不是它們的索引,我的回答將正常工作 – MaxU