Nun, es ist alles irgendwie auf das Zeitformat ab, die Sie verwenden . Ich würde empfehlen, datetime zu verwenden.
Wenn in_time
und out_time
sind derzeit Strings, wandeln sie mit datetime.strptime()
:
from datetime import datetime
f = lambda x: datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.%fZ')
df.in_time = df.in_time.apply(f)
df.out_time = df.out_time.apply(f)
und dann kann man sie einfach abziehen, und weisen Sie das Ergebnis in eine neue Spalte mit dem Namen ‚Tage‘:
df['days'] = df.out_time - df.in_time
Beispiel: (3 Sekunden und 1 Tag Unterschiede)
In[5]: df = pd.DataFrame({'in_time':['2015-09-25T01:45:34.372Z','2015-09-25T01:45:34.372Z'],
'out_time':['2015-09-25T01:45:37.372Z','2015-09-26T01:45:34.372Z']})
In[6]: df
Out[6]:
in_time out_time
0 2015-09-25T01:45:34.372Z 2015-09-25T01:45:37.372Z
1 2015-09-25T01:45:34.372Z 2015-09-26T01:45:34.372Z
In[7]: type(df.loc[0,'in_time'])
Out[7]: str
In[8]: df.in_time = df.in_time.apply(lambda x: datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.%fZ'))
In[9]: df.out_time = df.out_time.apply(lambda x: datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.%fZ'))
In[10]: df # notice that it looks exactly the same, but the type is different
Out[10]:
in_time out_time
0 2015-09-25 01:45:34.372 2015-09-25T01:45:37.372Z
1 2015-09-25 01:45:34.372 2015-09-26T01:45:34.372Z
In[11]: type(df.loc[0,'in_time'])
Out[11]: pandas.tslib.Timestamp
und die Schaffung der neuen Spalte:
In[12]: df['days'] = df.out_time - df.in_time
In[13]: df
Out[13]:
in_time out_time days
0 2015-09-25 01:45:34.372 2015-09-25 01:45:37.372 0 days 00:00:03
1 2015-09-25 01:45:34.372 2015-09-26 01:45:34.372 1 days 00:00:00
Jetzt können Sie mit dem Ausgabeformat spielen. Zum Beispiel Differenz der Anteil der Sekunden:
In[14]: df.days = df.days.apply(lambda x: x.total_seconds()/60)
In[15]: df
Out[15]:
in_time out_time days
0 2015-09-25 01:45:34.372 2015-09-25 01:45:37.372 0.05
1 2015-09-25 01:45:34.372 2015-09-26 01:45:34.372 1440.00
Hinweis: In Bezug auf das in_time
und out_time
Format, bemerkt, dass ich einige Annahmen gemacht (zum Beispiel, dass Sie eine 24H Uhr verwenden (also %H
mit und nicht %I
)). Um mit dem Format zu spielen, werfen Sie einen Blick auf: strptime()
documentation.
Hinweis2: Es wäre natürlich besser, wenn Sie Ihr Programm so gestalten können, dass es datetime
von Anfang an verwendet (anstatt Zeichenfolgen zu verwenden und sie zu konvertieren).
Mögliche Duplikate von [Berechne Pandas Dataframe Zeitdifferenz zwischen zwei Spalten in Stunden und Minuten] (http://stackoverflow.com/questions/22923775/calculate-pandas-dataframe-time-difference-between-two-columns-in- -hours-and-minu) – Filly
Mein Problem unterscheidet sich von Ihrem, ich habe viele Spalten und ich muss 1 weitere Spalte in den genannten Tagen erhöhen und die Unterschiede dort setzen. –