วิธีแก้ไขใน 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’ ไม่มีแอตทริบิวต์ ‘ผนวก’
วิธีแก้ไข: หากใช้ค่าสเกลาร์ทั้งหมด คุณจะต้องผ่านดัชนี