여러데이터를 보게되면 시간의 형식이 달라서
곤란한 경우가 있다 예를 들어 A데이터는 자정을 15일 00시라고 하고 B데이터는 14일 24시라고 하는 경우이다.
B의 경우에는 판다스의 데이터타임이 시간을 인식하지 못하여 타임으로 변환하지 못한다.
time00 = '2022021500'
pd.to_datetime(time00, format='%Y%m%d%H')
Timestamp('2022-02-15 00:00:00')
time24 = '2022021424'
pd.to_datetime(time, format='%Y%m%d%H')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in _to_datetime_with_format(arg, orig_arg, name, tz, fmt, exact, errors, infer_datetime_format)
508 try:
--> 509 values, tz = conversion.datetime_to_datetime64(arg)
510 dta = DatetimeArray(values, dtype=tz_to_dtype(tz))
보통의 날은 문자열의 처리로 가능하겠지만 월이바뀌는 01/31/24과 02/01/00같은 경우에는 곤란할 것이다.
그렇기 때문에 마지막 24라는 문자열을 00으로 대체후에 타임델타를 이용하여 하루 이후로 가는 방식이 이상적인 것 같다
from datetime import datetime, timedelta
def zerofrom24(datetime, _format):
datetime = str(datetime)
try:
return pd.to_datetime(datetime, format = _format)
except:
datetime = datetime[:-2] + '00'
return pd.to_datetime(datetime, format = _format)+ timedelta(days=1)
print(zerofrom24('2022021424','%Y%m%d%H'))
print(zerofrom24('2022021500','%Y%m%d%H'))
2022-02-15 00:00:00
2022-02-15 00:00:00
print(ex)
print(ex.map(lambda x : zerofrom24(x,'%Y%m%d%H')))
20 2021010121
21 2021010122
22 2021010123
23 2021010124
Name: 측정일시, dtype: int64
20 2021-01-01 21:00:00
21 2021-01-01 22:00:00
22 2021-01-01 23:00:00
23 2021-01-02 00:00:00
Name: 측정일시, dtype: datetime64[ns]
이렇게 모든 것을 00으로 맞춘후에 조인하면된다
'pandas' 카테고리의 다른 글
[ pandas ] to_datetime 시간데이터 다루기 기본 (0) | 2022.02.14 |
---|---|
[pandas] 결측값처리 (0) | 2021.12.02 |
[pandas] os모듈을 활용하여 원하는 여러 파일들 가져오기 (0) | 2021.12.01 |
[ pandas 기초] 컬럼명변경 pandas.rename (0) | 2021.12.01 |
[ pandas ] 데이터 타입변경, 데이터 범주화 (0) | 2021.08.30 |