我知道字串/物件到日期時間轉換有多種答案。我已經嘗試了其中的大部分,但仍然無法獲得理想的結果。
我有日期格式2024-08-01 00:00:00.0000000,我只想要日期部分2024-08-01格式。
我的資料框格式為:日期型別為物件
Date
2024-08-01 00:00:00.0000000
2024-09-01 00:00:00.0000000
使用 stackoverflow 中提供的答案,我執行了:
from dateutil.parser import parse
df['DATE'] = df['DATE'].apply(lambda x : parse(x)) #This will give in format 2024-08-01 00:00:00 of dtype datetime.
然后我用strftime它把它轉換成%Y-%m-%d格式。
def tz_datetime(date_tz):
date_obj = dt.datetime.strftime(date_tz, '%Y-%m-%d')
return date_obj
df['DATE'] = df['DATE'].apply(tz_datetime)
我的 DATE 列現在是物件 dtype。
df.head()給我:
DATE
2024-08-01
2024-09-01
然后我用pd.to_datetime它把它轉換成 datetime 物件。
df['DATE'] = pd.to_datetime(df['DATE'], format="%Y-%m-%d")
我還使用floor()選項以所需的日期格式獲取日期。
df['DATE'] = df['DATE'].dt.floor('d')
現在 datetime64[ns] 中的 DATE 資料型別。并df.head()顯示所需的格式。
但是,當我將其匯出為csv格式或display(df)再次將 DATE 列顯示為不同的格式時。
DATE
2024-10-01T00:00:00.000 0000
2024-08-01T00:00:00.000 0000
2024-07-01T00:00:00.000 0000
2024-06-01T00:00:00.000 0000
2017-10-01T00:00:00.000 0000
我已經用盡了以“%Y-%m-%d”格式獲取此日期的所有選項。有人可以解釋一下我做錯了什么,為什么這個日期格式在我做的時候顯示正確,.head()并在我display()輸入資料框時顯示 DATE 列的不同/實際值。
uj5u.com熱心網友回復:
如果您還沒有使用它,則 date_format 引數可能是您所缺少的。
df.to_csv(filename, date_format='%Y-%m-%d')
- https://stackoverflow.com/a/22798849/8328420
正如您在上面演示的那樣,在匯出時將資料截斷為“Ymd”仍然會提供更長的格式“Ymd H:M:Sf”(和一個額外的零),因為日期型別沒有改變。這意味著日期型別的輸出格式也沒有改變。
還有一個旁注:您希望避免strftime()僅僅為了獲得不同的格式而覆寫資料,因為您可能在以后的分析中需要丟失的資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382562.html
上一篇:如何使用javascript在一個小時內獲取陣列中最新資料和先前資料之間的差異?
下一篇:有沒有辦法在Model或Dto定義類中將DateTimeOffset更改為UtcDateTime或LocalDateTime?
