2017-09-08 1 views
1

Ich bin in der Lage, Zeitunterschied in Stunden zwischen zwei Zeitstempeln zu nehmen. In meinem Programm t1 und t2 werden aus dem Datenframe extrahiert.pandas timedelta in Stunden Fehler für timedelta64

>>> import pandas as pd 
>>> t1='2017-08-06 02:00:00+00:00' 
>>> t2='2017-08-07 02:00:00+00:00' 
>>> t1=pd.Timestamp(t1) 
>>> t2=pd.Timestamp(t2) 
>>> delta=t2-t1 
>>> print delta 
1 days 00:00:00 
>>> print delta.astype('timedelta64[h]') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'Timedelta' object has no attribute 'astype' 

Bitte sagen Sie mir, wie Sie das beheben können.

Antwort

1

Fehler ist klar, dass es keine Methode astype für pd.Timestamp ist, wenn man die Gesamtstunden wollen, dann müssen Sie .total_seconds anrufen und teilen:

In[79]: 
delta.total_seconds()/3600 

Out[79]: 24.0 

oder to_timedelta64 verwenden, um die Art zu einem np.timedelta64 umzuwandeln, das hat das Verfahren astype:

In[82]: 
delta.to_timedelta64().astype('timedelta64[h]') 

Out[82]: numpy.timedelta64(24,'h') 

Dank @Bharath, für den ersten Fall können Sie einfach tun:

In[84]: 
delta/pd.Timedelta(hours=1) 

Out[84]: 24.0 
+0

oder 'delta/pd.Timedelta (Stunden = 1)' – Dark

+1

@Bharathshetty für den ersten Fall das ist wahr, aber ich war mir nicht sicher, ob das OP einige skalare Berechnung oder wirklich eine Typumwandlung wollte, danke ich wird das hinzufügen – EdChum

Verwandte Themen