我有一个超过200列的数据框架。问题是它们生成的顺序是
['Q1.3','Q6.1','Q1.2','Q1.1',......]
我需要对列进行排序如下:
['Q1.1','Q1.2','Q1.3',.....'Q6.1',......]
在Python中有什么方法可以做到这一点吗?
我有一个超过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)]
其他回答
最快的方法是:
df.sort_index(axis=1)
请注意,这会创建一个新实例。因此,你需要将结果存储在一个新变量中:
sortedDf=df.sort_index(axis=1)
print df.sort_index(by='Frequency',ascending=False)
如果要根据列对数据集进行排序,by是列的名称
如果你需要一个任意序列而不是排序序列,你可以这样做:
sequence = ['Q1.1','Q1.2','Q1.3',.....'Q6.1',......]
your_dataframe = your_dataframe.reindex(columns=sequence)
我在2.7.10测试了这个,它对我有用。
对于几个列,你可以按你想要的顺序排列:
#['A', 'B', 'C'] <-this is your columns order
df = df[['C', 'B', 'A']]
这个例子展示了对列进行排序和切片:
d = {'col1':[1, 2, 3], 'col2':[4, 5, 6], 'col3':[7, 8, 9], 'col4':[17, 18, 19]}
df = pandas.DataFrame(d)
你会得到:
col1 col2 col3 col4
1 4 7 17
2 5 8 18
3 6 9 19
然后做:
df = df[['col3', 'col2', 'col1']]
导致:
col3 col2 col1
7 4 1
8 5 2
9 6 3
你可以这样做:
df[sorted(df.columns)]
编辑:更短是
df[sorted(df)]