i有数据框>。我想使用pandas进行两列DateTime(出发时间和到达时间(,因此我使用 to_dateTime function。
由于仅基于出发时间的日期列,在某些情况下,出发时间约为23:00,到达时间为24:00之后,但日期保持不变。例如:
离开日期时间:01/12/2017 23:58:00到达时间01/12/2017 00:30:00
如果到达午夜之后的时间,我该如何编写一个将更新到下一天的函数?(在示例中,应该到达时间02/12/2017(
谢谢
我认为您可以检查差异是bellow 0 Timedelta
,并通过掩码添加一天:
print (df)
depart time arrive time
0 01/12/2017 23:58:00 01/12/2017 00:30:00
1 01/12/2017 00:30:00 01/12/2017 23:58:00
df['depart time'] = pd.to_datetime(df['depart time'], dayfirst=True)
df['arrive time'] = pd.to_datetime(df['arrive time'], dayfirst=True)
m = (df['arrive time'] - df['depart time']) < pd.Timedelta(0)
另一个条件应该是:
m = (df['depart time'] - df['arrive time']).dt.days != -1
print (m)
0 True
1 False
dtype: bool
df['arrive time'] = df['arrive time'].mask(m, df['arrive time'] + pd.Timedelta(1, unit='d'))
print (df)
depart time arrive time
0 2017-12-01 23:58:00 2017-12-02 00:30:00
1 2017-12-01 00:30:00 2017-12-01 23:58:00