Pandas DataFrame DataFrame.apply() 함수

Suraj Joshi 2023년1월30일
  1. pandas.DataFrame.apply()의 구문 :
  2. 예제 코드: DataFrame.apply()메서드
  3. 예제 코드: DataFrame.apply()를 사용하여 각 열에 함수 적용
  4. 예제 코드: DataFrame.apply()메서드를 사용하여 각 행에 함수 적용
  5. 예제 코드: result_type 매개 변수가있는DataFrame.apply()메서드
Pandas DataFrame DataFrame.apply() 함수

pandas.DataFrame.apply() 함수는 행을 따라 모든 요소에 입력 함수를 적용합니다. 또는 호출자 Pandas DataFrame의 열.

pandas.DataFrame.apply()의 구문 :

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)

매개 변수

func 각 행 또는 열에 적용 할 기능
axis row (axis = 0) 또는column (axis = 1)을 따라 함수 적용
raw 부울. Series 객체 (raw = False) 또는ndarray 객체 (raw = True)로 전달 된 행 / 열
result_type {'expand', 'reduce', 'broadcast', 'None'}
axis=1 (열)에만 적용 가능한 연산 출력 유형
버전 0.23.0의 새로운 기능
args 함수func의 위치 인수입니다.
**kwds 함수func의 키워드 인수입니다.

반환

지정된 축을 따라 입력 함수를 적용한 후DataFrame을 반환합니다.

예제 코드: DataFrame.apply()메서드

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: x**2)
print(modified_df)

출력:

   X  Y
0  1  4
1  2  1
2  3  8
   X   Y
0  1  16
1  4   1
2  9  64

DataFrame.apply()메서드를 사용하여DataFrame의 모든 요소에lambda 함수lambda x: x**2를 적용합니다.

lambda 함수는 Python에서 함수를 정의하는 더 간단한 방법입니다.

lambda x: x ** 2x를 입력으로 받고x ** 2를 출력으로 반환하는 함수를 나타냅니다.

예제 코드: DataFrame.apply()를 사용하여 각 열에 함수 적용

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum)
print("Modified DataFrame")
print(modified_df)

출력:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
X     6
Y    13
dtype: int64

여기서는axis=0 (기본값)이므로 각 열에np.sum이 적용됩니다.

따라서df.apply()메서드를 사용한 후 각 열의 요소 합계를 얻습니다.

import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2)  if x.name == 'X' else x)
print(modified_df)

출력:

   X  Y
0  1  4
1  2  1
2  3  8
   X  Y
0  1  4
1  4  1
2  9  8

특정 열에 만 함수를 적용하려면 if 문을 사용하여 함수 정의를 수정하여 열을 필터링합니다. 이 예에서 함수는 열 이름이 X인 열의 값만 수정합니다.

예제 코드: DataFrame.apply()메서드를 사용하여 각 행에 함수 적용

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum, axis=1)
print("Modified DataFrame")
print(modified_df)

출력:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
0     5
1     3
2    11
dtype: int64

여기서는 axis=1을 설정 했으므로 한 번에 각 행에 np.sum이 적용됩니다.

그래서 우리는df.apply()메소드를 사용한 후 모든 행의 개별 요소의 합계를 얻습니다.

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2)  if x.name in [0,1] else x,
                     axis=1)
print(modified_df)

출력:

   X  Y
0  1  4
1  2  1
2  3  8
   X   Y
0  1  16
1  4   1
2  3   8

특정 행에만 함수를 적용하려면 if 문을 사용하여 함수 정의를 수정하여 행을 필터링합니다. 이 예에서 함수는 색인이 01인 행, 즉 첫 번째 및 두 번째 행의 값만 수정합니다.

예제 코드: result_type 매개 변수가있는DataFrame.apply()메서드

result_type 매개 변수의 기본값, 즉None을 사용하면 수정없이DataFrame을 반환합니다.

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)

modified_df=df.apply(lambda x:[1,1],axis=1)
print("Modified DataFrame")
print(modified_df)

출력:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
0    [1, 1]
1    [1, 1]
2    [1, 1]
dtype: object

위의 예에서 각 행은 한 번에 함수에 전달되며 행의 값은 [1,1]로 설정됩니다.

함수가 DataFrame에서 작동 한 후 결과 유형을 수정하려면 필요에 따라 result_type값을 설정할 수 있습니다.

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)

modified_df=df.apply(lambda x:[1,1],
                     axis=1,
                     result_type='expand')
print("Modified DataFrame")
print(modified_df)

출력:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
   0  1
0  1  1
1  1  1
2  1  1

result_type = 'expand'를 설정하면 모든 목록과 유사한 값이 데이터 프레임의 열로 확장됩니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Pandas DataFrame