Como corrigir no pandas: timestamp em nanossegundos fora do intervalo


Um erro que você pode encontrar ao usar pandas é:

 OutOfBoundsDatetime : Out of bounds nanosecond timestamp: 2300-01-10 00:00:00

Este erro ocorre quando você tenta criar um carimbo de data/hora fora do seguinte intervalo:

 import pandas as pd

#display minimum timestamp allowed
print (pd. Timestamp . min )

1677-09-21 00:12:43.145224193

#display maximum timestamp allowed
print (pd. Timestamp . max )

2262-04-11 23:47:16.854775807

O exemplo a seguir mostra como corrigir esse erro na prática.

Como reproduzir o erro

Suponha que estejamos tentando criar um intervalo de datas em pandas contendo as três datas a seguir:

  • 01/01/2020
  • 01/01/2150
  • 01/01/2300

Podemos usar a função date_range() para tentar criar este intervalo de datas:

 import pandas as pd

#attempt to create date range
some_dates = pd. date_range (start=' 1/1/2000 ', end=' 1/1/2300 ', periods= 3 )

OutOfBoundsDatetime : Out of bounds nanosecond timestamp: 2300-01-10 00:00:00

Estamos recebendo o erro OutOfBoundsDatetime porque o carimbo de data/hora 1/1/2300 é maior que o carimbo de data/hora máximo em nanossegundos permitido pelos pandas.

Mesmo se você não quiser armazenar o carimbo de data/hora usando nanossegundos como unidade, o pandas fará isso automaticamente.

Como corrigir o erro

A maneira mais fácil de contornar esse erro é usar o argumento error = ‘coerce’ , que força todos os carimbos de data e hora fora do intervalo mínimo ou máximo para valores NaT.

Por exemplo, podemos usar o código a seguir para criar um intervalo de datas e forçar automaticamente todos os carimbos de data/hora fora do intervalo permitido para valores NaT:

 import pandas as pd

#create date range
some_dates = ['1/1/2000', '1/1/2150', '1/1/2300']

#convert date range to datetime and automatically coerce errors
some_dates = pd. to_datetime (some_dates, errors = ' coerce ')

#showdatetimes
print (some_dates)

DatetimeIndex(['2000-01-01', '2150-01-01', 'NaT'], dtype='datetime64[ns]', freq=None)

O resultado é um intervalo de datas com três valores de data e hora e o último datetime é NaT porque excedeu o valor máximo permitido pelos pandas.

Observe que desta vez não recebemos nenhum erro ao criar o período.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:

Como corrigir: as colunas se sobrepõem, mas nenhum sufixo é especificado
Como corrigir: o objeto ‘numpy.ndarray’ não possui um atributo ‘append’
Como corrigir: se você usar todos os valores escalares, precisará passar um índice

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *