所以,我有一個資料框(mean_df),其中包含一個非常混亂的日期列。很亂,因為它是這種格式:1/1/2018, 1/2/2018, 1/3/2018....什么時候應該是 01/01/2018, 02/01/2018, 03/01/ 2018...不僅格式錯誤,而且是每個月的第一天遞增,然后是每個月的第二天,以此類推...所以我撰寫了以下代碼來修復格式:
mean_df["Date"] = mean_df["Date"].astype('datetime64[ns]')
mean_df["Date"] = mean_df["Date"].dt.strftime('%d-%m-%Y')
然后,從顯示這個:

它現在顯示了這一點(我必須運行同一個單元 3 次才能使其作業,它總是第一次拋出錯誤):

最后,在過去的幾個小時里,我一直在嘗試以升序方式對“日期”列進行排序,但它一直以錯誤的方式排序:
mean_df = mean_df.sort_values(by='Date') # I tried this
但這是輸出:

正如你所看到的,它仍然是優先天數。有人可以指導我正確的方向嗎?先感謝您!
uj5u.com熱心網友回復:
把它變成正確的格式
mean_df["sort_date"] = pd.to_datetime(mean_df["Date"],format = '%d/%m/%Y')
mean_df = mean_df.sort_values(by='sort_date') # Try this now
uj5u.com熱心網友回復:
您應該在將日期轉換為日期時間之后對日期進行排序,因為dt.strftime將日期時間轉換為字串
mean_df["Date"] = pd.to_datetime(mean_df["Date"], dayfirst=True)
mean_df = mean_df.sort_values(by='Date')
mean_df["Date"] = mean_df["Date"].dt.strftime('%d-%m-%Y')
uj5u.com熱心網友回復:
這是我的示例代碼。
import pandas as pd
df = pd.DataFrame()
df['Date'] = "1/1/2018, 1/2/2018, 1/3/2018".split(", ")
df['Date1'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')
df['Date2'] = df['Date1'].dt.strftime('%d/%m/%Y')
df.sort_values(by='Date2')
首先,我轉換Date為datetime格式。正如我所觀察到的,您的資料遵循'%d/%m/%Y'格式。如果您想以另一種形式顯示資料,請嘗試以下行,例如
df['Date2'] = df['Date1'].dt.strftime('%d/%m/%Y')
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/486475.html
上一篇:按反向Java排序的自定義排序
