Pandas DataFrame에서 두 날짜(타임스탬프) 간의 차이를 구하려면 대괄호 안에 인덱스 번호를 사용하여 특정 행의 값에 접근하면 됩니다. 이 글에서는 차량별 구매일과 정비일 사이의 기간을 계산하는 예제를 통해 그 방법을 살펴보겠습니다.
1. 라이브러리 가져오기
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
2. 타임스탬프가 포함된 DataFrame 생성
세 개의 컬럼을 가진 DataFrame을 만들어 보겠습니다. 여기서는 구매일(Date_of_Purchase)과 정비일(Date_of_Service), 두 개의 날짜 컬럼을 사용합니다.
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-05"),
pd.Timestamp("2021-12-03"),
pd.Timestamp("2021-10-30"),
pd.Timestamp("2021-11-29"),
pd.Timestamp("2021-08-20"),
]
}
)
3. 특정 행의 타임스탬프 비교하기
대괄호 표기법으로 원하는 행에 접근한 뒤, 두 타임스탬프의 차이에 abs() 함수를 적용하면 절대적인 기간 차이를 얻을 수 있습니다. 여기서는 0번부터 2번까지, 즉 첫 번째부터 세 번째 행의 차이를 구해보겠습니다.
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])
timestamp3_diff = abs(dataFrame['Date_of_Purchase'][2] - dataFrame['Date_of_Service'][2])
전체 예제 코드
지금까지 설명한 내용을 하나로 합친 전체 코드는 다음과 같습니다.
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-05"),
pd.Timestamp("2021-12-03"),
pd.Timestamp("2021-10-30"),
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])
timestamp3_diff = abs(dataFrame['Date_of_Purchase'][2] - dataFrame['Date_of_Service'][2])
print("\n차량 1의 구매일과 정비일 차이\n", timestamp1_diff)
print("\n차량 2의 구매일과 정비일 차이\n", timestamp2_diff)
print("\n차량 3의 구매일과 정비일 차이\n", timestamp3_diff)
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DataFrame...
Car Date_of_Purchase Date_of_Service
0 Audi 2021-06-10 2021-11-05
1 Lexus 2021-07-11 2021-12-03
2 Tesla 2021-06-25 2021-10-30
3 Mercedes 2021-06-29 2021-11-29
4 BMW 2021-03-20 2021-08-20
차량 1의 구매일과 정비일 차이
148 days 00:00:00
차량 2의 구매일과 정비일 차이
145 days 00:00:00
차량 3의 구매일과 정비일 차이
127 days 00:00:00
정리
이처럼 Pandas에서는 pd.Timestamp로 생성한 날짜 값끼리 서로 뺄셈하면 Timedelta 객체가 반환되며, 이를 abs()로 감싸면 두 날짜 사이의 절대적인 기간을 손쉽게 구할 수 있습니다. 대괄호 안의 인덱스 번호만 바꾸면 어떤 행이든 원하는 위치의 타임스탬프를 자유롭게 비교할 수 있습니다.