API · Pandas

Pandas DataFrame DataFrame.transform() 함수

Pandas DataFrame transform() 함수는 DataFrame에 전달 된 함수를 적용하고 DataFrame을 변환합니다.

이 페이지의 내용

Python Pandas의 DataFrame.transform()는 DataFrame에 함수를 적용해 변환된 결과를 반환합니다. 선택한 축의 길이를 원래 데이터와 맞춘 채 값을 변경할 때 유용합니다. 여러 값을 하나의 결과로 요약하는 축약 연산보다는 요소별 또는 시리즈별 변환에 사용하세요.

DataFrame.transform()의 작동 방식

DataFrame.transform()는 데이터를 함수에 전달하고 변환된 결과를 모읍니다. 기본값인 axis=0에서는 각 열에 함수를 적용하고, axis=1을 지정하면 행을 선택합니다. 결과는 선택한 축의 길이를 유지해야 합니다. 따라서 축의 길이를 바꾸는 함수는 호환되지 않으며 pandas에서 ValueError가 발생합니다. 이 제약 덕분에 후속 연산에서도 값과 원래 행 또는 열의 대응 관계를 유지해야 할 때 transform을 사용할 수 있습니다.

예를 들어 모든 값에 상수를 더하면 데이터의 배치를 바꾸지 않고 값을 변경할 수 있습니다. 합계와 같은 요약은 여러 값을 더 작은 결과로 줄이므로 이와 다릅니다. 함수를 선택할 때 이 차이를 염두에 두고, 결과가 선택한 축에 맞는지 확인하세요.

DataFrame.transform()의 구문과 매개변수

메서드 시그니처는 DataFrame.transform(func, axis=0, *args, **kwargs)입니다. func는 적용할 변환입니다. axis는 열(0 또는 "index")이나 행(1 또는 "columns")을 선택합니다. *args의 위치 인수와 **kwargs의 키워드 인수는 함수에 전달됩니다. 변환에 설정 가능한 값이 필요할 때 유용합니다. 함수 자체의 기본값을 사용한다면 추가 인수는 생략하세요.

반환 객체에는 선택한 축의 길이 제약을 만족하는 변환 데이터가 들어갑니다. 이 제약을 충족할 수 없는 결과를 내는 함수를 전달하면 오류가 발생합니다. 길이가 더 짧은 요약 결과를 transform에 적합하게 만들지는 않습니다. 요약이 목적이라면 축약 연산을 사용하세요.

DataFrame에 함수 하나 적용하기

호출 가능한 객체는 선택된 각 Series를 입력으로 받습니다. 이 예제에서는 2를 더해 행과 열을 유지하면서 모든 값을 변경합니다. 다음 예제를 실행하세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

import pandas as pd

frame = pd.DataFrame({"sales": [10, 20], "cost": [2, 5]})
adjusted = frame.transform(lambda column: column + 2)
print(adjusted.to_dict(orient="list"))
{'sales': [12, 22], 'cost': [4, 7]}

람다 함수는 입력과 길이가 같은 Series를 반환하는 간단한 호출 가능 객체입니다. 재사용할 로직이라면 이름이 있는 함수를 정의하고 그 이름을 func로 전달하세요. 해당 함수에 필요한 인수는 *args 또는 **kwargs로 전달할 수도 있습니다. 표시된 값을 보면 산술 결과를 직접 확인하고 두 열 모두 원래 행 위치를 유지하는지 살펴볼 수 있습니다.

DataFrame.transform()에 여러 함수 적용하기

여러 변환을 적용하려면 frame.transform([normalize, standardize])처럼 함수 목록을 전달하세요. 각 이름은 현재 범위에 있는 호출 가능 객체를 가리킵니다. pandas는 전달된 각 변환을 적용합니다. 같은 데이터에서 여러 파생 결과를 얻고 싶을 때 유용합니다. 각 함수의 결과가 선택한 축의 길이 제약을 만족하는지 확인하세요. 결합된 결과는 함수와 pandas의 동작에 따라 달라지므로 특정 열 배치를 미리 가정하지 말고 실제 사용 목적에 맞게 반환 객체를 확인하세요. 이 호출 방식은 설명을 위한 예시이며 실제 실행 결과를 제시하는 것은 아닙니다.

DataFrame.transform()와 DataFrame.apply() 비교

각 연산이 선택된 축의 길이를 유지하고 변환된 값을 입력과 대응시켜야 한다면 DataFrame.transform()를 사용하세요. DataFrame.apply()는 함수 결과의 형태에 더 유연하므로, 요약을 반환하거나 결과 형태를 바꾸는 연산에 더 적합할 수 있습니다. 두 메서드의 동작은 함수와 축에 따라 달라집니다. 한 메서드가 언제나 더 빠르다고 가정하지 말고 필요한 결과를 기준으로 선택하세요. 별도의 호출 방법은 DataFrame.apply()를 참고하세요.