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 |