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

Python Pandas – DataFrame 그룹별 마지막 값 계산하기

Pandas에서 그룹별 마지막 값을 계산하려면 groupby.last() 메서드를 사용합니다. 이 메서드는 데이터를 그룹화한 후 각 그룹에서 가장 마지막에 나타난 행의 값을 반환해 줍니다. 먼저 필요한 라이브러리를 별칭과 함께 가져옵니다.

import pandas as pd

다음으로 세 개의 열(Car, Place, Units)을 가진 DataFrame을 생성합니다.

dataFrame = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'BMW', 'Tesla', 'Lexus', 'Tesla'],
        "Place": ['Delhi', 'Bangalore', 'Pune', 'Punjab', 'Chandigarh', 'Mumbai'],
        "Units": [100, 150, 50, 80, 110, 90]
    }
)

이제 "Car" 열을 기준으로 DataFrame을 그룹화합니다.

groupDF = dataFrame.groupby("Car")

그룹별 마지막 값을 계산한 뒤, 인덱스를 초기화(reset)하여 보기 좋게 정리합니다.

res = groupDF.last()
res = res.reset_index()

전체 예제 코드

아래는 전체 코드입니다. 동일한 값이 여러 번 나타날 때 마지막으로 등장한 값, 즉 각 그룹의 마지막 값이 출력됩니다.

import pandas as pd

dataFrame = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'BMW', 'Tesla', 'Lexus', 'Tesla'],
        "Place": ['Delhi', 'Bangalore', 'Pune', 'Punjab', 'Chandigarh', 'Mumbai'],
        "Units": [100, 150, 50, 80, 110, 90]
    }
)

print("DataFrame ...\n", dataFrame)

# Car 열을 기준으로 DataFrame 그룹화
groupDF = dataFrame.groupby("Car")

res = groupDF.last()
res = res.reset_index()

print("\n그룹별 마지막 값 = \n", res)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

DataFrame ...
     Car       Place  Units
0    BMW       Delhi    100
1  Lexus  Bangalore    150
2    BMW        Pune     50
3  Tesla      Punjab     80
4  Lexus Chandigarh    110
5  Tesla      Mumbai     90

그룹별 마지막 값 =
     Car       Place  Units
0    BMW        Pune     50
1  Lexus Chandigarh    110
2  Tesla      Mumbai     90

참고 사항

groupby.last()는 기본적으로 결측값(NaN)을 건너뛰고 각 열에서 마지막으로 나타난 유효한 값을 반환합니다. 만약 NaN 값도 그대로 유지하고 싶다면 groupDF.last(skipna=False)처럼 skipna 옵션을 활용할 수 있습니다. 또한 reset_index()를 적용하면 그룹 키가 일반 열로 변환되어 결과 DataFrame을 더 직관적으로 다룰 수 있습니다.