Source code for timeflux.nodes.axis

"""timeflux.nodes.axis: helpers to manipulate axis"""

from timeflux.core.node import Node


[docs]class Rename(Node): """Alter axes labels. Attributes: i (Port): Default data input, expects DataFrame. o (Port): Default output, provides DataFrame and meta. Args: kwargs: see arguments from [pandas.DataFrame.rename method](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rename.html) """ def __init__(self, **kwargs): self._kwargs = kwargs
[docs] def update(self): if self.i.ready(): self.o.data = self.i.data.rename(**self._kwargs) self.o.meta = self.i.meta
[docs]class RenameColumns(Node): """Rename column labels from a list Attributes: i (Port): Default data input, expects DataFrame. o (Port): Default output, provides DataFrame and meta. Args: names (list): New column names. """ def __init__(self, names): if not isinstance(names, list): raise ValueError("names should be a list") self.names = names
[docs] def update(self): if not self.i.ready(): return data = self.i.data if data.shape[1] != len(self.names): self.logger.warning( "Received unexpected shape! Expected %d, received %d columns", len(self.names), data.shape[1], ) return data.columns = self.names self.o.set(data, data.index, meta=self.i.meta)
[docs]class AddSuffix(Node): """Suffix labels with string suffix. Attributes: i (Port): Default data input, expects DataFrame. o (Port): Default output, provides DataFrame and meta. Args: suffix (string): The string to add after each column label. """ def __init__(self, suffix): if not isinstance(suffix, str): raise ValueError("suffix should be a string") self._suffix = suffix
[docs] def update(self): if not self.i.ready(): return self.o.meta = self.i.meta self.o.data = self.i.data.add_suffix(self._suffix)