timedelta 구하기
import datetime
diff_time = datetime.datetime.strptime('08:09',"%H:%M") - datetime.datetime.strptime('03:12',"%H:%M")
diff_time.seconds/60/60
striptime 메소드를 쓰면 datetime 형식을 사용할 수 있게 된다.
시간간 (날짜도 가능하다.) 차이를 구하면, diff_time은 다음과 같이 seconds로 계산되어 나오는데
seconds attribute를 꺼내어 이를 60*60으로 나누면
다음과 같이 10분위 수로 표현된 시간을 구할 수 있게 된다.
사용 예)
Q. 관람 시작 시각과 관람 종료 시각을 이용해 관람 시간을 구한다.
( 단, 관람 시간이 23시간이 넘을 경우 24시간으로 친다. )
weekday = []
weekend = []
for idx, rows in df_target.iterrows():
time_1 = datetime.datetime.strptime(rows['평일관람시작시각'],"%H:%M")
time_2 = datetime.datetime.strptime(rows['평일관람종료시각'],"%H:%M")
diff_time = time_2 - time_1
h = round(diff_time.seconds/3600 , 2)
weekday.append( h if h<=23 else 24. )
time_1 = datetime.datetime.strptime(rows['공휴일관람시작시각'],"%H:%M")
time_2 = datetime.datetime.strptime(rows['공휴일관람종료시각'],"%H:%M")
diff_time = time_2 - time_1
h = round(diff_time.seconds/3600 , 2)
weekend.append( h if h<=23 else 24. )
df_target['평일관람가능시간'] = weekday
df_target['공휴일관람가능시간'] = weekend
지시자 정리
지시자 |
의미 |
예 |
노트 |
---|---|---|---|
%a |
요일을 로케일의 축약된 이름으로. |
Sun, Mon, …, Sat (en_US);
So, Mo, …, Sa (de_DE)
|
(1) |
%A |
요일을 로케일의 전체 이름으로. |
Sunday, Monday, …, Saturday (en_US);
Sonntag, Montag, …, Samstag (de_DE)
|
(1) |
%w |
요일을 10진수로, 0은 일요일이고 6은 토요일입니다. | 0, 1, …, 6 | |
%d |
월중 일(day of the month)을 0으로 채워진 10진수로. | 01, 02, …, 31 | (9) |
%b |
월을 로케일의 축약된 이름으로. |
Jan, Feb, …, Dec (en_US);
Jan, Feb, …, Dez (de_DE)
|
(1) |
%B |
월을 로케일의 전체 이름으로. |
January, February, …, December (en_US);
Januar, Februar, …, Dezember (de_DE)
|
(1) |
%m |
월을 0으로 채워진 10진수로. | 01, 02, …, 12 | (9) |
%y |
세기가 없는 해(year)를 0으로 채워진 10진수로. | 00, 01, …, 99 | (9) |
%Y |
세기가 있는 해(year)를 10진수로. | 0001, 0002, …, 2013, 2014, …, 9998, 9999 | (2) |
%H |
시(24시간제)를 0으로 채워진 십진수로. | 00, 01, …, 23 | (9) |
%I |
시(12시간제)를 0으로 채워진 십진수로. | 01, 02, …, 12 | (9) |
%p |
로케일의 오전이나 오후에 해당하는 것. |
AM, PM (en_US);
am, pm (de_DE)
|
(1), (3) |
%M |
분을 0으로 채워진 십진수로. | 00, 01, …, 59 | (9) |
%S |
초를 0으로 채워진 10진수로. | 00, 01, …, 59 | (4), (9) |
%f |
Microsecond as a decimal number, zero-padded to 6 digits. | 000000, 000001, …, 999999 | (5) |
%z |
±HHMM[SS[.ffffff]] 형태의 UTC 오프셋 (객체가 나이브하면 빈 문자열). |
(비어 있음), +0000, -0400, +1030, +063415, -030712.345216 | (6) |
%Z |
시간대 이름 (객체가 나이브하면 빈 문자열). | (비어 있음), UTC, GMT | (6) |
%j |
연중 일(day of the year)을 0으로 채워진 십진수로. | 001, 002, …, 366 | (9) |
%U |
Week number of the year (Sunday as the first day of the week) as a zero-padded decimal number. All days in a new year preceding the first Sunday are considered to be in week 0. | 00, 01, …, 53 | (7), (9) |
%W |
Week number of the year (Monday as the first day of the week) as a zero-padded decimal number. All days in a new year preceding the first Monday are considered to be in week 0. | 00, 01, …, 53 | (7), (9) |
%c |
로케일의 적절한 날짜와 시간 표현. |
Tue Aug 16 21:30:00 1988 (en_US);
Di 16 Aug 21:30:00 1988 (de_DE)
|
(1) |
%x |
로케일의 적절한 날짜 표현. |
08/16/88 (None);
08/16/1988 (en_US);
16.08.1988 (de_DE)
|
(1) |
%X |
로케일의 적절한 시간 표현. |
21:30:00 (en_US);
21:30:00 (de_DE)
|
(1) |
%% |
리터럴 '%' 문자. |
% |
참고 :
https://docs.python.org/ko/3/library/datetime.html#examples-of-usage-timedelta
'EDA' 카테고리의 다른 글
[pandas] sort가 stable 하다는걸 활용한 다중 정렬 (0) | 2022.10.11 |
---|---|
[2018 Data Science Bowl] Teaching notebook for total imaging newbies Kor 캐글 필사 (2) | 2022.09.20 |
[Pandas] dictionery를 사용한 맞춤 정렬 (0) | 2022.09.11 |
[numpy] kmeans.cluster_centers_[kmeans.labels_] (0) | 2022.08.27 |
[SNS] Seaborn 의 factorplot을 이용해보자. (0) | 2022.07.19 |