我有一个像这样的DataFrame:
此DataFrame称为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
我需要在列HeureArriveeSurSite
和HeureEffective
之间获取相关信息,并且它们已经是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)
同样的问题仍然存在。
任何帮助将不胜感激〜
答案 0 :(得分:1)
我认为错误的原因是您的数据中有一些重复。
尝试两件事:
pytz
或者:
df_NoMissing_IDV['DureeService'] = df1['HeureEffective'].values -df1['HeureArriveeSurSite'].values
修改强>
您还可以尝试df1 = df1.reset_index()
:
timedelta