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

IT/파이썬

[시간 데이터 다루기] rsub활용하여 시간차이 구하기

sarah0518 2021. 1. 8. 18:10
728x90

시간차이를 구하는 일은 시간데이터를 다루다 보면 정말 빈번하게 있는 일이죠.

꼭 기억하자는 측면에서 오늘 기록해보고자 합니다.

 

아래와 같은 데이터가 있습니다.

 

오늘일자가 2021-01-08인 상황에서 "등록기간(년)"이라는 컬럼을 채워야 하는 상황이에요.

id 등록일 등록기간(년)
ka234 2020.07.08 ??
ka212  2019.08.30  
sa934  2020.09.01  
sa712  2020.02.01  

 

이 컬럼을 채우기 위해서는 아래와 같이 간단한 코드면 된답니다.

 

1
2
3
4
5
6
7
8
9
10
11
import datetime
import math
# 오늘 날짜를 입력받음
now = datetime.date.today()
today = pd.Timestamp(now)
 
# 등록일 컬럼을 datetime 포맷으로 변경함
df['enter_dt']=pd.to_datetime(df['등록일'], format='%Y-%m-%d %H:%M', errors='raise')
 
# 두 날짜의 차이를 계산
df['enter_today'= ((df['enter_dt'].rsub(today, axis=0).dt.days)/365).astype('int')
cs

 

 

궁금해 하실 분들이 있을 거 같아서, 

 

df['enter_dt'].rsub(today, axis=0).dt.days)/365) 이 코드만 따로 돌려 결과를 확인해보면

 

아래와 같은 결과가 나옵니다.

>> df['enter_dt'].rsub(today, axis=0).dt.days)/365)

0        3651
1        4025
2        3417
3        3266
4        2748

 

이 값을 365(대략)으로 나눠주면 사람들이 등록일로부터 몇년이 되었는지를 알 수 있습니다.

 

아쉽게도 datetime이 지원하는 것 중에서

dt.years, dt.munites, hours와 같은 속성은 가지고 있지 않습니다.

 

대신, 예문에서 본것과 같이 dt.days와 dt.seconds는 가지고 있어요

이 두 속성을 활용해서 year, minutes, hour에 해당하는 값을 계산하시면 됩니다.

 

시간차이를 구하기 위해서 쓴 rsub라는 함수 꼭 기억하세요!

 

 

 

 

728x90

'IT > 파이썬' 카테고리의 다른 글

[그래프] box-plot 그리기  (0) 2021.01.27
if문과 map함수로 파생변수 만들기  (0) 2021.01.25
[시간 데이터 다루기] to_datetime활용하기  (0) 2021.01.06
applymap 활용하기  (0) 2021.01.05
one-hot encoding(원-핫 인코딩)  (0) 2021.01.04