Cara memperbaikinya di pandas: stempel waktu dalam nanodetik di luar jangkauan


Kesalahan yang mungkin Anda temui saat menggunakan pandas adalah:

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

Kesalahan ini terjadi ketika Anda mencoba membuat stempel waktu di luar rentang berikut:

 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

Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita mencoba membuat rentang tanggal di panda yang berisi tiga tanggal berikut:

  • 1/1/2020
  • 1/1/2150
  • 1/1/2300

Kita dapat menggunakan fungsi date_range() untuk mencoba membuat rentang tanggal ini:

 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

Kami menerima kesalahan OutOfBoundsDatetime karena stempel waktu 1/1/2300 lebih besar dari stempel waktu maksimum dalam nanodetik yang diizinkan oleh panda.

Meskipun Anda tidak ingin menyimpan stempel waktu menggunakan nanodetik sebagai satuannya, panda akan melakukannya secara otomatis.

Bagaimana cara memperbaiki kesalahan tersebut

Cara termudah untuk mengatasi kesalahan ini adalah dengan menggunakan argumen error = ‘coerce’ , yang memaksa semua stempel waktu di luar rentang minimum atau maksimum ke nilai NaT.

Misalnya, kita dapat menggunakan kode berikut untuk membuat rentang tanggal dan secara otomatis memaksa semua stempel waktu di luar rentang yang diizinkan ke nilai 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)

Hasilnya adalah rentang tanggal dengan tiga nilai tanggalwaktu dan tanggalwaktu terakhir adalah NaT karena melebihi nilai maksimum yang diperbolehkan oleh panda.

Perhatikan bahwa kali ini kami tidak menerima kesalahan apa pun saat membuat rentang tanggal.

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:

Cara Memperbaiki: Kolom tumpang tindih tetapi tidak ada akhiran yang ditentukan
Cara Memperbaiki: Objek ‘numpy.ndarray’ tidak memiliki atribut ‘append’
Cara memperbaiki: Jika Anda menggunakan semua nilai skalar, Anda harus meneruskan indeks

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *