Метод where
Метод where применяется к Series
и возвращает объект того же размера, где значения,
не соответствующие переданному условию, заменяются
на указанное значение. По умолчанию заменой служит
NaN. Первым параметром передаётся условие
в виде логической маски или вызываемой функции.
Вторым параметром other можно задать значение
для замены. Метод полезен для фильтрации данных
с сохранением размерности.
Синтаксис
ser.where(cond, other=nan, inplace=False, axis=None, level=None)
Пример
Давайте заменим значения меньше 3 на NaN:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.where(ser >= 3)
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 3.0
3 4.0
4 5.0
dtype: float64
Пример
Теперь заменим значения, не удовлетворяющие условию,
на конкретное число 0:
import pandas as pd
ser = pd.Series([10, 20, 30, 40, 50])
res = ser.where(ser < 30, other=0)
print(res)
Результат выполнения кода:
0 10
1 20
2 0
3 0
4 0
dtype: int64
Пример
В качестве условия можно использовать вызываемую функцию. Оставим только чётные значения:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5, 6])
res = ser.where(lambda x: x % 2 == 0, other=-1)
print(res)
Результат выполнения кода:
0 -1
1 2
2 -1
3 4
4 -1
5 6
dtype: int64
Пример
Используем метод where совместно
с методом isin для фильтрации по списку:
import pandas as pd
ser = pd.Series(['a', 'b', 'c', 'd', 'e'])
res = ser.where(ser.isin(['b', 'd']), other='x')
print(res)
Результат выполнения кода:
0 x
1 b
2 x
3 d
4 x
dtype: object