docs: def transmute(*args, **kwargs):
    """ Similar to `select` but allows mutation in column definitions.
  
    In : (diamonds >>
            head(3) >>
            transmute(new_price=X.price * 2, x_plus_y=X.x + X.y))
    Out:
          new_price  x_plus_y
      0        652      7.93
      1        652      7.73
      2        654      8.12
    """
    mutate_dateframe_fn = mutate(*args, **dict(kwargs))
    column_names_args = [str(arg) for arg in args]
    column_names_kwargs = [name for name, _
                           in _dict_to_possibly_ordered_tuples(kwargs)]
    column_names = column_names_args + column_names_kwargs
    return lambda df: mutate_dateframe_fn(df)[column_names]