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