Python 根据午夜时间更改日期
我有一个数据框,其中包含3列日期和时间:日期、出发时间和到达时间。我想使用pandas制作两列datetime(出发时间和到达时间),因此我使用了to_datetime函数 由于日期列仅基于出发时间,因此在某些情况下,出发时间约为23:00,到达时间在24:00之后,但日期保持不变。例如: 出发日期时间:2017年12月1日23:58:00抵达时间2017年12月1日00:30:00 如果到达时间在午夜之后,我如何编写一个函数来将日期更新到第二天?(示例中应为2017年12月2日到达时间)Python 根据午夜时间更改日期,python,pandas,datetime,time-series,Python,Pandas,Datetime,Time Series,我有一个数据框,其中包含3列日期和时间:日期、出发时间和到达时间。我想使用pandas制作两列datetime(出发时间和到达时间),因此我使用了to_datetime函数 由于日期列仅基于出发时间,因此在某些情况下,出发时间约为23:00,到达时间在24:00之后,但日期保持不变。例如: 出发日期时间:2017年12月1日23:58:00抵达时间2017年12月1日00:30:00 如果到达时间在午夜之后,我如何编写一个函数来将日期更新到第二天?(示例中应为2017年12月2日到达时间) 谢谢
谢谢我想您可以检查差异是否在下面
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
为True
的行添加1天pd.Timedelta(1,unit='d')
。因此,只有第一行是当天添加的,第二行不是。如果我的答案有帮助,请不要忘记-单击复选标记(✓答案旁边的代码>),将其从灰显切换为填充。谢谢
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