2013-08-25 16 views
5

Ho notato che Pandas sa come formattare in modo intelligente un oggetto timedelta in una stringa.Formattazione delle stringhe di timedeltas in Pandas

In [1]: df[column][rows].max() 
Out[1]: 
0 2 days, 02:08:07 
dtype: timedelta64[ns] 

Quando provo a farlo manualmente, continuo a ottenere la stringa in nanosecondi.

In [2]: df[column][rows].max()[0] 
Out[2]: numpy.timedelta64(180487000000000,'ns') 

In [2]: str(df[column][rows].max()[0]) 
Out[2]: '180487000000000 nanoseconds' 

Preferisco non reinventare la ruota, quindi non v'è alcun modo per accedere al metodo di formattazione stringa (o la stringa stessa) che Pandas utilizza per mostrare un oggetto timedelta in x days, hh:mm:ss?

risposta

6

La funzione si trova here:

pd.tslib.repr_timedelta64 

In azione:

In [11]: pd.tslib.repr_timedelta64(np.timedelta64(180487000000000,'ns')) 
Out[11]: '2 days, 02:08:07' 
+0

Grazie! Questa è una funzione utile per avere –

+4

Posso chiedere, come sapevi che questa era la funzione? Conoscete bene la base del codice? Pandas ha delle buone utility per la formattazione delle stringhe, quindi sarebbe bello sapere come sfogliarle. –

+1

Avevo la sensazione che sarebbe in tslib (poiché conosco il codice base, ed è qui che si trova il timeseries), e l'ho trovato con una scheda completa :) –

Problemi correlati