簡體   English   中英

如何僅減去 2 個 Pandas 列中的時間(不包括日期)?

[英]How to subtract only the time (excluding date) in 2 Pandas columns?

查找有關此信息的時間很糟糕。 我每天都在跟蹤幾個完成時間,以根據目標完成時間來衡量它們。

我正在將完成日期和時間讀入熊貓數據框中,並使用 df.map 映射完成時間字典以在數據框中創建“目標時間”列。

樣本數據:

Date                  Process
1/2/2020 10:20:00 AM  Test 1
1/2/2020 10:25:00 AM  Test 2
1/3/2020 10:15:00 AM  Test 1
1/3/2020 10:00:00 AM  Test 2

使用 df.map() 創建一個包含目標時間的列:

goalmap={
    'Test 1':dt.datetime.strptime('10:15', '%H:%M'),
    'Test 2':dt.datetime.strptime('10:30', '%H:%M')}
df['Goal Time']=df['Process'].map(goalmap)

然后我試圖創建一個新的“Delta”列,以分鍾為單位計算兩者之間的時間差。 我遇到的大多數問題都與數據類型有關。 我讓它通過使用 pd.to_datetime 轉換第一列(日期)來計算時差,但是因為我的“目標時間”列不存儲日期,它計算了一個巨大的增量(回到 1900 年)。 我也試過解析日期時間列中的時間無濟於事。

僅計算時間戳之間差異的最佳方法是什么?

我推薦timedelta超過datetime

goalmap={
    'Test 1': pd.to_timedelta('10:15:00'),
    'Test 2': pd.to_timedelta('10:30:00') }
df['Goal Time']=df['Process'].map(goalmap)

df['Goal_Timestamp'] = df['Date'].dt.normalize() + df['Goal Time']

df['Meet_Goal'] = df['Date'] <= df['Goal_Timestamp']

輸出:

                 Date Process Goal Time      Goal_Timestamp  Meet_Goal
0 2020-01-02 10:20:00  Test 1  10:15:00 2020-01-02 10:15:00      False
1 2020-01-02 10:25:00  Test 2  10:30:00 2020-01-02 10:30:00       True
2 2020-01-03 10:15:00  Test 1  10:15:00 2020-01-03 10:15:00       True
3 2020-01-03 10:00:00  Test 2  10:30:00 2020-01-03 10:30:00       True

暫無
暫無

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

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