Pandas Series: where() function
Series-where() function
The where() function is used to replace values where the condition is False.
Syntax:
Series.where(self, cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False)
Name | Description | Type/Default Value | Required / Optional |
---|---|---|---|
cond | Where cond is True, keep the original value. Where False, replace with corresponding value from other. If cond is callable, it is computed on the Series/DataFrame and should return boolean Series/DataFrame or array. The callable must not change input Series/DataFrame (though pandas doesn’t check it). | boolean Series/DataFrame, array-like, or callable | Required |
other | Entries where cond is False are replaced with corresponding value from other. If other is callable, it is computed on the Series/DataFrame and should return scalar or Series/DataFrame. The callable must not change input Series/DataFrame (though pandas doesn’t check it). | scalar, Series/DataFrame, or callable | Required |
inplace | Whether to perform the operation in place on the data. | bool Default Value: False |
Required |
axis | Alignment axis if needed. | int Default Value: None |
Required |
level | Alignment level if needed. | int Default Value: None |
Required |
errors | Note that currently this parameter won’t affect the results and will always coerce to a suitable dtype.
|
str, {‘raise’, ‘ignore’} Default Value: ‘raise’ |
Required |
try_cast | Try to cast the result back to the input type (if possible). | bool Default Value: False |
Required |
Returns: Same type as caller
Notes: The where method is an application of the if-then idiom. For each element in the calling DataFrame, if cond is True the element is used; otherwise the corresponding element from the DataFrame other is used.
Example:
Python-Pandas Code:
import numpy as np
import pandas as pd
s = pd.Series(range(6))
s.where(s > 0)
Output:
0 NaN 1 1.0 2 2.0 3 3.0 4 4.0 5 5.0 dtype: float64
Python-Pandas Code:
import numpy as np
import pandas as pd
s = pd.Series(range(6))
s.mask(s > 0)
Output:
0 0.0 1 NaN 2 NaN 3 NaN 4 NaN 5 NaN dtype: float64
Python-Pandas Code:
import numpy as np
import pandas as pd
s = pd.Series(range(6))
s.where(s > 2, 10)
Output:
0 10 1 10 2 10 3 3 4 4 5 5 dtype: int64
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['P', 'Q'])
df
Output:
P Q 0 0 1 1 2 3 2 4 5 3 6 7 4 8 9
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['P', 'Q'])
m = df % 3 == 0
df.where(m, -df)
Output:
P Q 0 0 -1 1 -2 3 2 -4 -5 3 6 -7 4 -8 9
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['P', 'Q'])
m = df % 3 == 0
df.where(m, -df) == np.where(m, df, -df)
Output:
P Q 0 True True 1 True True 2 True True 3 True True 4 True True
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['P', 'Q'])
m = df % 3 == 0
df.where(m, -df) == df.mask(~m, -df)
Output:
P Q 0 True True 1 True True 2 True True 3 True True 4 True True
Previous: Series-truncate() function
Next: Replace values in Pandas Series
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics