Pandas: como usar o ffill com base na condição
Você pode usar a seguinte sintaxe básica para usar a função ffill() no pandas para passar valores de preenchimento com base em uma condição em outra coluna:
df[' sales '] = df. groupby (' store ')[' sales ']. ffill ()
Este exemplo específico passará valores de preenchimento na coluna de vendas somente se o valor anterior na coluna da loja for igual ao valor atual na coluna da loja .
O exemplo a seguir mostra como usar essa sintaxe na prática.
Exemplo: Use ffill com base na condição no Pandas
Suponha que temos o seguinte DataFrame do pandas que contém informações sobre as vendas totais realizadas por duas lojas de varejo diferentes em quatro trimestres comerciais:
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' store ': ['A', 'A', 'B', 'A', 'B', 'A', 'B', 'B'], ' quarter ': [1, 2, 1, 3, 2, 4, 3, 4], ' sales ': [12, 22, 30, np.nan, 24, np.nan, np.nan, np.nan]}) #view DataFrame print (df) store quarter sales 0 A 1 12.0 1 to 2 22.0 2 B 1 30.0 3 to 3 NaN 4 B 2 24.0 5 A 4 NaN 6 B 3 NaN 7 B 4 NaN
Observe que existem vários valores NaN na coluna Vendas .
Digamos que queremos preencher esses valores NaN usando o valor anterior da coluna Vendas , mas queremos ter certeza de que os valores correspondem à loja correta.
Podemos usar a seguinte sintaxe para fazer isso:
#group by store and forward fill values in sales column df[' sales '] = df. groupby (' store ')[' sales ']. ffill () #view updated DataFrame print (df) store quarter sales 0 A 1 12.0 1 to 2 22.0 2 B 1 30.0 3 A 3 22.0 4 B 2 24.0 5 A 4 22.0 6 B 3 24.0 7 B 4 24.0
Observe que os valores NaN na coluna Vendas foram substituídos pelo valor Vendas anterior e os valores correspondem à loja correta.
Por exemplo:
- O valor NaN na posição 3 do índice da linha foi substituído pelo valor 22 , que era o valor mais recente na coluna de vendas correspondente à loja A.
- O valor NaN na posição 6 do índice da linha foi substituído pelo valor 24 , que era o valor mais recente na coluna de vendas correspondente à loja B.
E assim por diante.
Nota : Você pode encontrar a documentação completa da função pandas ffill() aqui .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:
Como contar valores ausentes em pandas
Como deletar linhas com valores NaN no Pandas
Como deletar linhas contendo um valor específico no Pandas