2015-11-05 23 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]