Pandas DataFrame DataFrame.apply() Função

Suraj Joshi 30 janeiro 2023
  1. A sintaxe de pandas.DataFrame.apply():
  2. Códigos de exemplo: DataFrame.apply() Método
  3. Códigos de exemplo: Aplicar função a cada coluna com DataFrame.apply()
  4. Códigos de exemplo: Aplicar função a cada linha com DataFrame.apply() Método
  5. Códigos de exemplo: DataFrame.apply() Método com parâmetro result_type
Pandas DataFrame DataFrame.apply() Função

pandas.DataFrame.apply() função aplica a função de entrada a todos os elementos ao longo da linha ou coluna do chamador Pandas DataFrame.

A sintaxe de pandas.DataFrame.apply():

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

Parâmetros

func A função a ser aplicada a cada linha ou coluna
axis aplicar função ao longo da linha (axis=0) ou coluna (axis=1)
raw Booleano. Linha/Coluna passada como um objeto Series(raw=False) ou objeto ndarray(raw=True)
result_type {expand, reduce, broadcast, None}
tipo da saída de operação aplicável somente para axis=1 (colunas)
Novo na versão 0.23.0
args Argumentos posicionais para a função func.
**kwds Argumentos por palavra-chave para a função func.

Retornar

Ele retorna o DataFrame após aplicar a função de entrada ao longo do eixo especificado.

Códigos de exemplo: DataFrame.apply() Método

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)

Resultado:

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

Aplicamos uma função lambda lambda x: x**2 a todos os elementos do DataFrame utilizando o método DataFrame.apply().

As funções Lambda são formas mais simples de definir funções em Python.

O lambda x: x**2 representa a função que toma x como entrada e retorna x**2 como saída.

Códigos de exemplo: Aplicar função a cada coluna com 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)

Resultado:

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

Aqui, np.sum é aplicado a cada coluna porque axis=0 (valor padrão), neste caso.

Portanto, obtemos a soma de elementos em cada coluna após utilizar o método 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)

Resultado:

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

Se desejarmos aplicar a função somente a determinadas colunas, modificamos nossa definição de função utilizando a instrução if para filtrar colunas. No exemplo, a função modifica o valor apenas das colunas com o nome da coluna X.

Códigos de exemplo: Aplicar função a cada linha com DataFrame.apply() Método

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)

Resultado:

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

Aqui, np.sum é aplicado a cada fila de cada vez, uma vez que definimos axis=1 neste caso.

Assim, obtemos a soma de elementos individuais de todas as linhas após utilizar o método 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)

Resultado:

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

Se desejarmos aplicar a função somente a certas linhas, modificamos nossa definição de função utilizando a instrução if para filtrar linhas. No exemplo, a função modifica os valores apenas das linhas com índice 0 e 1, ou seja, apenas a primeira e segunda linhas.

Códigos de exemplo: DataFrame.apply() Método com parâmetro result_type

Se utilizarmos o valor padrão do parâmetro result_type, ou seja, None, ele retornará o DataFrame sem nenhuma modificação.

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)

Resultado:

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

No exemplo acima, cada linha é passada em função de cada vez, e o valor da linha é definido como [1,1].

Se desejarmos modificar o tipo de resultado após a função operar em DataFrame, podemos definir valores para result_type de acordo com nossas necessidades.

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)

Resultado:

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

A definição de result_type='expand' expandirá todos os valores semelhantes a listas para colunas de um Dataframe.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Pandas DataFrame