Pandas: як використовувати ffill залежно від стану


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

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

Цей конкретний приклад передасть значення заповнення в стовпці продажів , лише якщо попереднє значення в стовпці магазину дорівнює поточному значенню в стовпці магазину .

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: використовуйте заповнення на основі умови в Pandas

Припустімо, що у нас є такий фрейм даних 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, використовуючи попереднє значення в стовпці Sales , але хочемо переконатися, що значення відповідають правильному магазину.

Для цього ми можемо використати такий синтаксис:

 #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 у стовпці Sales було замінено попереднім значенням Sales, а значення відповідають правильному магазину.

Наприклад:

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

І так далі.

Примітка . Повну документацію щодо функції pandas fill() можна знайти тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в pandas:

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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *