Pandas: 두 날짜의 차이를 계산하는 방법


다음 구문을 사용하여 Pandas DataFrame에서 두 날짜 간의 차이를 계산할 수 있습니다.

 df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')

이 특정 예에서는 end_datestart_date 열의 날짜 차이를 일 단위로 계산합니다.

timedelta64() 함수의 “D”를 다음 값으로 대체하여 다양한 단위의 날짜 차이를 계산할 수 있습니다.

  • : 주
  • : 월
  • Y : 년

다음 예는 실제로 Pandas DataFrame에서 날짜 차이를 계산하는 방법을 보여줍니다.

예 1: 날짜/시간 열을 사용하여 두 날짜 간의 차이 계산

다음과 같은 팬더 DataFrame이 있다고 가정합니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' start_date ': pd. date_range (start=' 1/5/2020 ', periods= 6 , freq=' W '),
                   ' end_date ': pd. date_range (start=' 6/1/2020 ', periods= 6 , freq=' M ')})

#view DataFrame
print (df)

  start_date end_date
0 2020-01-05 2020-06-30
1 2020-01-12 2020-07-31
2 2020-01-19 2020-08-31
3 2020-01-26 2020-09-30
4 2020-02-02 2020-10-31
5 2020-02-09 2020-11-30

#view dtype of each column in DataFrame
df. dtypes

start_date datetime64[ns]
end_date datetime64[ns]
dtype:object

DataFrame의 두 열 모두 이미 datetime64 유형을 갖고 있으므로 다음 구문을 사용하여 시작 날짜와 종료 날짜 간의 차이를 계산할 수 있습니다.

 import numpy as np

#create new columns that contains date differences
df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')
df[' diff_weeks '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' W ')
df[' diff_months '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' M ')
df[' diff_years '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' Y ')

#view updated DataFrame
print (df)

  start_date end_date diff_days diff_weeks diff_months diff_years
0 2020-01-05 2020-06-30 177.0 25.285714 5.815314 0.484610
1 2020-01-12 2020-07-31 201.0 28.714286 6.603832 0.550319
2 2020-01-19 2020-08-31 225.0 32.142857 7.392349 0.616029
3 2020-01-26 2020-09-30 248.0 35.428571 8.148011 0.679001
4 2020-02-02 2020-10-31 272.0 38.857143 8.936528 0.744711
5 2020-02-09 2020-11-30 295.0 42.142857 9.692191 0.807683

새 열에는 일, 주, 월, 연도 단위로 시작 날짜와 종료 날짜 간의 날짜 차이가 포함됩니다.

예 2: 문자열 열을 사용하여 두 날짜 간의 차이 계산

다음과 같은 팬더 DataFrame이 있다고 가정합니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' start_date ': ['2020-01-05', '2020-01-12', '2020-01-19'],
                   ' end_date ': ['2020-06-30', '2020-07-31', '2020-08-31']})

#view dtype of each column
print ( df.dtypes )

start_date object
end_date object
dtype:object

DataFrame의 두 열 모두 datetime64 유형이 없으므로 날짜 간의 차이를 계산하려고 하면 오류가 발생합니다.

 import numpy as np

#attempt to calculate date difference
df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')

TypeError : unsupported operand type(s) for -: 'str' and 'str'

날짜 간의 차이를 계산하기 전에 먼저 pd.to_datetime을 사용하여 각 열을 날짜/시간 형식으로 변환해야 합니다.

 import numpy as np

#convert columns to datetime
df[[' start_date ', ' end_date ']] = df[[' start_date ', ' end_date ']]. apply (pd. to_datetime )

#calculate difference between dates
df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')

#view updated DataFrame
print (df)

  start_date end_date diff_days
0 2020-01-05 2020-06-30 177.0
1 2020-01-12 2020-07-31 201.0
2 2020-01-19 2020-08-31 225.0

먼저 각 열을 날짜/시간 형식으로 변환했기 때문에 오류 없이 날짜 간의 차이를 성공적으로 계산할 수 있었습니다.

추가 리소스

다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

Pandas에서 날짜 범위를 만드는 방법
Pandas에서 날짜로부터 월을 추출하는 방법
Pandas에서 타임스탬프를 날짜/시간으로 변환하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다