Python: преобразование единиц времени в кадре данных - PullRequest
0 голосов
/ 18 марта 2020

ребята. Я сделал арифметическую операцию между двумя столбцами Datetime в DataFrame, которая привела к следующим результатам:

28 days 15:16:53
7 days 13:12:31
334 days 01:04:46.123501
376 days 09:45:21.546136
-1 days +23:56:21.954750
-1 days +23:59:40.110747

Когда я попытался поместить это в массив numpy, он превратился в наносекунды:

array([ 2474213000000000,   652351000000000, 28861486123501000, ...,
       -218045250000,      -19889253000,   673953486963000],
  dtype='timedelta64[ns]')

И когда я попытался построить гистограмму, используя этот массив, у меня появилась следующая ошибка:

TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

Мне нужно превратить это в более управляемую единицу времени, чтобы я мог может сделать массив, а затем гистограмму. Спасибо!

1 Ответ

0 голосов
/ 18 марта 2020

Предполагая, что у вас есть серия Timedelta (назовем ее delta)

0           28 days 15:16:53
1            7 days 13:12:31
2   334 days 01:04:46.123501
3   376 days 09:45:21.546136
4   -1 days +23:56:21.954750
5   -1 days +23:59:40.110747
dtype: timedelta64[ns]

Вы можете легко преобразовать ее в серию дней с плавающей запятой:

delta.astype('int64')/(24*60*60*1000000000)

дает:

0     28.636725
1      7.550359
2    334.044978
3    376.406499
4     -0.002524
5     -0.000230
dtype: float64

Просто удалите 24*, чтобы иметь часы с плавающей запятой, то же самое для минут или секунд

...