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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *