簡體   English   中英

熊貓日期發生變化時,如何減去時間?

[英]How to subtract time when there is a date change in pandas?

我在熊貓中有以下數據框

    start_date        start_time        end_time
    2018-01-01        23:55:00          00:05:00
    2018-01-02        00:05:00          00:10:00
    2018-01-03        23:59:00          00:05:00

我想計算時差。 但是,對於第1次和第3次觀察, end_time有一個日期更改。

我該怎么做在熊貓里?

當前,我正在使用end_time小於start_time的邏輯,我要創建一個稱為end_date列,在該列中, start_date遞增1,然后減去時間。

還有其他方法嗎?

解決方案使用timedeltas-如果時差等於-1 days則加1天:

df['start_time'] = pd.to_timedelta(df['start_time'])
df['end_time'] = pd.to_timedelta(df['end_time'])

d =  df['end_time'] - df['start_time']
df['diff'] = d.mask(d.dt.days == -1, d + pd.Timedelta(1, unit='d'))
print (df)
   start_date start_time end_time     diff
0  2018-01-01   23:55:00 00:05:00 00:10:00
1  2018-01-02   00:05:00 00:10:00 00:05:00
2  2018-01-03   23:59:00 00:05:00 00:06:00

另一個解決方案:

s = df['end_time'] - df['start_time']
df['diff'] = np.where(df['end_time'] < df['start_time'], 
                      s + pd.Timedelta(1, unit='d'), 
                      s)
print (df)

   start_date start_time end_time     diff
0  2018-01-01   23:55:00 00:05:00 00:10:00
1  2018-01-02   00:05:00 00:10:00 00:05:00
2  2018-01-03   23:59:00 00:05:00 00:06:00

暫無
暫無

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

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