web-dev-qa-db-ja.com

pandasオフセットロールフォワードに月オフセットを追加した後のナノ秒タイムスタンプの範囲外

pandasこれらの行で日時オブジェクトの範囲外になった方法は混乱しています:

_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))
_

ここで_all_treatments.iloc[i,micolix]_はpd.to_datetime(all_treatments['INDATUMA'], errors='coerce',format='%Y%m%d')によって設定された日時であり、INDATUMAは_20070125_形式の日付情報です。

このロジックはモックデータで機能するようです(エラーはなく、日付は意味がありません)。そのため、現時点では、次のエラーでデータ全体が失敗する一方で再現できません。

_pandas.tslib.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2262-05-01 00:00:00
_
30
László

pandasはナノ秒の解像度でタイムスタンプを表すため、64ビット整数を使用して表現できるタイムスパンは約584年に制限されています

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')

そして、値はこの範囲外2262-05-01 00:00:00であるため、範囲外エラー

すぐに: http://pandas-docs.github.io/pandas-docs-travis/timeseries.html#timestamp-limitations

45
jetpackdata.com

pd.to_datetimeerrorsパラメーターを'coerce'に設定すると、範囲外の値がNaTに置き換えられます。 docs の引用:

「強制」の場合、無効な解析はNaTとして設定されます

例えば。:

datetime_variable = pd.to_datetime(datetime_variable, errors = 'coerce')

これはデータを修正しませんが(明らかに)、非NaTデータポイントの処理は可能です。

18
Pawel Kranzberg