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

Manav Narula 22 junho 2021
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 axis 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.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artigo relacionado - Pandas DataFrame