2014-09-23 6 views
1

Я хотел бы, чтобы преобразовать данные типа timedelta64 в PandasSeries в timedelta64 до нескольких часов.Доступ .seconds или .days атрибут данных timedelta в dataframe панды

Чтобы сделать это, я хотел бы получить доступ к .seconds или .days атрибуту timedelta64, так что я могу преобразовать этот блок самого as per this SO post.

Однако, когда я выбираю данные с помощью df['col'] я получаю attribute error, когда я пытаюсь использовать .seconds или .days несмотря на его dtype быть <m8[ns] (который я считаю, представляет timedelta64).

Есть ли еще один шаг, который мне нужно сделать?

ответ

3

Этот вопрос относится к встроенному объекту Python timedelta, в то время как вы имеете дело с массивом numpy значений timedelta64. См. Это question - вы можете конвертировать часы или секунды с помощью астипа.

td.astype('timedelta64[D]') 
td.astype('timedelta64[s]') 

В качестве альтернативы, вы можете разделить соответствующий блок.

td/np.timedelta64(1, 'D') 
td/np.timedelta64(1, 's') 
+0

Спасибо, оба подхода работают. Есть ли разница между этими двумя методами или это чисто материальное или личное предпочтение? @chrisb – Bprodz

+1

@Bprodz - не мог сказать вам точно, но оба должны дать тот же ответ. По некоторым тестовым данным, astype был немного быстрее (и, возможно, более четко информирует о намерениях), так что это может быть путь. – chrisb

Смежные вопросы