所以,基本上,我得到了這 2 個帶有資料內容的 df 列。初始內容是dd/mm/YYYY格式,我想減去它們。但是我不能真正減去字串,所以我將其轉換為日期時間,但是當我出于某種原因執行此類操作時,格式更改為 YYYY-dd-mm,因此當我嘗試減去它們時,我得到了錯誤的結果。例如:
初始內容:
a: 05/09/2022
b: 30/09/2021
result expected: 25 days.
轉換為日期時間:
a: 2022-05-09
b: 2021-09-30 (For some reason this date stills the same)
result: 144 days.
我正在使用熊貓和日期時間來制作這個專案。所以,我想知道一種方法,我可以用正確的結果減去這 2 列。
- - 回答
當我用
pd.to_datetime(date, format="%d/%m/%Y")
有效。謝謝大家的時間。這是我在 Pandas 的第一個專案。:)
uj5u.com熱心網友回復:
df = pd.DataFrame({'Date1': ['05/09/2021'], 'Date2': ['30/09/2021']})
df = df.apply(lambda x:pd.to_datetime(x,format=r'%d/%m/%Y')).assign(Delta=lambda x: (x.Date2-x.Date1).dt.days)
print(df)
Date1 Date2 Delta
0 2021-09-05 2021-09-30 25
uj5u.com熱心網友回復:
我剛剛在這里回答了一個類似的查詢,在 python 中減去日期
import datetime
from datetime import date
from datetime import datetime
import pandas as pd
date_format_str = '%Y-%m-%d %H:%M:%S.%f'
date_1 = '2016-09-24 17:42:27.839496'
date_2 = '2017-01-18 10:24:08.629327'
start = datetime.strptime(date_1, date_format_str)
end = datetime.strptime(date_2, date_format_str)
diff = end - start
# Get interval between two timstamps as timedelta object
diff_in_hours = diff.total_seconds() / 3600
print(diff_in_hours)
# get the difference between two dates as timedelta object
diff = end.date() - start.date()
print(diff.days)
熊貓
import datetime
from datetime import date
from datetime import datetime
import pandas as pd
date_1 = '2016-09-24 17:42:27.839496'
date_2 = '2017-01-18 10:24:08.629327'
start = pd.to_datetime(date_1, format='%Y-%m-%d %H:%M:%S.%f')
end = pd.to_datetime(date_2, format='%Y-%m-%d %H:%M:%S.%f')
# get the difference between two datetimes as timedelta object
diff = end - start
print(diff.days)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/374932.html
