如何按日期顺序对df中的列进行重新排序

时间:2020-06-29 14:41:58

标签: python pandas dataframe

我正在尝试订购df,以使列从2008年到2011年。

date_order = oval_df.columns.sort_values(ascending=True)
oval_df = oval_df.reindex(columns=[date_order])

如果我执行以下代码,我将得到

enter image description here

应该反映但顺序正确的地方

date_order返回:

Index(['Dec. 31, 2008', 'Dec. 31, 2009', 'Dec. 31, 2009A', 'Dec. 31, 2010',
   'Dec. 31, 2010A', 'Dec. 31, 2011'],
  dtype='object')

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您只有7列,为什么不手动排​​序:

oval_df=oval_df[['Dec. 31, 2008', 'Dec. 31, 2009', 'Dec. 31, 2009A', 'Dec. 31, 2010', 'Dec. 31, 2010A', 'Dec. 31, 2011']]

您不必全部输入,可以在pandas库的帮助下访问列名,代码将为df.columns

答案 1 :(得分:0)

您可以通过以下方式获取所有列的列表

cols = df.columns

,然后按最后一个元素对其重新排序:

cols_new = sorted(cols, key=lambda x: x.split(' ')[-1])

现在您的cols已在cols_new中订购。