Обратная маска в Pandas
Метод mask устроен наоборот
к where: где условие
истинно, ячейку заменяют на пропуск
или на заданное значение, а где
ложно - оставляют как было.
Размер таблицы снова не меняется,
это не отбор строк.
На той же таблице товаров проверим
цену выше 20 и применим
метод mask:
import pandas as pd
data = {
'item': ['Pen', 'Book', 'Cup', 'Bag'],
'price': [10, 25, 15, 40],
}
shop = pd.DataFrame(data)
check = shop['price'] > 20
changed = shop.mask(check)
print(changed) # выведет item price
# 0 Pen 10.0
# 1 NaN NaN
# 2 Cup 15.0
# 3 NaN NaN
При том же условии where
сохранил бы дорогие товары,
а mask наоборот стёр
их и оставил дешёвые строки
без изменений.
Соберите таблицу складов со столбцами
code и stock:
A1 с 120, B2
с 80, C3 с 200.
Получите таблицу того же размера,
где при запасе не меньше 100
в ячейках пропуск, и выведите её.
Создайте таблицу с часами сна
6, 8, 5
в столбце sleep и днями
в столбце day. Покажите
вариант, где при сне меньше
7 оба поля заменены на
-1.
Из таблицы рейсов с кодом и длительностью
в часах выведите таблицу, где
рейсы длиннее 3 часов
обнулены в обоих столбцах,
а короткие сохранены.