簡體   English   中英

添加,減去 datetime.time 列熊貓

[英]adding,subtracting datetime.time columns pandas

我有以下數據框

flight_departure   arrival_at_desination   boarding  total_flight_time   total_flight_time/2    time_to_collect_bags
0:00                     4:00               23:30           4:00                  2:00                     4:30
9:00                     14:30              8:30            5:30                  2:45                      15:00

flight_departure- 0:00 signifies 12:00 AM
arrival_at_desination- 4:00 signifies 4 AM
boarding = flight_departure-30 minutes(23:30)
total_flight_time=arrival_at_desination-flight_departure(4 hours)

total_flight_time/2-calculates hald time(2 hours in this case)
time_to_collect_bags=arrival_at_desination+30 minutes(4:30AM)

當我嘗試執行以下操作時

df['arrival_at_desination']-df['flight_departure']

它給了我以下錯誤

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

我應該如何減去兩個 datetime.time 列?

您必須轉換為數據時間格式才能轉換試試這個

arrival = pd.to_datetime(df['arrival_at_desination'])
dept = pd.to_datetime(df['flight_departure'])
diff = arrival - dept

這就是我得到的,希望對您有所幫助

0   -1 days +20:00:00
1   -1 days +18:30:00

否則將日期添加到數據中,與時間連接並執行上述操作

一般來說,沒有日期信息是不可能減去兩次的(如果凌晨 1 點到達,晚上 11 點出發怎么辦?)。 如果您假設他們在同一天,並且到達時間總是大於出發時間,您可以執行以下操作。 這並不漂亮,希望有人提出更好的答案。

(pd.to_datetime(df.arrival_at_desination.astype(str), format='%H:%M:%S') -
    pd.to_datetime(df.flight_departure.astype(str), format='%H:%M:%S'))

我發現要完成這項工作 (python3.68),您需要將時間與日期結合起來——無論是真實的還是虛假的。

import pandas as pd


df = pd.DataFrame(columns=['to','fr','ans'])

date = "1-1-01 "
tmp = pd.Series(['13:03:12','11:57:18','10:07:47'])
tm =pd.to_datetime(date+tmp, format='%d-%m-%y %H:%M:%S')

tmp = pd.Series(['13:02:12','10:57:18','10:07:22'])
tm2 =pd.to_datetime(date+tmp, format='%d-%m-%y %H:%M:%S')

df.to = tm2
df.fr = tm

(df.fr-df.to)
#if you want this as seconds -- which for my applications has been more useful.
(df.fr-df.to).astype('timedelta64[s]')

嗯... .sub()方法可以解決這個問題嗎? 你試過了嗎 ?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM