let us not love with words or tongue but actions and truth.

IT/파이썬

[시간 데이터 다루기] to_datetime활용하기

sarah0518 2021. 1. 6. 13:50
728x90

간단히 pandas를 활용해서 시간데이터를 다루는 법을 정리하려고 합니다.

 

1. datetime으로 형변환하기

2. 날짜, 시간, 분 추출하기

3. 값 변경하기

4. 시간 조건 걸기

 

 

1. datetime으로 형변환하기

 

우리에게 아래와 같은 dataset이 있다고 할게요.

 

start_date_time 지금은 string 타입으로 있는데, 이걸 datetime형으로 바꿔주려고 합니다.

 

1
df['dt2'= pd.to_datetime(df['start_date_time'], format='%Y-%m-%d %H:%M', errors='raise')
cs

 

[output]

 

 

 

2. 날짜/시간/시/분으로 추출하기

 

이제 dt2 값을 날짜/시간/시/분으로 쪼개 보려고 합니다.

 

코드는 더 간단해요. 이미 dt2가 datetime 형식이기 때문이죠.

"import datetime as dt"를 미리 해주세요.

 

1
2
3
4
5
6
7
8
9
10
11
12
# 날짜 추출하기
df['log_date']=df['dt2'].dt.date
 
# 시간 추출하기
df['log_time']=df['dt2'].dt.time
 
# 시 추출하기
df['log_hour']=df['dt2'].dt.hour
 
# 분 추출하기
df['log_min']=df['dt2'].dt.minute
 
cs

 

 

[output]

 

 

 

3. 시간 값 변경하기

 

end 컬럼에서 24:00로 되어 있는 값은 python datetime에서는 읽히지가 않아요.

꼭 0:00으로 변경해야됩니다.

 

1
2
df['end'].replace('24:00','0:00', inplace=True)
 
cs

 

[output]

 

 

그 다음 위와 동일하게 pd.to_datetime함수를 써주면 돼요.

 

1
df['end2']=pd.to_datetime(df['end'], format='%H:%M', errors='raise').dt.time
cs

 

[output]

 

** 24:00로 되어있는 것은 꼭 0:00로 변경해야지 pd.to_datetime함수가 적용된다는거 잊지 마세요.

 

 

 

 

3. 시간 조건걸기

 

end값이 19:00:00인 행은 어떻게 추출해 낼까요?

 

end의 타입에 관계없이 아래와 같이 써주면 쉽게 확인할 수 있습니다.

 

특히 시간 데이터는 형타입에 따라 쓸수있는 조건들이 다르기 때문에 저는 항상 string형태로 변환시킨후 조건문을 적용시켜요.

 

1
2
df[df['end2'].astype('str')=='19:00:00']['id']
 
cs

>> [output]

      b

 

 

 

4. 년도, 월형식으로 변경하기

 

날짜에서 일을 제외하고, 년도/월형식으로 표현할 때 유용한 방법입니다.

 

df['yymm']=df['date'].dt.strftime("%Y/%m")

 

 

 

 

 

728x90