如何解决如何使用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**
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 举报,一经查实,本站将立刻删除。