Aplicar uma função a múltiplas colunas em Pandas DataFrame

Este artigo irá introduzir como aplicar uma função a múltiplas colunas em Pandas DataFrame. Utilizaremos o mesmo DataFrame que abaixo em todos os códigos de exemplo.

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'])

Resultado:

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

Utilize apply() para aplicar funções às colunas em Pandas

O método apply() permite aplicar uma função para todo um DataFrame, seja através de colunas ou linhas. Definimos o parâmetro eixo como 0 para linhas e 1 para colunas.

Nos exemplos mostrados abaixo, vamos aumentar o valor de uma amostra DataFrame utilizando a função que definimos anteriormente:

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)

Resultado:

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

Podemos também aplicar uma função a múltiplas colunas, como se mostra abaixo:

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)

Resultado:

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

A nova coluna anexada e é a soma dos dados nas colunas a e b. O DataFrame em si é o argumento oculto passado para a função. As colunas podem ser acedidas com o índice, como no exemplo acima, ou com o nome da coluna, como se mostra abaixo.

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)

Executa a mesma operação que no exemplo acima. Utilizamos aqui uma função lambda. As funções x.a e x.b referem-se à coluna a e b no campo de dados.

Artigo relacionado - Pandas DataFrame

  • Como adicionar o Header Row a um DataFrame Pandas
  • Como converter o Python Dictionary em Pandas DataFrame