为了账号安全,请及时绑定邮箱和手机立即绑定

错误 Python pandas:时间数据 '20160101-000000' 与格式

错误 Python pandas:时间数据 '20160101-000000' 与格式

富国沪深 2022-05-19 13:50:00
我已经搜索过,我发现的问题似乎并不涵盖我的情况。我使用来自https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior的指令遵循了来自https://gist.github.com/gjreda/7433f5f70299610d9b6b的代码并写入Jupyter Python 笔记本:import numpy as npimport pandas as pdfrom datetime import datetimeto_datetime = lambda d: datetime.strptime(d, '%YYYY%mm%dd-%HH%MM%SS')pd1 = pd.read_csv(r'c:\am\shared-2\topandas.txt',sep=':',header=None, names  = ['a','b','c','d'], parse_dates=[1], converters={'a': to_datetime}, index_col = 'a')#pd2 = pd1.to_datetime (pd1.)pd1我有错误ValueError:时间数据“20160101-000000”与格式“%YYYY%mm%dd-%HH%MM%SS”不匹配我正在研究表达,看不出我在哪里犯了错误。完整错误如下:ValueError Traceback (last last call last) in 1 from datetime import datetime 2 to_datetime = lambda d: datetime.strptime(d, '%YYYY%mm%dd-%HH%MM%SS') ----> 3 pd1 = pd.read_csv(r'c:\am\shared-2\topandas.txt',sep=':',header=None, names = ['a','b','c','d'], parse_dates=[1], converters={'a': to_datetime}) 4 #pd2 = pd1.to_datetime (pd1.) 5 pd1C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in parser_f(filepath_or_buffer,sep,delimiter,header,names,index_col,usecols,squeeze,prefix,mangle_dupe_cols,dtype,engine,converters,true_values ,false_values,skipinitialspace,skirows,skipfooter,nrows,na_values,keep_default_na,na_filter,详细,skip_blank_lines,parse_dates,infer_datetime_format,keep_date_col,date_parser,dayfirst,迭代器,块大小,压缩,千位,十进制,lineterminator,quotechar,引用,双引号,escapechar , 注释, 编码, 方言, tupleize_cols, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision) 700 skip_blank_lines=skip_blank_lines) 701 --> 702 return _read(filepath_or_buffer,kwds) 703 704 parser_f。名字=名字C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds) 433 434 try: --> 435 data = parser.read(nrows) 436 最后:437 parser.close ()
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

你的错误是%Y匹配一个 4 位数的年份 - 所以通过给%YYYY你实际上匹配“ 4 位数的年份,后跟三个 Y ”。这也适用于其他人。

请改用以下格式字符串:%Y%m%d-%H%M%S


查看完整回答
反对 回复 2022-05-19
?
三国纷争

TA贡献1804条经验 获得超7个赞

这里有必要将格式更改为只使用一个字母,还要检查http://strftime.org/

to_datetime = lambda d: datetime.strptime(d, '%Y%m%d-%H%M%S')

另一个类似的解决方案:

to_datetime = lambda d: pd.to_datetime(d, format='%Y%m%d-%H%M%S')


查看完整回答
反对 回复 2022-05-19
  • 2 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信