Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Pandas DataFrame에서 특정 타임스탬프 비교하는 방법 – Python

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()로 감싸면 두 날짜 사이의 절대적인 기간을 손쉽게 구할 수 있습니다. 대괄호 안의 인덱스 번호만 바꾸면 어떤 행이든 원하는 위치의 타임스탬프를 자유롭게 비교할 수 있습니다.