我的df列名称是以下格式的日期:dd-mm-yy。当我使用sort_index(axis = 1)时,它按前两位数字(指定日期)排序,因此按时间顺序没有意义。如何考虑到月份又如何自动对它进行排序?
我的df标头:
submitted_at 06-05-18 13-05-18 29-04-18
我期望输出:
submitted_at 29-04-18 06-05-18 13-05-18
答案 0 :(得分:1)
将字符串转换为日期时间,然后按如下所示对其进行排序:
from datetime import datetime
cols_as_date = [datetime.strptime(x,'%d-%m-%Y') for x in df.columns]
df = df[sorted(cols_as_data)]
答案 1 :(得分:0)
将列转换为日期时间,并使用argsort
查找正确的顺序。这样会将所有非日期按出现的顺序放在左侧,然后是排序的日期。
import pandas as pd
df = pd.DataFrame(columns=['submitted_at', '06-05-18', '13-05-18', '29-04-18'])
idx = pd.to_datetime(df.columns, errors='coerce', format='%d-%m-%y').argsort()
df.iloc[:, idx]
Empty DataFrame
Columns: [submitted_at, 29-04-18, 06-05-18, 13-05-18]
答案 2 :(得分:0)
只需将列转换为DateTime
df['newdate']=pd.to_datetime(df.date,format='%d-%m-%y')
然后使用sort_values对其进行排序
df.sort_values(by='newdate')