2015-10-01 19 views
17

Tôi đang bối rối như thế nào gấu trúc thổi ngoài giới hạn cho các đối tượng datetime với những dòng này:gấu trúc nằm ngoài giới hạn nano giây timestamp sau khi bù đắp rollforward cộng thêm một tháng bù đắp

import pandas as pd 
BOMoffset = pd.tseries.offsets.MonthBegin() 
# here some code sets the all_treatments dataframe and the newrowix, micolix, mocolix counters 
all_treatments.iloc[newrowix,micolix] = BOMoffset.rollforward(all_treatments.iloc[i,micolix] + pd.tseries.offsets.DateOffset(months = x)) 
all_treatments.iloc[newrowix,mocolix] = BOMoffset.rollforward(all_treatments.iloc[newrowix,micolix]+ pd.tseries.offsets.DateOffset(months = 1)) 

Đây all_treatments.iloc[i,micolix] là một datetime do pd.to_datetime(all_treatments['INDATUMA'], errors='coerce',format='%Y%m%d'), và INDATUMA là thông tin ngày theo định dạng 20070125.

Logic này dường như làm việc trên dữ liệu giả (không có lỗi, ngày có ý nghĩa), vì vậy tại thời điểm này tôi không thể tái tạo trong khi nó không thành công trong toàn bộ dữ liệu của tôi với các lỗi sau:

pandas.tslib.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2262-05-01 00:00:00 
+1

[tạo ra một tối thiểu nhưng * hoàn * mã ví dụ] (http://stackoverflow.com/help/mcve) – jfs

Trả lời

18

Kể từ gấu trúc đại diện timestamps ở độ phân giải nano giây, những khoảng thời gian đó có thể được biểu diễn bằng một số nguyên 64-bit được giới hạn trong khoảng 584 năm

pd.Timestamp.min 
Out[54]: Timestamp('1677-09-22 00:12:43.145225') 

In [55]: pd.Timestamp.max 
Out[55]: Timestamp('2262-04-11 23:47:16.854775807') 

và giá trị của bạn nằm ngoài phạm vi này 2262/05/01 00:00:00 và do đó lỗi outofbounds

Straight ra khỏi: http://pandas-docs.github.io/pandas-docs-travis/timeseries.html#timestamp-limitations

+2

Bạn có biết nếu nó có thể có một chỉ số ngày mà đi xa hơn phạm vi đó? – mac13k

+0

@ mac13k xem [this] (http://pandas-docs.github.io/pandas-docs-travis/timeseries.html#timeseries-oob) ... – blacksite

+0

Tôi biết điều đó, cảm ơn. Vấn đề là bạn có thể có chỉ mục được thực hiện trong khoảng thời gian vượt quá giới hạn dấu thời gian và cho đến khi bạn thực sự cố gắng sử dụng các giá trị riêng lẻ từ chỉ mục đó - sau đó bạn sẽ gặp lỗi hoặc ngày không chính xác. – mac13k

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