web-dev-qa-db-ja.com

時間をpandas.tseries.index.DatetimeIndexに適切に追加する方法は?

通常のdf.indexがあり、それを数時間追加したいと思います。

In [1]: test[1].index
Out[2]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2010-03-11, ..., 2014-08-14]
Length: 52, Freq: None, Timezone: None

これは最初の要素がどのように見えるかです:

In [1]: test[1].index[0]
Out[2]: Timestamp('2010-03-11 00:00:00')

だから私はこれを時間を追加するために試します:

In [1]: test[1].index[0] + pd.tseries.timedeltas.to_timedelta(16, unit='h')

しかし私はこれを得ます:

Out[2]: Timestamp('2010-03-11 00:00:00.000000016')

しかし、私はこれを取得したいと思います:

Out[2]: Timestamp('2010-03-11 16:00:00')

何が欠けていますか?環境はAnaconda(最新)Python 2.7.7、iPython 2.2です。

どうもありがとう

22
hernanavella

pd.DateOffset を使用できます。

test[1].index + pd.DateOffset(hours=16)

pd.DateOffsetdateutil.relativedelta と同じキーワード引数を受け入れます。


発生した問題はこのバグによるものでした Pandasバージョン0.14.1)で修正済み

In [242]: pd.to_timedelta(16, unit='h')
Out[242]: numpy.timedelta64(16,'ns')

アップグレードすれば、元のコードは機能するはずです。

33
unutbu