source

시간 데이터가 형식과 일치하지 않음

nicesource 2023. 7. 23. 14:23
반응형

시간 데이터가 형식과 일치하지 않음

다음 오류가 발생합니다.

time data '07/28/2014 18:54:55.099000' does not match format '%d/%m/%Y %H:%M:%S.%f'

그러나 어떤 파라미터가 잘못되었는지 알 수 없습니다.%d/%m/%Y %H:%M:%S.%f?

이것이 제가 사용하는 코드입니다.

from datetime import datetime
time_value = datetime.strptime(csv_line[0] + '000', '%d/%m/%Y %H:%M:%S.%f')

추가 및 제거했습니다.000하지만 저도 같은 오류가 발생합니다.

월과 일을 스왑했습니다.

'%m/%d/%Y %H:%M:%S.%f'

28절대로 그 범위에 맞지 않을 것입니다.%mmonth 파라미터를 지정합니다.

와 함께%m그리고.%d올바른 순서로 구문 분석합니다.

>>> from datetime import datetime
>>> datetime.strptime('07/28/2014 18:54:55.099000', '%m/%d/%Y %H:%M:%S.%f')
datetime.datetime(2014, 7, 28, 18, 54, 55, 99000)

추가할 필요가 없습니다.'000';%f더 짧은 숫자를 올바르게 구문 분석할 수 있습니다.

>>> datetime.strptime('07/28/2014 18:54:55.099', '%m/%d/%Y %H:%M:%S.%f')
datetime.datetime(2014, 7, 28, 18, 54, 55, 99000)

위의 답변이 100% 도움이 되고 정확하지만, 위의 답변과 판다 문서를 읽는 것만이 도움이 되었기 때문에 다음을 추가하고 싶습니다.

두 자리 숫자 / 네 자리 숫자 연도

주목할 점은 두 자리 숫자의 연도를 통해 구문 분석하기 위해, 예를 들어 '1990'이 아닌 '90',%y필요한 것은(는)%Y.

날짜 시간 자동 유추

미리 정의된 형식의 구문 분석이 여전히 작동하지 않으면 플래그를 사용해 보십시오.infer_datetime_format=True예:

yields_df['Date'] = pd.to_datetime(yields_df['Date'], infer_datetime_format=True)

이 솔루션은 미리 정의된 형식을 사용하는 것보다 느립니다.

datetime 라이브러리를 사용할 필요가 없습니다.dateutil 라이브러리를 사용하면 다음 형식이 필요하지 않습니다.

>>> from dateutil import parser
>>> s= '25 April, 2020, 2:50, pm, IST'
>>> parser.parse(s)
datetime.datetime(2020, 4, 25, 14, 50)

해결책을 찾기 어려운 경우가 있었습니다.이는 특정 질문과 정확히 관련이 없지만 strptime에 시간대 정보가 제공될 때 동일한 오류 메시지가 표시된 사례를 해결하는 데 도움이 될 수 있습니다.제 경우에, 던지는 이유는

ValueError: '2016-02-28T08:27:16.000-07:00' 시간 데이터가 '%Y-%m-%dT%H:%M:%S' 형식과 일치하지 않습니다.%f%z'

시간대 부분에 마지막 콜론이 존재했습니다.일부 로케일(예: 러시아 로케일)에서는 코드가 잘 실행되는 반면, 다른 로케일(영어 로케일)에서는 코드가 실패했습니다.마지막 결장을 제거한 것이 제 상황을 개선하는 데 도움이 되었습니다.

날짜 시간을 비교하기 위해 이것을 시도할 수 있습니다.날짜/시간 형식을 변경할 수 있습니다.

from datetime import datetime

>>> a = datetime.strptime("10/12/2013", "%m/%d/%Y")
>>> b = datetime.strptime("10/15/2013", "%m/%d/%Y")
>>> a>b
False

저는 정확히 같은 오류가 있었지만 형식과 근본 원인이 약간 달랐고, "시간 데이터가 형식과 일치하지 않습니다"를 검색할 때 나타나는 첫 번째 질의응답이기 때문에, 저는 제가 저지른 실수를 미래의 시청자들을 위해 남겨두어야겠다고 생각했습니다.

내 초기 코드:

start = datetime.strptime('05-SEP-19 00.00.00.000 AM', '%d-%b-%y %I.%M.%S.%f %p')

내가 사용처%I시간을 분석하고%p'AM/PM'을 구문 분석합니다.

오류:

값 오류: 시간 데이터 '05-SEP-1900.00.000000AM'이(가) '%d-%b-%y %I' 형식과 일치하지 않습니다.%M.%S.%f %p'

데이트 시간 문서들을 살펴보다가 마침내 12시간 형식으로%I00는 없습니다...일단 내가 바뀌었을 때00.00.0012.00.00문제가 해결되었습니다.

01-12를 입니다.%I와 함께%p또는 00-23을 사용하여%H.

저도 비슷한 오류가 있었습니다.

time data '01-07-2020' does not match format '%d%m%Y' (match)

저는 형식 매개 변수에 하이픈을 사용해야 하는지 몰랐습니다.내겐 효과가 있었어요

df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y')

또한 동일한 오류가 발생했습니다. '09/24/1997' 시간 데이터가 '%m-%d-%Y' 형식과 일치하지 않습니다.

날짜가 /를 사용하는 경우 / 형식도 /를 사용합니다. 예를 들어

'09/24/1997' => '%m/%d/%Y'가 대시를 사용하여 해당 오류를 표시합니다.

다음 형식의 datetime 형식 문자열 형식이 있다고 가정합니다.

2018-01-31T09:24:31.488670+00:00 

이 datetime str을 datetime 객체로 변환할 수 있습니다.

import datetime 
        
DatetImeObj = datetime.datetime.strptime('2018-01-31T09:24:31.488670+00:00', '%Y-%m-%dT%H:%M:%S.%f%z') 

그러면 다음과 같은 결과가 포함된 날짜/시간 형식이 반환됩니다.

2018-01-31 09:24:31.488670+00:00 
     

이제 이 날짜 시간을 어떤 형식으로든 변환하려면 모든 날짜 시간 함수를 사용할 수 있습니다.

finalDateTime = Datetime.datetime.strftime(DatetImeObj , ‘%Y-%m-%d %H:%M’)

출력:

2018-01-31 09:24

작은 "y"를 사용하는 경우 대문자 "Y"를 사용합니다.

예:

Input: '2022-10-05 15:22:39'
datetime.datetime.strptime(date,'%Y-%m-%d %H:%M:%S')

문자열에서 "/"를 제거하고 ","를 넣으면 됩니다.. 쾅

다음 코드를 참조하십시오.

import datetime as dt
str = '01,01,2017'
datetime_value = dt.datetime.strptime(str,'%d,%m,%Y')
print(datetime_value) # prints: 2017-01-01 00:00:00

언급URL : https://stackoverflow.com/questions/25015711/time-data-does-not-match-format

반응형