Pandas에서 두 개의 타임스탬프(Timestamp)를 비교하려면 인덱스 연산자, 즉 대괄호([])를 활용하면 됩니다. 먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
1. 예제용 DataFrame 생성하기
이번 예제에서는 3개의 열을 가진 DataFrame을 만들어 보겠습니다. 자동차 이름(Car), 구매일(Date_of_Purchase), 정비일(Date_of_Service) 정보를 담고 있으며, 각 날짜는 pd.Timestamp()로 생성합니다.
dataFrame = pd.DataFrame(
{
"Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW"],
"Date_of_Purchase": [
pd.Timestamp("2021-06-10"),
pd.Timestamp("2021-07-11"),
pd.Timestamp("2021-06-25"),
pd.Timestamp("2021-06-29"),
pd.Timestamp("2021-03-20"),
],
"Date_of_Service": [
pd.Timestamp("2021-11-10"),
pd.Timestamp("2021-12-11"),
pd.Timestamp("2021-11-25"),
pd.Timestamp("2021-11-29"),
pd.Timestamp("2021-08-20"),
]
}
)
2. 특정 행의 타임스탬프 비교하기
두 날짜 열에서 특정 위치의 값끼리 비교하려면 대괄호 안에 인덱스 번호를 지정하면 됩니다. 아래 코드는 첫 번째 행(인덱스 0)과 두 번째 행(인덱스 1)의 구매일과 정비일 차이를 계산합니다.
timestamp1_diff = abs(dataFrame['Date_of_Purchase'][0] - dataFrame['Date_of_Service'][0])
timestamp2_diff = abs(dataFrame['Date_of_Purchase'][1] - dataFrame['Date_of_Service'][1])
여기서 abs() 함수를 사용한 이유는 날짜 차이가 음수가 되지 않도록 절댓값으로 변환하기 위함입니다. 결과는 일(day) 단위의 Timedelta 객체로 반환됩니다.
3. 모든 타임스탬프 한 번에 비교하기
행마다 하나씩 계산할 필요 없이, 열 전체를 서로 빼주면 모든 행의 날짜 차이를 한 번에 구할 수 있습니다.
timestamp_diff = abs(dataFrame['Date_of_Purchase'] - dataFrame['Date_of_Service'])
전체 예제 코드
지금까지 설명한 내용을 하나로 합친 완성된 코드는 다음과 같습니다.
import pandas as pd
# 3개의 열을 가진 DataFrame 생성
dataFrame = pd.DataFrame(
{
"Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW"],
"Date_of_Purchase": [
pd.Timestamp("2021-06-10"),
pd.Timestamp("2021-07-11"),
pd.Timestamp("2021-06-25"),
pd.Timestamp("2021-06-29"),
pd.Timestamp("2021-03-20"),
],
"Date_of_Service": [
pd.Timestamp("2021-11-10"),
pd.Timestamp("2021-12-11"),
pd.Timestamp("2021-11-25"),
pd.Timestamp("2021-11-29"),
pd.Timestamp("2021-08-20"),
]
}
)
print("DataFrame...\n", dataFrame)
# 특정 행의 타임스탬프 비교
timestamp1_diff = abs(dataFrame['Date_of_Purchase'][0] - dataFrame['Date_of_Service'][0])
timestamp2_diff = abs(dataFrame['Date_of_Purchase'][1] - dataFrame['Date_of_Service'][1])
print("\n첫 번째 차량의 구매일과 정비일 차이\n", timestamp1_diff)
print("\n두 번째 차량의 구매일과 정비일 차이\n", timestamp2_diff)
# 전체 행의 타임스탬프 차이 계산
timestamp_diff = abs(dataFrame['Date_of_Purchase'] - dataFrame['Date_of_Service'])
print("\n두 타임스탬프 간의 차이:\n", timestamp_diff)
실행 결과
위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.
DataFrame...
Car Date_of_Purchase Date_of_Service
0 Audi 2021-06-10 2021-11-10
1 Lexus 2021-07-11 2021-12-11
2 Tesla 2021-06-25 2021-11-25
3 Mercedes 2021-06-29 2021-11-29
4 BMW 2021-03-20 2021-08-20
첫 번째 차량의 구매일과 정비일 차이
153 days 00:00:00
두 번째 차량의 구매일과 정비일 차이
153 days 00:00:00
두 타임스탬프 간의 차이:
0 153 days
1 153 days
2 153 days
3 153 days
4 153 days
dtype: timedelta64[ns]
정리
이처럼 Pandas에서는 대괄호 인덱싱만으로 손쉽게 타임스탬프를 추출하고 비교할 수 있습니다. 두 Timestamp 객체를 빼면 timedelta64[ns] 타입의 시간 차이가 계산되며, abs()를 함께 사용하면 항상 양수인 기간을 얻을 수 있습니다. 이 방법은 구매일과 정비일처럼 두 날짜 사이의 경과 기간을 분석할 때 매우 유용하게 활용됩니다.