5
>>> 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基礎となる値をms ではなく ns として解釈しているようです。これはパンダの型の扱いのバグtimedelta64[ms]ですか?

4

1 に答える 1

2

timedelta の処理はまだ進行中です。この問題を参照してください: https://github.com/pydata/pandas/issues/3009

主な問題は、タイムデルタが numpy 1.6.2 で壊れていることです。

作成時の任意の timedeltas dtype の受け渡しはまだサポートされていません。回避策として、これを行うことができます。現在サポートされている唯一の dtype は内部の timedelta64[ns] (これはまさに datetime64[ns]) の動作です。Pandas は内部 repr に変換されます。

(このソリューションは 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

あなたが達成しようとしている最終的な目標は何ですか?

于 2013-04-29T23:47:04.727 に答える