plydata.expressions.if_else

class plydata.expressions.if_else(predicate, true_value, false_value)[source]

Vectorized if

Parameters
predicatebool, str, function

Predicate

true_valueobject

Value when predicate is True.

false_valueobject

Value when predicate is False.

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