df.reindex_axis(sorted(df.columns), axis=1)
这假定对列名进行sorting会给你想要的订单。 如果你的列名不按照字典顺序排列(例如,如果你想在Q9.1之后出现Q10.3的列),你需要以不同的方式sorting,但这与pandas没有任何关系。
你也可以做得更简洁:
df.sort_index(axis=1)
编辑 :
确保你保持价值
df = df.sort_index(axis=1)
或者做到位
df.sort_index(axis=1, inplace=True)
你可以做:
DF [sorting(df.columns)]
Tweet的答案可以通过上面的BrenBarn的答案
data.reindex_axis(sorted(data.columns, key=lambda x: float(x[1:])), axis=1)
所以对于你的例子,说:
vals = randint(low=16, high=80, size=25).reshape(5,5) cols = ['Q1.3', 'Q6.1', 'Q1.2', 'Q9.1', 'Q10.2'] data = DataFrame(vals, columns = cols)
你得到:
data Q1.3 Q6.1 Q1.2 Q9.1 Q10.2 0 73 29 63 51 72 1 61 29 32 68 57 2 36 49 76 18 37 3 63 61 51 30 31 4 36 66