2015-11-05 29 views
2

最近更新爲熊貓0.17.0,我試圖按字母順序排列我的數據框中的列。數據框中的排序列

這裏是列標籤,因爲它們目前是:

['UX2', 'RHO1', 'RHO3', 'RHO2', 'RHO4', 'UX1', 'UX4', 'UX3'] 

而且我想他們是這樣的:

['RHO1', 'RHO2', 'RHO3', 'RHO4', 'UX1', 'UX2', 'UX3', 'UX4'] 

我已經能夠做到這一點的唯一方法是從下面這個3年前:How to change the order of DataFrame columns?

在0.17.0中有內置的方法嗎?

回答

3

要列字母排序,在這裏,你可以用sort_index

df.sort_index(axis=1) 

該方法返回以正確的順序列的重建索引數據幀。

這假設所有的列標籤都是字符串(它不適用於混合字符串和整數)。如果此不是的情況下,您可能需要將明確的順序傳遞給reindex方法。

1

您可以對它們進行排序並將它們放回去。假設你有這樣的:

df = pd.DataFrame() 
for i, n in enumerate(['UX2', 'RHO1', 'RHO3', 'RHO2', 'RHO4', 'UX1', 'UX4', 'UX3']): 
    df[n] = [i] 

它看起來像這樣:

df 
    UX2 RHO1 RHO3 RHO2 RHO4 UX1 UX4 UX3 
0 0  1  2  3  4 5 6 7 

這樣做:

df = df[ sorted(df.columns)] 

,你應該看到這一點:

df 
    RHO1 RHO2 RHO3 RHO4 UX1 UX2 UX3 UX4 
0  1  3  2  4 5 0 7 6 
1

創建列表列標籤按您想要的順序排列。

cols = ['RHO1', 'RHO2', 'RHO3', 'RHO4', 'UX1', 'UX2', 'UX3', 'UX4'] 

然後按順序分配給您的數據幀DF:

df = df[cols]