python中两列之间的python日期时间计算

2024-05-14 17:56:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧: 这个数据帧叫做df_NoMissing_IDV。你知道吗

NoDemande   NoUsager  Sens  IdVehiculeUtilise  Fait  HeureArriveeSurSite   HeureEffective      Periods
42196000013  000001    +         287Véh          1  11/07/2015 08:02:07  11/07/2015 08:02:13    Matin
42196000013  000001    -         287Véh          1  11/07/2015 08:17:09  11/07/2015 08:17:13    Matin
42196000002  000314    +         263Véh          1  11/07/2015 09:37:43  11/07/2015 09:53:37    Matin
42196000016  002372    +         287Véh          1  11/07/2015 09:46:42  11/07/2015 10:01:39    Matin
42196000015  000466    +         287Véh          1  11/07/2015 09:46:42  11/07/2015 10:01:39    Matin
42196000002  000314    -         263Véh          1  11/07/2015 10:25:17  11/07/2015 10:38:11    Matin
42196000015  000466    -         287Véh          1  11/07/2015 10:48:51  11/07/2015 10:51:30    Matin
42196000016  002372    -         287Véh          1  11/07/2015 11:40:56  11/07/2015 11:41:01    Matin
42196000004  002641    +         263Véh          1  11/07/2015 13:39:29  11/07/2015 13:52:50    Soir
42196000004  002641    -         263Véh          1  11/07/2015 13:59:56  11/07/2015 14:07:41    Soir  

我需要得到列HeureArriveeSurSiteHeureEffective之间的边距,它们已经是datetime.datetime()数据了。你知道吗

这里有一个新的DataFrame,叫做df1。你知道吗

df1 = df_NoMissing_IDV[(df_NoMissing_IDV['Sens'] == '+') & (df_NoMissing_IDV['Periods'] == 'Matin')]

df1看起来是这样的:

NoDemande   NoUsager  Sens  IdVehiculeUtilise  Fait  HeureArriveeSurSite   HeureEffective      Periods
42196000013  000001    +         287Véh          1  11/07/2015 08:02:07  11/07/2015 08:02:13    Matin
42196000002  000314    +         263Véh          1  11/07/2015 09:37:43  11/07/2015 09:53:37    Matin
42196000016  002372    +         287Véh          1  11/07/2015 09:46:42  11/07/2015 10:01:39    Matin
42196000015  000466    +         287Véh          1  11/07/2015 09:46:42  11/07/2015 10:01:39    Matin

因为它们都是datetime.datetime()数据,所以我尝试直接用以下方法进行减法:

df_NoMissing_IDV['DureeService'] = df1['HeureEffective']-df1['HeureArriveeSurSite']

但是它返回了TypeError: unsupported operand type(s) for -: 'unicode' and 'unicode'

我还尝试用datetime.time()类型进行计算,结果返回TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'我该怎么处理它?你知道吗

编辑

我将df1中的列转换为datetime()

df1.HeureArriveeSurSite = pd.to_datetime(df1.HeureArriveeSurSite)
df1.HeureEffective = pd.to_datetime(df1.HeureEffective)

但下一步仍然是错误的,返回:ValueError: cannot reindex from a duplicate axis

如果我将df_NoMissing_IDV中的列转换为datetime()

df_NoMissing_IDV.HeureArriveeSurSite = pd.to_datetime(df_NoMissing_IDV.HeureArriveeSurSite)
df_NoMissing_IDV.HeureEffective = pd.to_datetime(df_NoMissing_IDV.HeureEffective)

同样的问题仍然存在。你知道吗

~任何帮助都将不胜感激~


Tags: to数据dfdatetimetimepddf1sens
1条回答
网友
1楼 · 发布于 2024-05-14 17:56:33

我认为错误的原因是你的数据中有一些副本。你知道吗

尝试两件事:

df_NoMissing_IDV['DureeService'] = df1['HeureEffective'].values -df1['HeureArriveeSurSite'].values

或:

df1 = df1.reset_index()

编辑: 您还可以尝试timedelta

>>> import datetime
>>> time_difference = df1['HeureEffective']-df1['HeureArriveeSurSite']
>>> time_difference_in_seconds = time_difference / timedelta(seconds=1)

相关问题 更多 >

    热门问题