如果列是日期,大熊猫,则按列名称对数据框进行排序?

时间:2019-08-06 13:16:12

标签: python pandas sorting

我的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

3 个答案:

答案 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')
相关问题