我正在尝试订购df,以使列从2008年到2011年。
date_order = oval_df.columns.sort_values(ascending=True)
oval_df = oval_df.reindex(columns=[date_order])
如果我执行以下代码,我将得到
应该反映但顺序正确的地方
date_order返回:
Index(['Dec. 31, 2008', 'Dec. 31, 2009', 'Dec. 31, 2009A', 'Dec. 31, 2010',
'Dec. 31, 2010A', 'Dec. 31, 2011'],
dtype='object')
答案 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
中订购。