所以我有一個關于來自 Excel 作業表的日期的問題,我正在將其轉換為 CSV 然后加載到資料框中。基本上,我每天處理的資料可以有兩種不同的格式。這兩個日期列被稱為Appointment Date和Attended Date
我正在處理 (DD/MM/YYYY HH:MM) 和 (YYYY/MM/DD HH:MM) 并且它來自第三方,所以我無法設定日期格式結構。我需要做的是決議資料并洗掉 HH:MM 并輸出資料只有 DD/MM/YYYY。
我當前的代碼如下:
df['Appointment Date'] = df['Appointment Date'].str.replace(' ', '/', regex=True)
df['Attended Date'] = df['Attended Date'].str.replace(' ', '/', regex=True)
df['Appointment Date'] = pd.to_datetime(df['Appointment Date'], format="%d/%m/%Y/%H:%M").dt.strftime("%d/%m/%Y")
df['Attended Date'] = pd.to_datetime(df['Attended Date'], format="%d/%m/%Y/%H:%M").dt.strftime("%d/%m/%Y")
但是當資料作為 YYYY/MM/DD HH:MM 例外錯誤出現時,我無法決議資料:
time data '2021-10-08/00:00:00' does not match format '%d/%m/%Y/%H:%M' (match)
關于如何解決這個問題的任何想法?
uj5u.com熱心網友回復:
以一種方式嘗試,如果不起作用,請嘗試另一種方式。
try:
df['Appointment Date'] = pd.to_datetime(df['Appointment Date'], format="%d/%m/%Y/%H:%M").dt.strftime("%d/%m/%Y")
except WhateverDateParseException:
df['Appointment Date'] = pd.to_datetime(df['Appointment Date'], format="%Y/%m/%d/%H:%M").dt.strftime("%d/%m/%Y")
當然,不要WhateverDateParseException使用代碼中引發的實際例外。
uj5u.com熱心網友回復:
我將使用正則運算式如下:
import pandas as pd
df = pd.DataFrame({"daytime": ["31/12/2020 23:59", "2020/12/31 23:59"]})
df["daypart"] = df["daytime"].str.replace(r" \d\d:\d\d","") # drop HH:MM part
df["day"] = df["daypart"].str.replace(r"(\d\d\d\d)/(\d\d)/(\d\d)", r"\3/\2/\1")
print(df)
輸出
daytime daypart day
0 31/12/2020 23:59 31/12/2020 31/12/2020
1 2020/12/31 23:59 2020/12/31 31/12/2020
說明:我在 second 中使用了所謂的捕獲組.replace,如果有 (4 位數字)/(2 位數字)/(2 位數字),它們的順序將重新排列為 3rd 成為 1st,2nd 成為 2nd 和 1st 成為 3rd(注意組是基于 1 的,而不是像一般python索引的情況一樣的 0 基)。ASday格式現在是一致的,您可以輕松決議它。
uj5u.com熱心網友回復:
正如@C14L 所提到的,可以遵循該方法,但我猜看到您的例外是您需要在時間格式中添加秒格式 (%S),因此更新后的代碼將類似于
try:
df['Appointment Date'] = pd.to_datetime(df['Appointment Date'], format="%d/%m/%Y/%H:%M:%S").dt.strftime("%d/%m/%Y")
except WhateverDateParseException:
df['Appointment Date'] = pd.to_datetime(df['Appointment Date'], format="%Y/%m/%d/%H:%M:%S").dt.strftime("%d/%m/%Y")
uj5u.com熱心網友回復:
格式%d/%m/%Y/%H:%M與日期時間字串不匹配2021-10-08/00:00:00。您需要使用%Y-%m-%d/%H:%M:%S此日期時間字串。
演示:
from datetime import datetime
date_time_str = '2021-10-08/00:00:00'
date_str = datetime.strptime(date_time_str, '%Y-%m-%d/%H:%M:%S').strftime('%d/%m/%Y')
print(date_str)
輸出:
08/10/2021
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313620.html
上一篇:查找兩個csv檔案之間的共同值
