Python 错误:时间数据';20160101-000000';与格式不匹配';%YYYY%mm%dd-%HH%mm%SS';
我搜索了这么多,发现的问题似乎不包括我的情况。我遵循了使用Jupyter Python笔记本中的指令编写的代码: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='
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):1138nrows=\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')