Метод mask
Метод mask применяется к DataFrame
и заменяет значения на переданные, если они
удовлетворяют условию. Первым параметром
передаётся условие, вторым - значение для замены.
По умолчанию заменяет на NaN.
Синтаксис
df.mask(cond, other=nan, inplace=False, axis=None, level=None, errors='raise')
Пример
Давайте заменим все значения в столбце a,
которые больше 2, на 0:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.mask(df['a'] > 2, 0)
print(res)
Результат выполнения кода:
a b
0 1 10
1 2 20
2 0 30
3 0 40
4 0 50
Пример
А теперь заменим значения во всей таблице,
которые меньше 25, на -1:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.mask(df < 25, -1)
print(res)
Результат выполнения кода:
a b
0 -1 -1
1 -1 -1
2 -1 30
3 -1 40
4 -1 50
Пример
Заменим значения в столбце b,
которые равны 30, на 99,
используя параметр other:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.mask(df['b'] == 30, 99)
print(res)
Результат выполнения кода:
a b
0 1 10
1 2 20
2 3 99
3 4 40
4 5 50
Пример
Метод mask также работает с
несколькими условиями с использованием
логических операторов:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
cond = (df['a'] > 2) & (df['b'] < 50)
res = df.mask(cond, 100)
print(res)
Результат выполнения кода:
a b
0 1 10
1 2 20
2 3 100
3 4 100
4 5 50