plydata.helper_verbs.rename_if

class plydata.helper_verbs.rename_if(*args, **kwargs)[source]

Rename all columns that match a predicate

Parameters
datadataframe, optional

Useful when not using the >> operator.

predicatefunction

A predicate function to be applied to the columns of the dataframe. Good candidates for predicate functions are those that check the type of the column. Such function are avaible at pandas.api.dtypes, for example pandas.api.types.is_numeric_dtype().

For convenience, you can reference the is_*_dtype functions with shorter strings:

'is_bool'             # pandas.api.types.is_bool_dtype
'is_categorical'      # pandas.api.types.is_categorical_dtype
'is_complex'          # pandas.api.types.is_complex_dtype
'is_datetime64_any'   # pandas.api.types.is_datetime64_any_dtype
'is_datetime64'       # pandas.api.types.is_datetime64_dtype
'is_datetime64_ns'    # pandas.api.types.is_datetime64_ns_dtype
'is_datetime64tz'     # pandas.api.types.is_datetime64tz_dtype
'is_float'            # pandas.api.types.is_float_dtype
'is_int64'            # pandas.api.types.is_int64_dtype
'is_integer'          # pandas.api.types.is_integer_dtype
'is_interval'         # pandas.api.types.is_interval_dtype
'is_numeric'          # pandas.api.types.is_numeric_dtype
'is_object'           # pandas.api.types.is_object_dtype
'is_period'           # pandas.api.types.is_period_dtype
'is_signed_integer'   # pandas.api.types.is_signed_integer_dtype
'is_string'           # pandas.api.types.is_string_dtype
'is_timedelta64'      # pandas.api.types.is_timedelta64_dtype
'is_timedelta64_ns'   # pandas.api.types.is_timedelta64_ns_dtype
'is_unsigned_integer' # pandas.api.types.is_unsigned_integer_dtype

No other string values are allowed.

functionscallable()

Useful when not using the >> operator.

argstuple

Arguments to the functions. The arguments are pass to all functions.

kwargsdict

Keyword arguments to the functions. The keyword arguments are passed to all functions.

Examples

>>> import pandas as pd
>>> import numpy as np
>>> from plydata import *
>>> df = pd.DataFrame({
...     'alpha': list('aaabbb'),
...     'beta': list('babruq'),
...     'theta': list('cdecde'),
...     'x': [1, 2, 3, 4, 5, 6],
...     'y': [6, 5, 4, 3, 2, 1],
...     'z': [7, 9, 11, 8, 10, 12]
... })
>>> def is_sorted(col):
...     a = col.values
...     return all(a[:-1] <= a[1:])

Rename all sorted columns to uppercase.

>>> df >> rename_if(is_sorted, str.upper)
  ALPHA beta theta  X  y   z
0     a    b     c  1  6   7
1     a    a     d  2  5   9
2     a    b     e  3  4  11
3     b    r     c  4  3   8
4     b    u     d  5  2  10
5     b    q     e  6  1  12

Group columns are not renamed.

>>> df >> group_by('alpha') >> rename_if(is_sorted, str.upper)
groups: ['alpha']
  alpha beta theta  X  y   z
0     a    b     c  1  6   7
1     a    a     d  2  5   9
2     a    b     e  3  4  11
3     b    r     c  4  3   8
4     b    u     d  5  2  10
5     b    q     e  6  1  12