根据午夜时间更改日期

时间:2018-02-08 15:17:07

标签: python pandas datetime time-series

我的数据框包含3列日期和时间:日期离开时间到达时间。我想使用pandas制作两列日期时间(离开时间和到达时间),因此我使用 to_datetime 功能。

由于日期栏仅基于出发时间,因此在某些情况下,出发时间约为23:00,到达时间为24:00之后,但日期保持不变。例如:

离开日期时间:01/12/2017 23:58:00到达时间01/12/2017 00:30:00

如果到达时间是在午夜之后,我怎么能写一个能更新当天到第二天的功能? (在示例中应该是到达时间02/12/2017)

感谢

1 个答案:

答案 0 :(得分:1)

我认为您可以检查差异是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