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