Python:通过升序值重新排列DataFrame中的列顺序

时间:2014-05-13 12:48:12

标签: python pandas

我的DataFrame列是:

df.columns
>>>Index([u'1', u'10', u'120', u'1800', u'30', u'300', u'3600', u'5', u'60', u'600'], dtype='object')

我如何对列进行排序,以便我有一个像1, 5, 10, 30, 60, 120, 300, 600, 1800, 3600这样的升序序列? 我试过这个:     df = df.reindex_axis(已排序(df.columns),轴= 1)

但不适用于数字。

2 个答案:

答案 0 :(得分:4)

你走了:

df.rename(columns=int).sort(axis=1)

rename期望转换的函数。

答案 1 :(得分:2)

您可以将它们转换为整数,然后排序。

In [16]: idx = df.columns
In [17]: df.columns = idx.astype(int)

In [18]: idx.order()
Out[18]: Int64Index([1, 5, 10, 30, 60, 120, 300, 600, 1800, 3600], dtype='int64')

您需要将数据框的列设置为int版本。然后拨打df = df[idx.order()]