我有一个超过200列的数据框架。问题是它们生成的顺序是

['Q1.3','Q6.1','Q1.2','Q1.1',......]

我需要对列进行排序如下:

['Q1.1','Q1.2','Q1.3',.....'Q6.1',......]

在Python中有什么方法可以做到这一点吗?


当前回答

你可以这样做:

df[sorted(df.columns)]

编辑:更短是

df[sorted(df)]

其他回答

print df.sort_index(by='Frequency',ascending=False)

如果要根据列对数据集进行排序,by是列的名称

最快的方法是:

df.sort_index(axis=1)

请注意,这会创建一个新实例。因此,你需要将结果存储在一个新变量中:

sortedDf=df.sort_index(axis=1)

不要忘记在Wes的答案中添加“inplace=True”,或者将结果设置为新的DataFrame。

df.sort_index(axis=1, inplace=True)

你可以这样做:

df[sorted(df.columns)]

编辑:更短是

df[sorted(df)]

如果你需要一个任意序列而不是排序序列,你可以这样做:

sequence = ['Q1.1','Q1.2','Q1.3',.....'Q6.1',......]
your_dataframe = your_dataframe.reindex(columns=sequence)

我在2.7.10测试了这个,它对我有用。