Замена по условию в Pandas
Если нужно не убрать строки, а
пометить лишние ячейки, подойдёт
метод where. Он проверяет
условие для каждой строки: где
оно истинно, значения остаются,
в остальных ячейках строки
появляется пропуск или заданная
замена. Число строк в таблице
не меняется.
Возьмём таблицу товаров и оставим
данные только там, где цена выше
20. В остальных строках
метод where поставит пропуск:
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.where(check)
print(changed) # выведет item price
# 0 NaN NaN
# 1 Book 25.0
# 2 NaN NaN
# 3 Bag 40.0
Вместо пропуска можно передать число для всех ячеек, где условие ложно. Тогда в тех же строках оба столбца станут нулями:
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.where(check, 0)
print(changed) # выведет item price
# 0 0 0
# 1 Book 25
# 2 0 0
# 3 Bag 40
Соберите таблицу команд со столбцами
team и points:
Red с 40, Blue
с 55, Green с 48.
Получите таблицу того же размера,
где видны только строки с очками
больше 50, а в остальных
ячейках пропуск.
Создайте таблицу с оценками
3, 5, 4
в столбце mark и именами
в столбце name. Выведите
вариант, где при оценке ниже
4 в обоих столбцах стоит
0.
Из таблицы с городами и температурой
оставьте числа только там, где
температура не ниже 15,
а в прочих ячейках поставьте
пропуск, и выведите результат.