簡體   English   中英

如果列是日期,大熊貓,則按列名稱對數據框進行排序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM