كيفية الإصلاح في 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)
والنتيجة هي نطاق زمني بثلاث قيم زمنية وآخر تاريخ هو NaT لأنه تجاوز الحد الأقصى للقيمة المسموح بها من قبل الباندا.
لاحظ أننا لا نتلقى أية أخطاء هذه المرة عند إنشاء النطاق الزمني.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:
كيفية الإصلاح: تتداخل الأعمدة ولكن لم يتم تحديد أي لاحقة
كيفية الإصلاح: لا يحتوي الكائن “numpy.ndarray” على سمة “إلحاق”.
كيفية الإصلاح: إذا كنت تستخدم جميع القيم العددية، فستحتاج إلى تمرير فهرس