2014-09-11 15 views
14

Tôi có một df.index bình thường mà tôi muốn thêm một số giờ vào nó.Cách thêm giờ chính xác vào pandas.tseries.index.DatetimeIndex?

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

Đây là cách các yếu tố đầu tiên trông giống như:

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

Vì vậy, tôi cố gắng này để thêm giờ:

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

Tuy nhiên tôi có được điều này:

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

Nhưng tôi muốn có được điều này:

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

Tôi đang thiếu gì ?. Các môi trường là Anaconda (mới nhất) Python 2.7.7, ipython 2.2

Thanks a lot

Trả lời

19

Bạn có thể sử dụng pd.DateOffset:

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

pd.DateOffset chấp nhận các đối số từ khóa giống như dateutil.relativedelta.


Vấn đề bạn gặp phải là do lỗi này mà đã được fixed in Pandas version 0.14.1:

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

Nếu bạn nâng cấp, mã ban đầu của bạn nên làm việc.

+0

Bạn có thể giải thích ngắn gọn về những gì tôi đã làm không? – hernanavella

+0

Không có gì. Tôi vừa thử ví dụ ur trong Pandas 0.14.1 và nó hoạt động giống như bạn tưởng tượng. unutbu cung cấp cho bạn một giải pháp thay thế nên làm việc với các phiên bản cũ hơn của gấu trúc (hợp lý cũ hơn, không phải thời kỳ đồ đá;)) –

Các vấn đề liên quan