plydata.expressions.if_else¶
-
class
plydata.expressions.
if_else
(predicate, true_value, false_value)[source]¶ Vectorized if
- Parameters
Examples
>>> import pandas as pd >>> from plydata import define >>> from plydata.expressions import if_else >>> df = pd.DataFrame({'x': range(10)})
y takes on a value that depends on a predicate expression. The values can be scalar.
>>> df >> define(y=if_else('x%2==0', 2, -1)) x y 0 0 2 1 1 -1 2 2 2 3 3 -1 4 4 2 5 5 -1 6 6 2 7 7 -1 8 8 2 9 9 -1
If they are strings, they should be quoted.
>>> df >> define(y=if_else('x%2==0', '"even"', '"odd"')) x y 0 0 even 1 1 odd 2 2 even 3 3 odd 4 4 even 5 5 odd 6 6 even 7 7 odd 8 8 even 9 9 odd
If the values are treated as expressions.
>>> df >> define(y=if_else('x%2==0', 'x*2', 'x/2')) x y 0 0 0.0 1 1 0.5 2 2 4.0 3 3 1.5 4 4 8.0 5 5 2.5 6 6 12.0 7 7 3.5 8 8 16.0 9 9 4.5
Combining Predicates
When combining predicate statements, you can use the bitwise operators,
|
,&
,^
and~
. The different statements must be enclosed in parenthesis,()
.>>> df >> define(y=if_else( ... '(x < 5) & (x % 2 == 0)', ... '"less-than-5-and-even"', ... '"odd-or-greater-than-5"')) x y 0 0 less-than-5-and-even 1 1 odd-or-greater-than-5 2 2 less-than-5-and-even 3 3 odd-or-greater-than-5 4 4 less-than-5-and-even 5 5 odd-or-greater-than-5 6 6 odd-or-greater-than-5 7 7 odd-or-greater-than-5 8 8 odd-or-greater-than-5 9 9 odd-or-greater-than-5