2014-05-08 20 views
21

Ho un dataframe panda che ha due colonne datetime64 e una colonna timedelta64 che è la differenza tra le due colonne. Sto provando a tracciare un istogramma della colonna timedelta per visualizzare le differenze di tempo tra i due eventi.Plotting pandas timedelta

Tuttavia, usando solo df['time_delta'] risultati in: TypeError: ufunc add cannot use operands with types dtype('<m8[ns]') and dtype('float64')

Cercando di convertire la colonna timedelta a: float--> df2 = df1['time_delta'].astype(float) risultati in: TypeError: cannot astype a timedelta from [timedelta64[ns]] to [float64]

come si potrebbe creare un istogramma di panda timedelta dati?

+2

Come lo avete finalmente tracciato? Non riesco a tracciare semplicemente una serie con valore datatype timedelta64. L'errore dice "nessun dato numerico da tracciare"! –

risposta

29

Qui ci sono modi per convertire timedeltas, docs sono here

In [2]: pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s') 
Out[2]: 
0 0 days, 00:00:01 
1 1 days, 00:00:01 
2 2 days, 00:00:01 
3 3 days, 00:00:01 
4 4 days, 00:00:01 
dtype: timedelta64[ns] 

Conversione in secondi (è una conversione esatto)

In [3]: (pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s')).astype('timedelta64[s]') 
Out[3]: 
0   1 
1  86401 
2 172801 
3 259201 
4 345601 
dtype: float64 

Converti usando astype arrotonderà a quell'unità

In [4]: (pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s')).astype('timedelta64[D]') 
Out[4]: 
0 0 
1 1 
2 2 
3 3 
4 4 
dtype: float64 

Divisione darà un'esatta risposta

In [5]: (pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s'))/np.timedelta64(1,'D') 
Out[5]: 
0 0.000012 
1 1.000012 
2 2.000012 
3 3.000012 
4 4.000012 
dtype: float64 
+0

Perfetto. Grazie! Ho completamente ignorato la sezione to_timedelta quando cercavo un valore da_timedelta ... – DataSwede

+1

umm ... quindi questi sono alcuni modi per convertire i timedeltas ... ma la domanda era chiedere modi per tracciare le informazioni di timedelta. Cura di elaborare ?? – drevicko

+0

è possibile convertire timedelts in virgola mobile o stringa per tracciare; questi non sono attualmente supportati; sebbene potrebbe essere tramite una richiesta di pull dalla comunità – Jeff