Python:转换数据帧上的时间单位

Python:转换数据帧上的时间单位,python,numpy,datetime,timedelta,Python,Numpy,Datetime,Timedelta,伙计们。我在数据帧中的两个Datetime列之间进行了算术运算,结果如下: 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, 28861486

伙计们。我在数据帧中的两个Datetime列之间进行了算术运算,结果如下:

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''

我需要把它转换成一个更易于管理的时间单位,这样我就可以制作一个数组,然后是直方图。谢谢

假设您有一系列的Timedelta(我们称之为
delta

您可以轻松地将其转换为一系列浮点天数:

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*
即可获得浮点小时数,分钟或秒数相同

问题是dtype='timedelta64[ns]'(hist)函数使用了一些无法处理timedelta64[ns]'(例如:isnan)的函数,因此只需将类型更改为(dtype='float64'),请提供一个,以及整个错误消息。
0     28.636725
1      7.550359
2    334.044978
3    376.406499
4     -0.002524
5     -0.000230
dtype: float64