-
[에러해결] datetime | hour 24:00:00 변환 오류__Python 2021. 6. 2. 11:49
Problem with converting to 'datetime' type:
ValueError: hour must be in 0..23.
[문제]
시계열 자료에서 시간 데이터는 datetime 처리 후 작업을 하는데,
간혹 데이터 중에 시간 부분이 '24시'로 표현되어 있어 datetime 변환 시 에러가 발생하는 경우가 있다.
예를 들면, '2021-06-01 24:00:00' 은 다음일자 0시인 '2021-06-02 00:00:00' 형태여야 변환이 가능하다.
[해결]
for df in [data]: df['time'] = df['time'].apply(lambda x: pd.to_datetime(x.split()[0]) + timedelta(days=1) if x.split()[1]=='24:00:00' else x) df['time'] = pd.to_datetime(df['time'])
- 시간피쳐에 lambda 함수를 적용
- 시간 값을 split하면(datetime 변환 전 = str type) [0]번째에는 날짜가, [1]번째에는 시간이 들어간다.
- 시간(split[1] )값이 24시라면 ->
날짜(split[0] )값만 'datetime'형식으로 변환 후 timedelta를 이용해 하루(1day)를 더해주면 된다. (pd.to_datetime('2021-01-04') => 결과: '2021-01-04 00:00:00 이므로)
- 시간(split[1] )값이 0~23시라면 -> 그대로 둔다.
#파이썬 시간더하기 #파이썬 시간데이터 다루기 #24시 datetime
728x90'__Python' 카테고리의 다른 글
[python+] Oracle | Connecting to Oracle Database XE (0) 2021.06.16 [python] os | 파일 및 디렉터리 관리 (+에러해결) (0) 2021.06.04 [pandas] DataFrame | 데이터프레임 병합하기(concat, merge) (0) 2021.06.02 [에러해결] colab | matplotlib 한글 폰트 설정하기 (0) 2021.06.01 [에러해결] datetime 출력 형식 변경 : .date() / busday_count() TypeError (0) 2021.05.29