Python 错误:时间数据';20160101-000000';与格式不匹配';%YYYY%mm%dd-%HH%mm%SS';

Python 错误:时间数据';20160101-000000';与格式不匹配';%YYYY%mm%dd-%HH%mm%SS';,python,pandas,datetime,parsing,Python,Pandas,Datetime,Parsing,我搜索了这么多,发现的问题似乎不包括我的情况。我遵循了使用Jupyter Python笔记本中的指令编写的代码: import numpy as np import pandas as pd from datetime import datetime to_datetime = lambda d: datetime.strptime(d, '%YYYY%mm%dd-%HH%MM%SS') pd1 = pd.read_csv(r'c:\am\shared-2\topandas.txt',sep='

我搜索了这么多,发现的问题似乎不包括我的情况。我遵循了使用Jupyter Python笔记本中的指令编写的代码:

import numpy as np
import pandas as pd
from datetime import datetime
to_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回溯(最近的调用 最后)在 1从datetime导入datetime 2 to_datetime=lambda d:datetime.strtime(d,“%YYYY%mm%dd-%HH%mm%SS”) ---->3 pd1=pd.read_csv(r'c:\am\shared-2\topandas.txt',sep=':',header=None,name =['a'、'b'、'c'、'd'],解析日期=[1],转换器={'a':到日期时间}) 4#pd2=pd1.to#u日期时间(pd1.) 5 pd1

中的C:\ProgramData\Anaconda3\lib\site packages\pandas\io\parsers.py 解析器f(文件路径或缓冲区、sep、分隔符、头、名称、索引列、, usecols、squeeze、prefix、mangle_dupe_cols、数据类型、引擎、转换器、, 真值、假值、skipinitialspace、SkipProws、skipfooter、, nrows,不适用值,保留默认值,不适用筛选器,详细, 跳过空白行,解析日期,推断日期时间格式,保留日期列, date_解析器、dayfirst、迭代器、chunksize、压缩、千、, 十进制,行终止符,引号,引号,双引号,转义, 注释、编码、方言、元组、错误行、, 警告错误行、删除空白、内存不足、内存映射、, 浮点数(精度) 700跳过空白行=跳过空白行) 701 -->702返回读取(文件路径或缓冲区,kwds) 703 704语法分析器f.名称=名称

中的C:\ProgramData\Anaconda3\lib\site packages\pandas\io\parsers.py _读取(文件路径或缓冲区,kwds) 433 434尝试: -->435 data=parser.read(nrows) 436最后: 437解析器.close()

中的C:\ProgramData\Anaconda3\lib\site packages\pandas\io\parsers.py 读取(self,nrows)1137 def读取(self,nrows=None):1138
nrows=\u验证\u整数('nrows',nrows) ->1139 ret=自身。引擎读取(nrows)1140 1141可更改列/列目录

中的C:\ProgramData\Anaconda3\lib\site packages\pandas\io\parsers.py 读取(self,nrows)1993 def读取(self,nrows=None):1994
尝试: ->1995年数据=self.\u reader.read(nrows)1996年,除了停止迭代:1997年,如果self.\u第一块:

pandas/_libs/parsers.pyx在pandas中。_libs.parsers.textleader.read()

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._read_low_memory()

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._read_rows()

pandas/_libs/parsers.pyx in pandas.\u libs.parsers.TextReader.\u convert\u column\u data()

pandas/_libs/parsers.pyx在pandas中。_libs.parsers._apply_converter()

在(d)项中 1从datetime导入datetime ---->2 to_datetime=lambda d:datetime.strtime(d,“%YYYY%mm%dd-%HH%mm%SS”) 3 pd1=pd.read_csv(r'c:\am\shared-2\topandas.txt',sep=':',header=None,name =['a'、'b'、'c'、'd'],解析日期=[1],转换器={'a':到日期时间}) 4#pd2=pd1.to#u日期时间(pd1.) 5 pd1

C:\ProgramData\Anaconda3\lib\u strptime.py in\u strptime\u datetime(cls, 数据(字符串、格式) 575“”根据输入字符串和 576格式字符串。”“” -->577 tt,分数,gmtoff\u分数=\u strTime(数据字符串,格式) 578 tzname,gmtoff=tt[-2:] 579 args=tt[:6]+(分数,)

C:\ProgramData\Anaconda3\lib\u strptime.py in_strptime(数据字符串, 格式) 357如果未找到: 358 raise VALUERROR(“时间数据%r与格式%r不匹配”% -->359(数据字符串,格式)) 360 if len(数据字符串)!=已找到。结束() 361 raise VALUE ERROR(“未转换的数据剩余:%s”%

ValueError:时间数据“20160101-000000”的格式不匹配 “%YYYY%mm%dd-%HH%mm%SS”


此处有必要将格式更改为仅使用一个字母,同时检查:

另一个类似的解决方案:

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

您的错误是,
%Y
匹配一个4位数的年份-因此,给出
%yyy
实际上是匹配“4位数的年份,后跟三个Y”。其他年份也是如此


请改为尝试以下格式字符串:
%Y%m%d-%H%m%S

我在thanx没有看到
%yyy
,我使用python很久了:-)thanx,我使用python很久了:-)
to_datetime = lambda d: pd.to_datetime(d, format='%Y%m%d-%H%M%S')