2014-09-03 15 views
35

Chciałbym utworzyć kolumnę w ramce danych pandy, która jest liczbą całkowitą reprezentującą liczbę dni w kolumnie timedelta. Czy jest możliwe użycie "datetime.days" lub czy muszę zrobić coś bardziej ręcznego?Python: Konwertuj timedelta na int w ramce danych

kolumna timedelta

7 dni, 23:29:00

dni kolumna całkowitą

+4

Czy próbowałeś użyć 'timedelta.days'? – Ffisegydd

Odpowiedz

42

Możesz to zrobić, gdzie td jest twoją serią timedelt. Podział przekształca delty nanosekundy w delty dzienne, a konwersja na int spada do całych dni.

import numpy as np 

(td/np.timedelta64(1, 'D')).astype(int) 
+1

Dzięki! Również po 15 minutach poszukiwań znalazłem to. http://stackoverflow.com/questions/18215317/extracting-days-from-a-numpy-timedelta64-value –

29

Użyj atrybutu dt.days. Przypuśćmy td jest nazwa serii timedelta, dostęp do tego atrybutu przez:

td.dt.days 
+4

Podoba mi się ten komentarz dla prostoty i niewymagający importu innej biblioteki. – NickBraunagel

1

Obiekty Timedelta mają atrybuty instancji tylko do odczytu: .days, .seconds i .microseconds.