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