วิธีแก้ไขใน 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

ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรากำลังพยายามสร้างช่วงวันที่ในแพนด้าที่มีสามวันที่ต่อไปนี้:

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

เราสามารถใช้ฟังก์ชัน 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

เราได้รับข้อผิดพลาด OutOfBoundsDatetime เนื่องจากการประทับเวลา 1/1/2300 มากกว่าการประทับเวลาสูงสุดในหน่วยนาโนวินาทีที่แพนด้าอนุญาต

แม้ว่าคุณจะไม่ต้องการจัดเก็บการประทับเวลาโดยใช้หน่วยนาโนวินาที แต่แพนด้าก็จะดำเนินการโดยอัตโนมัติ

วิธีการแก้ไขข้อผิดพลาด

วิธีที่ง่ายที่สุดในการแก้ไขข้อผิดพลาดนี้คือการใช้อาร์กิวเมนต์ 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)

ผลลัพธ์คือช่วงวันที่ที่มีค่า datetime สามค่า และ datetime สุดท้ายคือ NaT เนื่องจากเกินค่าสูงสุดที่แพนด้าอนุญาต

โปรดทราบว่าเราไม่ได้รับข้อผิดพลาดใดๆ ในครั้งนี้เมื่อสร้างช่วงวันที่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:

วิธีแก้ไข: คอลัมน์ซ้อนทับกันแต่ไม่ได้ระบุส่วนต่อท้าย
วิธีแก้ไข: วัตถุ ‘numpy.ndarray’ ไม่มีแอตทริบิวต์ ‘ผนวก’
วิธีแก้ไข: หากใช้ค่าสเกลาร์ทั้งหมด คุณจะต้องผ่านดัชนี

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *