문제 개요
pandas 라이브러리를 사용하면 DataFrame 내부의 최솟값을 손쉽게 계산할 수 있습니다. 이번 글에서는 주어진 DataFrame에서 각 행의 최솟값을 새로운 열로, 그리고 각 열의 최솟값을 새로운 행으로 추가하는 방법을 단계별로 알아보겠습니다.
예시 데이터프레임
다음과 같은 데이터프레임이 있다고 가정해 보겠습니다.
one two three 0 12 13 5 1 10 6 4 2 16 18 20 3 11 15 58
최종적으로 원하는 결과는 아래와 같습니다.
새 열에 최솟값 추가 one two three min_value 0 12 13 5 5 1 10 6 4 4 2 16 18 20 16 3 11 15 58 11 새 행에 최솟값 추가 one two three min_value 0 12 13 5 5 1 10 6 4 4 2 16 18 20 16 3 11 15 58 11 4 10 6 4 4
해결 방법
이 문제는 다음 순서로 해결할 수 있습니다.
- 데이터프레임을 정의합니다.
df.min(axis=1)을 사용하여 각 행(row)의 최솟값을 구하고, 이를 새로운 열 'min_value'에 저장합니다.df.min(axis=0)을 사용하여 각 열(column)의 최솟값을 구하고, 이를 새로운 행으로 추가합니다.
핵심 코드
각 행의 최솟값을 새 열로 추가하는 코드입니다.
df['min_value'] = df.min(axis=1)
각 열의 최솟값을 새 행으로 추가하는 코드입니다.
df.loc[len(df)] = df.min(axis=0)
전체 코드 예제
아래 전체 코드를 실행하면 동작 과정을 더 명확하게 이해할 수 있습니다.
import pandas as pd
import numpy as np
data = [[12,13,5],[10,6,4],[16,18,20],[11,15,58]]
df = pd.DataFrame(data, columns=('one','two','three'))
print("새 열에 최솟값 추가")
df['min_value'] = df.min(axis=1)
print(df)
print("새 행에 최솟값 추가")
df.loc[len(df)] = df.min(axis=0)
print(df)실행 결과
새 열에 최솟값 추가 one two three min_value 0 12 13 5 5 1 10 6 4 4 2 16 18 20 16 3 11 15 58 11 새 행에 최솟값 추가 one two three min_value 0 12 13 5 5 1 10 6 4 4 2 16 18 20 16 3 11 15 58 11 4 10 6 4 4
코드 설명
axis 매개변수가 핵심입니다. axis=1은 행 방향(가로)으로 연산하여 각 행마다 최솟값을 구하고, axis=0은 열 방향(세로)으로 연산하여 각 열마다 최솟값을 구합니다. 또한 df.loc[len(df)]는 현재 데이터프레임의 길이(마지막 인덱스 + 1) 위치에 새로운 행을 삽입하는 효율적인 방법입니다. 이 패턴은 통계 요약 행을 데이터프레임 하단에 추가할 때 자주 활용됩니다.