6.12. DataFrame Where
DataFrame.where(cond, sub)- Replace values where the condition is FalseDataFrame.mask(cond, sub)- Replace values where the condition is True
6.12.1. SetUp
>>> import pandas as pd
>>>
>>>
>>> df = pd.DataFrame([
... {'firstname': 'Alice', 'lastname': 'Apricot', 'age': 30},
... {'firstname': 'Bob', 'lastname': 'Blackthorn', 'age': 31},
... {'firstname': 'Carol', 'lastname': 'Corn', 'age': 32},
... {'firstname': 'Dave', 'lastname': 'Durian', 'age': 33},
... {'firstname': 'Eve', 'lastname': 'Elderberry', 'age': 34},
... {'firstname': 'Mallory', 'lastname': 'Melon', 'age': 15},
... ], index=['a', 'b', 'c', 'd', 'e', 'f'])
>>>
>>> df
firstname lastname age
a Alice Apricot 30
b Bob Blackthorn 31
c Carol Corn 32
d Dave Durian 33
e Eve Elderberry 34
f Mallory Melon 15
6.12.2. Mask
>>> df.mask((df['age']<18) | (df['age']>65))
firstname lastname age
a Alice Apricot 30.0
b Bob Blackthorn 31.0
c Carol Corn 32.0
d Dave Durian 33.0
e Eve Elderberry 34.0
f NaN NaN NaN
6.12.3. Where
>>> df.where(df['age']<18)
firstname lastname age
a NaN NaN NaN
b NaN NaN NaN
c NaN NaN NaN
d NaN NaN NaN
e NaN NaN NaN
f Mallory Melon 15.0
>>> df.mask(df['age']<18, 'n/a')
firstname lastname age
a Alice Apricot 30
b Bob Blackthorn 31
c Carol Corn 32
d Dave Durian 33
e Eve Elderberry 34
f n/a n/a n/a
>>> df.where(df['age']<18, 'n/a')
firstname lastname age
a n/a n/a n/a
b n/a n/a n/a
c n/a n/a n/a
d n/a n/a n/a
e n/a n/a n/a
f Mallory Melon 15
>>> df.where(df['age']<18).dropna()
firstname lastname age
f Mallory Melon 15.0
>>> df.where(df['age']<18)
firstname lastname age
a NaN NaN NaN
b NaN NaN NaN
c NaN NaN NaN
d NaN NaN NaN
e NaN NaN NaN
f Mallory Melon 15.0
>>> df.where((df['age']<18) | (df['age']>65))
firstname lastname age
a NaN NaN NaN
b NaN NaN NaN
c NaN NaN NaN
d NaN NaN NaN
e NaN NaN NaN
f Mallory Melon 15.0