[英]Subtracting string and datetime.time repeatedly
我有一個熊貓數據框,其中有一個'時間'列,其中包含13:50:00
這樣的行(它是字符串類型)。現在我有一個時間格式為21:21:21
的時間,我想減去二。
現在我做了abs(datetime.strptime(a,'%H:%M:%S')。time()-recording_start_time))仍然給我錯誤
print(abs(datetime.strptime(a, '%H:%M:%S').time()- recording_start_time))
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
我的代碼看起來像-
min_time_diff = abs(df3.loc[cond & cond2 ]['Time'].apply(lambda x: datetime.strptime(x, '%H:%M:%S').time()- recording_start_time))
所以我需要一個更干凈的解決方案,而不是在此處提供的python中減去兩次,因為它正在搜索“時間”列中的所有行並從固定值中減去。
您可以使用.dt
訪問器將其轉換為datetime
,從timedelta
減去並返回僅time
序列。
delta = datetime.timedelta(hours=21, minutes=21, seconds=21)
diff = pd.to_datetime(df.t, format="%H:%M:%S") - delta
>>> diff.dt.time
例:
df = pd.DataFrame({'t':[time(2),time(8)]})
t
0 02:00:00
1 08:00:00
d = pd.to_datetime(df.t, format="%H:%M:%S") - datetime.timedelta(minutes=1, seconds=1, hours=1)
d.dt.time
0 00:58:59
1 06:58:59
Name: t, dtype: object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.