我已经搜索过,我发现的问题似乎并不涵盖我的情况。我使用来自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
三国纷争
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')
添加回答
举报
0/150
提交
取消