[英]Sort dataframe by columns names if the columns are dates, pandas?
我的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
將字符串轉換為日期時間,然后按如下所示對它們進行排序:
from datetime import datetime
cols_as_date = [datetime.strptime(x,'%d-%m-%Y') for x in df.columns]
df = df[sorted(cols_as_data)]
將列轉換為日期時間,並使用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]
只需將您的列轉換為DateTime
df['newdate']=pd.to_datetime(df.date,format='%d-%m-%y')
然后使用sort_values對其進行排序
df.sort_values(by='newdate')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.