Aplicar uma Função a uma Coluna em Pandas Dataframe
-
Pandas
apply()
etransform()
Métodos -
Utilize
apply()
para aplicar uma função à coluna DataFrame Pandas -
Utilize
transform()
para aplicar uma função à coluna Pandas DataFrame
Em Pandas, colunas e dataframes podem ser transformados e manipulados utilizando métodos tais como apply()
e transform()
. As transformações desejadas são transmitidas como argumentos para os métodos como funções. Cada método tem as suas diferenças subtis e utilidade. Este artigo introduzirá como aplicar uma função a uma coluna ou a todo um quadro de dados.
Pandas apply()
e transform()
Métodos
Tanto os métodos apply()
como transform()
funcionam em colunas individuais e em todo o quadro de dados. O método apply()
aplica a função ao longo de um eixo especificado. Passa as colunas como um dataframe para a função personalizada, enquanto que um método transform()
passa as colunas individuais como pandas Series
para a função personalizada.
A saída do método apply()
é recebida sob a forma de um dataframe ou Series
dependendo da entrada, enquanto que como uma sequência para o método transform()
. Tanto a sintaxe dos métodos apply()
como transform()
assemelham-se aos mesmos:
Dataframe.apply(customFunction, axis=0)
Dataframe.transform(customFunction, axis=0)
Os argumentos correspondem a
customFunction
: a função a ser aplicada ao dataframe ou à série.axis
: 0 refere-se a'rows'
, e 1 refere-se a'columns'
; a função deve ser aplicada em filas ou colunas.
Utilize apply()
para aplicar uma função à coluna DataFrame Pandas
Agora dominamos o básico, vamos deitar as mãos aos códigos e compreender como utilizar o método apply()
para aplicar uma função a uma coluna de dados.
Utilizaremos o exemplo de quadro de dados como abaixo.
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
O código de exemplo para aplicar uma função a toda a DataFrame é mostrado abaixo.
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df = df.apply(add_2)
print(df)
Resultado:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 4 5
1 6 7 8
2 9 10 11
Como se viu acima, a função pode ser aplicada a todo o DataFrame.
Aplicar uma função a uma única coluna
Vamos ver o que acontece quando a função é aplicada ao longo de uma única coluna.
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df["A"] = df["A"].apply(add_2)
print(df)
# or #
df["A"].transform(add_2)
print(df)
Resultado:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 2 3
1 6 5 6
2 9 8 9
Outro exemplo de aplicação de uma função a uma única coluna
import numpy as np
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{"A": [20, 30, 15, 25, 20], "B": [4, 5, 6, 4, 6], "C": [12, 15, 13, 12, 14]}
)
print("Initial DataFrame:")
print(data)
print("")
updated_df = data.apply(lambda x: x - 5 if x.name == "A" else x)
print("Updated DataFrame:")
print(updated_df)
Resultado:
Initial DataFrame:
A B C
0 20 4 12
1 30 5 15
2 15 6 13
3 25 4 12
4 20 6 14
Updated DataFrame:
A B C
0 15 4 12
1 25 5 15
2 10 6 13
3 20 4 12
4 15 6 14
Aqui, aplicamos a função lambda
definida para cada coluna no DataFrame. A função subtrai o valor de cada coluna por 5
apenas se o nome da coluna for A
.
import numpy as np
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{"A": [20, 30, 15, 25, 20], "B": [4, 5, 6, 4, 6], "C": [12, 15, 13, 12, 14]}
)
print("Initial DataFrame:")
print(data)
print("")
data["A"] = data["A"].apply(lambda x: x - 5)
print("Updated DataFrame:")
print(data)
Resultado:
Initial DataFrame:
A B C
0 20 4 12
1 30 5 15
2 15 6 13
3 25 4 12
4 20 6 14
Updated DataFrame:
A B C
0 15 4 12
1 25 5 15
2 10 6 13
3 20 4 12
4 15 6 14
Aplica a função lambda
apenas à coluna A
do DataFrame, e finalmente atribuímos os valores devolvidos à coluna A
do DataFrame existente.
Utilize transform()
para aplicar uma função à coluna Pandas DataFrame
Vejamos como utilizar o método transform()
para aplicar uma função a uma coluna de dados. Utilizaremos o mesmo exemplo de dataframe que o anterior.
O código de exemplo para aplicar uma função a todo o DataFrame é mostrado abaixo.
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df = df.transform(add_2)
print(df)
Resultado:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 4 5
1 6 7 8
2 9 10 11
Como visto acima, a função pode ser aplicada a todo o dataframe.
Aplicar uma função a uma única coluna
Vamos ver o que acontece quando a função é aplicada ao longo de uma única coluna.
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df["A"] = df["A"].transform(add_2)
print(df)
Resultado:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 2 3
1 6 5 6
2 9 8 9
Artigo relacionado - Pandas DataFrame
- Como obter os cabeçalhos da coluna Pandas DataFrame como uma lista
- Como eliminar a coluna Pandas DataFrame
- Como Converter a Coluna DataFrame para DataTempo em Pandas
- Como Converter um Flutuador em um Inteiro em Pandas DataFrame
- Como Classificar Pandas DataFrame pelos Valores de uma Coluna
- Como Obter o Agregado de Pandas Group-By e Sum