Ich habe einen Datenrahmen wie folgt: Und dieser DataFrame heißt df_NoMissing_IDV
.Python - Datetime Berechnung zwischen zwei Spalten in Python Pandas
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
Ich brauche die marge zwischen Spalte HeureArriveeSurSite
und HeureEffective
zu bekommen, und sie sind bereits datetime.datetime()
Daten.
Und hier ist eine neue DataFrame
namens df1
.
df1 = df_NoMissing_IDV[(df_NoMissing_IDV['Sens'] == '+') & (df_NoMissing_IDV['Periods'] == 'Matin')]
Und df1
sieht wie folgt aus:
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
Da sie alle datetime.datetime()
Daten sind, habe ich versucht, die Subtraktion zu tun direkt mit:
df_NoMissing_IDV['DureeService'] = df1['HeureEffective']-df1['HeureArriveeSurSite']
Aber es kehrte TypeError: unsupported operand type(s) for -: 'unicode' and 'unicode'
Und ich habe auch versucht, die Berechnung zu machen mit datetime.time()
Typ, und es kehrte mit TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
zurück Was soll ich damit machen?
EDIT
ich konvertieren Spalten in df1
-datetime()
:
df1.HeureArriveeSurSite = pd.to_datetime(df1.HeureArriveeSurSite)
df1.HeureEffective = pd.to_datetime(df1.HeureEffective)
Aber der nächste Schritt ist immer noch falsch, die zurückgegeben: ValueError: cannot reindex from a duplicate axis
Und wenn ich konvertieren Spalten in df_NoMissing_IDV
zu datetime()
:
df_NoMissing_IDV.HeureArriveeSurSite = pd.to_datetime(df_NoMissing_IDV.HeureArriveeSurSite)
df_NoMissing_IDV.HeureEffective = pd.to_datetime(df_NoMissing_IDV.HeureEffective)
Das gleiche Problem bleibt.
Jede Hilfe wird ~
Ich glaube, Sie Spalten konvertieren zu "datetime" - 'df_NoMissing_IDV.HeureArriveeSurSite = pd.to_datetime (df_NoMissing_IDV.HeureArriveeSurSite) ' ' df_NoMissing_IDV.HeureEffective = pd.to_datetime (df_NoMissing_IDV.HeureEffective) ' – jezrael
Sie meinen, Spalten in DataFrame =' df1' in 'datetime' zu konvertieren? Weil Spalten in 'df_NoMissing_IDV' bereits in' datetime' stehen. Aber der nächste Schritt ist immer noch falsch. 'df_NoMissing_IDV ['DureeService'] = df1 ['HeureEffective'] - df1 ['HeureArriveeSurSite']', es wurde zurückgegeben: 'ValueError: kann von einer doppelten Achse nicht neu indizieren'. – ch36r5s
Hmmm. Es gibt einige Duplikate. Können Sie ein Beispiel hinzufügen, das einen Fehler zurückgibt? – jezrael