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
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/pandas/series/series-where.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics