Pandas에서 수정하는 방법: 범위를 벗어난 나노초 단위의 타임스탬프


pandas를 사용할 때 발생할 수 있는 오류는 다음과 같습니다.

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

이 오류는 다음 범위를 벗어나는 타임스탬프를 생성하려고 할 때 발생합니다.

 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

다음 예에서는 실제로 이 오류를 수정하는 방법을 보여줍니다.

오류를 재현하는 방법

다음 세 가지 날짜를 포함하는 Pandas에서 날짜 범위를 생성하려고 한다고 가정합니다.

  • 2020년 1월 1일
  • 2150년 1월 1일
  • 2300년 1월 1일

date_range() 함수를 사용하여 이 날짜 범위를 만들 수 있습니다.

 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

타임스탬프 1/1/2300이 Pandas에서 허용하는 최대 타임스탬프(나노초)보다 크기 때문에 OutOfBoundsDatetime 오류가 발생합니다.

나노초를 단위로 사용하여 타임스탬프를 저장하고 싶지 않더라도 pandas는 자동으로 저장합니다.

오류를 수정하는 방법

이 오류를 해결하는 가장 쉬운 방법은 error = ‘coerce’ 인수를 사용하는 것입니다. 이 인수는 최소 또는 최대 범위를 벗어나는 모든 타임스탬프를 NaT 값으로 강제 변환합니다.

예를 들어, 다음 코드를 사용하여 날짜 범위를 생성하고 허용된 범위 밖의 모든 타임스탬프를 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)

결과는 3개의 날짜/시간 값이 있는 날짜 범위이며 마지막 날짜/시간은 Pandas에서 허용하는 최대값을 초과했기 때문에 NaT입니다.

이번에는 기간을 생성할 때 오류가 발생하지 않습니다.

추가 리소스

다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.

수정방법: 열이 겹치는데 접미사가 지정되지 않음
수정 방법: ‘numpy.ndarray’ 개체에 ‘append’ 속성이 없습니다.
해결 방법: 모든 스칼라 값을 사용하는 경우 인덱스를 전달해야 합니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다