Pandas: как использовать ffill в зависимости от условия


Вы можете использовать следующий базовый синтаксис, чтобы использовать функцию ffill() в pandas для передачи значений заполнения на основе условия в другом столбце:

 df[' sales '] = df. groupby (' store ')[' sales ']. ffill ()

В этом конкретном примере значения заполнения в столбце продаж будут передаваться только в том случае, если предыдущее значение в столбце магазина равно текущему значению в столбце магазина .

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: используйте ffill на основе условия в Pandas

Предположим, у нас есть следующий DataFrame pandas, который содержит информацию об общем объеме продаж, осуществленных двумя разными розничными магазинами за четыре деловых квартала:

 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

Обратите внимание, что в столбце «Продажи» имеется несколько значений NaN.

Допустим, мы хотим заполнить эти значения NaN, используя предыдущее значение в столбце «Продажи» , но хотим убедиться, что значения соответствуют правильному магазину.

Для этого мы можем использовать следующий синтаксис:

 #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

Обратите внимание, что значения NaN в столбце «Продажи» заменены предыдущим значением «Продажи», и значения соответствуют правильному магазину.

Например:

  • Значение NaN в позиции 3 индекса строки было заменено значением 22 , которое было самым последним значением в столбце продаж, соответствующем магазину A.
  • Значение NaN в позиции 6 индекса строки было заменено значением 24 , которое было самым последним значением в столбце продаж, соответствующем магазину B.

И так далее.

Примечание . Полную документацию по функции pandas ffill() можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Как посчитать пропущенные значения в пандах
Как удалить строки со значениями NaN в Pandas
Как удалить строки, содержащие определенное значение в Pandas

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *