Pandas DataFrame DataFrame.apply() Função
-
A sintaxe de
pandas.DataFrame.apply()
: -
Códigos de exemplo:
DataFrame.apply()
Método -
Códigos de exemplo: Aplicar função a cada coluna com
DataFrame.apply()
-
Códigos de exemplo: Aplicar função a cada linha com
DataFrame.apply()
Método -
Códigos de exemplo:
DataFrame.apply()
Método com parâmetroresult_type
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 is a backend software engineer at Matrice.ai.
LinkedIn