微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用pandas.to_datetime将jalali日期字符串转换为python日期时间对象

如何解决如何使用pandas.to_datetime将jalali日期字符串转换为python日期时间对象

使用pandas.to_datetime将jalali日期字符串转换 python日期时间对象时遇到一些问题 例如,当我运行此简单代码时:

print(pd.to_datetime('1399/05/02',format='%Y/%m/%d'))

我收到此错误

TypeError                                 Traceback (most recent call last)
~\anaconda3\envs\tf2\lib\site-packages\pandas\core\arrays\datetimes.py in objects_to_datetime64ns(data,dayfirst,yearfirst,utc,errors,require_iso8601,allow_object)
   1857         try:
-> 1858             values,tz_parsed = conversion.datetime_to_datetime64(data)
   1859             # If tzaware,these values represent unix timestamps,so we

pandas\_libs\tslibs\conversion.pyx in pandas._libs.tslibs.conversion.datetime_to_datetime64()

TypeError: Unrecognized value type: 

During handling of the above exception,another exception occurred:

OutOfBoundsDatetime                       Traceback (most recent call last)
 in 
      1 #dbs.Irdate = pd.to_datetime(dbs.Irdate,format='%Y/%m/%d',yearfirst = True)
----> 2 print(pd.to_datetime('1399/05/02',format='%Y/%m/%d'))

~\anaconda3\envs\tf2\lib\site-packages\pandas\core\tools\datetimes.py in to_datetime(arg,format,exact,unit,infer_datetime_format,origin,cache)
    754             result = convert_listlike(arg,format)
    755     else:
--> 756         result = convert_listlike(np.array([arg]),format)[0]
    757 
    758     return result

~\anaconda3\envs\tf2\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg,name,tz,exact)
    445             errors=errors,446             require_iso8601=require_iso8601,--> 447             allow_object=True,448         )
    449 

~\anaconda3\envs\tf2\lib\site-packages\pandas\core\arrays\datetimes.py in objects_to_datetime64ns(data,allow_object)
   1861             return values.view("i8"),tz_parsed
   1862         except (ValueError,TypeError):
-> 1863             raise e
   1864 
   1865     if tz_parsed is not None:

~\anaconda3\envs\tf2\lib\site-packages\pandas\core\arrays\datetimes.py in objects_to_datetime64ns(data,allow_object)
   1852             dayfirst=dayfirst,1853             yearfirst=yearfirst,-> 1854             require_iso8601=require_iso8601,1855         )
   1856     except ValueError as e:

pandas\_libs\tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas\_libs\tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas\_libs\tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas\_libs\tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas\_libs\tslibs\np_datetime.pyx in pandas._libs.tslibs.np_datetime.check_dts_bounds()

**OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1399-05-02 00:00:00**

所以 我使用此参数 errors ='ignore'修复错误,但结果不可接受 例如:

print(pd.to_datetime('1399/05/02',errors='ignore'))

结果是: 1399/05/02 ,因此您看不到任何变化 我想要类似 1399-05-02 的python日期时间对象 请帮助我

解决方法

在熊猫中有日期时间限制,请检查this

lapply(seq_along(list1),function(i) write.table(list1[[i]],paste0("r1_",names(list1)[i],".txt"),row.names = FALSE,quote = FALSE,sep = "\t",dec = ","))

## r1_df1.txt
## r1_df2.txt
                           

可能的解决方案是将值转换为每日more info

for (i in seq_along(my_list)) {
    filename = paste("r_",names(my_list)[i],".txt")
    write.table(my_list[[i]],filename," )
}
    

或使用纯python:

In [92]: pd.Timestamp.min
Out[92]: Timestamp('1677-09-21 00:12:43.145225')

In [93]: pd.Timestamp.max
Out[93]: Timestamp('2262-04-11 23:47:16.854775807')

解决方案列:

p = pd.Period('1399/05/02')
print (p)
1399-05-02

如果使用其他方法,请获取对象,而不要获取日期时间:

from datetime import datetime

d = datetime.strptime('1399/05/02','%Y/%m/%d')
print (d)
1399-05-02 00:00:00
,

由于熊猫以纳秒分辨率表示时间戳,因此可以使用64位整数表示的时间跨度限制为大约584年。 Out of bounds nanosecond timestamp

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。