Pandas DataFrame의 여러 열에 함수 적용

이 기사에서는 Pandas DataFrame의 여러 열에 함수를 적용하는 방법을 소개합니다. 모든 예제 코드에서 아래와 같이 동일한 DataFrame을 사용합니다.

import pandas as pd
import numpy as np

df = pd.DataFrame([
                    [5,6,7,8],
                    [1,9,12,14],
                    [4,8,10,6]
                    ],
                  columns = ['a','b','c','d'])

출력:

   a  b   c   d
0  5  6   7   8
1  1  9  12  14
2  4  8  10   6

apply()를 사용하여 Pandas의 열에 함수 적용

apply()메소드를 사용하면 열이나 행에 걸쳐 전체 DataFrame에 대한 함수를 적용 할 수 있습니다. axis매개 변수를 행의 경우 0, 열의 경우 1로 설정합니다.

아래에 표시된 예에서는 앞서 정의한 함수를 사용하여 샘플 DataFrame의 값을 증가시킵니다.

import pandas as pd
import numpy as np

df = pd.DataFrame([
                    [5,6,7,8],
                    [1,9,12,14],
                    [4,8,10,6]
                    ],
                  columns = ['a','b','c','d'])

def x(a):
    return a + 1 

df_new  = df.apply(x, axis = 1)

print("The original dataframe:")
print(df)
print("The new dataframe:")
print(df_new)

출력:

The original dataframe:
   a  b   c   d
0  5  6   7   8
1  1  9  12  14
2  4  8  10   6
The new dataframe:
   a   b   c   d
0  6   7   8   9
1  2  10  13  15
2  5   9  11   7

다음과 같이 여러 열에 함수를 적용 할 수도 있습니다.

import pandas as pd
import numpy as np

df = pd.DataFrame([
                    [5,6,7,8],
                    [1,9,12,14],
                    [4,8,10,6]
                    ],
                  columns = ['a','b','c','d'])

print("The original dataframe:")
print(df)

def func(x):
    return x[0] + x[1]

df['e']  = df.apply(func, axis = 1)

print("The new dataframe:")
print(df)

출력:

The original dataframe:
   a  b   c   d
0  5  6   7   8
1  1  9  12  14
2  4  8  10   6
The new dataframe:
   a  b   c   d   e
0  5  6   7   8  11
1  1  9  12  14  10
2  4  8  10   6  12

새로 추가 된 e열은 ab열의 데이터 합계입니다. DataFrame 자체는 함수에 전달되는 숨겨진 인수입니다. 위의 예와 같이 인덱스를 사용하거나 아래와 같이 열 이름을 사용하여 열에 액세스 할 수 있습니다.

import pandas as pd
import numpy as np

df = pd.DataFrame([
                    [5,6,7,8],
                    [1,9,12,14],
                    [4,8,10,6]
                    ],
                  columns = ['a','b','c','d'])

print("The original dataframe:")
print(df)

df['e']  = df.apply(lambda x: x.a+x.b, axis = 1)

print("The new dataframe:")
print(df)

위의 예와 동일한 동작을 수행합니다. 여기서는lambda 함수를 사용합니다. x.ax.b는 데이터 프레임의ab 열을 나타냅니다.

관련 문장 - Pandas DataFrame

  • 인덱스를 사용하여 Pandas DataFrame에서 특정 셀의 값을 설정하는 방법
  • Pandas DataFrame에서 열 값을 기준으로 행을 삭제하는 방법