>>> import pandas as pd
>>> pd.__version__
'0.11.0'
>>> import numpy as np
>>> np.__version__
'1.7.1'
>>> d={'a':np.array([68614867, 72200835], dtype=np.dtype('timedelta64[ms]'))}
>>> d['a'][0]
numpy.timedelta64(68614867,'ms')
>>> df = pd.DataFrame.from_dict(d)
>>> print df
a
0 00:00:00.068615
1 00:00:00.072201
看起来它将基础int64
中的值解释为ns而不是ms。这是熊猫处理timedelta64[ms]
类型的错误吗?
答案 0 :(得分:1)
主要问题是timedeltas在numpy 1.6.2中被打破。
在创建中传递任意timedeltas dtypes尚不支持,如 一个解决方法,你可以这样做,因为目前支持的唯一的dtype是 内部timedelta64 [ns](这正是datetime64 [ns])btw的工作原理。熊猫 转换为内部代表然后你想要你想要的。
(此解决方案仅适用于numpy> = 1.7)。
In [22]: d['a'].astype('timedelta64[ns]')
Out[22]: array([68614867000000, 72200835000000], dtype='timedelta64[ns]')
In [23]: DataFrame(dict(a = d['a'].astype('timedelta64[ns]')))
Out[23]:
a
0 19:03:34.867000
1 20:03:20.835000
In [24]: DataFrame(dict(a = d['a'].astype('timedelta64[ns]'))).dtypes
Out[24]:
a timedelta64[ns]
dtype: object
你想要完成的最终目标是什么?