2017-08-08 2 views
1

Wenn die Zeitdifferenz zwischen Abfahrts- und Ankunftszeit weniger als 30 Minuten oder weniger als 30 Minuten beträgt, wie wird der Wert als 30 angenommen?Wie wird der Mindestwert für die Zeitdifferenz eingestellt?

Zum Beispiel, ich habe die folgenden Datentypen:

id   departure time    arrival time   start end capacity 

Train A 2016-05-19 01:45:00  2016-05-19 08:25:00 A  G 2 
Train A 2016-05-19 16:54:00  2016-05-19 16:00:00 B  H 2 
Train A 2016-05-19 21:25:00  2016-05-20 07:25:00 C  I 3 
Train B 2016-05-24 02:20:00  2016-05-24 12:50:00 D  J 3 
Train B 2016-05-24 18:30:00  2016-05-25 20:00:00 E  K 2 
Train B 2016-05-26 19:35:00  2016-05-26 19:45:00 F  L 3 

ich die folgende Formel verwenden, um die Zeitdifferenz

df['time difference'] = ((df['departure time'] - df['arrival time']).abs()) 

ich den Minimalwert der Zeitdifferenz einstellen möchten finden 30 sein ,) wenn der Wert kleiner als 30 oder negativ ist)

+0

Warum machst du eine groupby? –

+0

entfernt es !!!!! –

Antwort

1

Sie können Spalten subtrahieren und in Minuten umwandeln total_seconds und teilen 60 zuerst an d dann ersetzen bis 30 von mask:

diff = (df['departure time'] - df['arrival time']).dt.total_seconds()/60 
df['time difference'] = diff.mask(diff < 30, 30) 
print (df) 
     id  departure time  arrival time start end capacity \ 
0 Train A 2016-05-19 01:45:00 2016-05-19 08:25:00  A G   2 
1 Train A 2016-05-19 16:54:00 2016-05-19 16:00:00  B H   2 
2 Train A 2016-05-19 21:25:00 2016-05-20 07:25:00  C I   3 
3 Train B 2016-05-24 02:20:00 2016-05-24 12:50:00  D J   3 
4 Train B 2016-05-24 18:30:00 2016-05-25 20:00:00  E K   2 
5 Train B 2016-05-26 19:35:00 2016-05-26 19:45:00  F L   3 

    time difference 
0    30.0 
1    54.0 
2    30.0 
3    30.0 
4    30.0 
5    30.0 
+0

Hallo! Ich habe wenige Daten, die negative Zeitdifferenz gibt. In diesem Fall wird kein Wert gespeichert. Weißt du, wie man Nullwerte durch 30 Minuten ersetzt? Danke! –

+0

der negative Wert ist wegen geringfügiger Fehler in den Daten (obwohl negative Zeitdifferenz ist nicht möglich) –

+0

Ich denke, 'Maske' tun es, oder es funktioniert nicht? – jezrael

Verwandte Themen