Module transformnd.adapters.pandas
Adapt pandas DataFrames for transformation.
Expand source code
"""Adapt pandas DataFrames for transformation."""
from typing import Hashable, List
import pandas as pd
from ..base import Transform
from .base import BaseAdapter
class DataFrameAdapter(BaseAdapter[pd.DataFrame]):
def __init__(self, columns: List[Hashable]):
"""Adapt transformation for coordinates stored in a pandas DataFrame.
Parameters
----------
columns : list of keys
Keys for columns containing coordinates, e.g. `["x", "y", "z"]`
"""
self.columns = columns
def apply(
self, transform: Transform, df: pd.DataFrame, in_place=False
) -> pd.DataFrame:
"""Transform the dataframe, optionally in-place.
Parameters
----------
transform : Transform
df : pd.DataFrame
in_place : bool, optional
Whether to mutate the dataframe in place,
by default False (i.e. make a copy of it).
Returns
-------
pandas.DataFrame
"""
coords = df[self.columns].to_numpy()
transformed = transform.apply(coords)
if not in_place:
df = df.copy()
df[self.columns] = transformed
return df
Classes
class DataFrameAdapter (columns: List[Hashable])-
Abstract base class for generic types.
A generic type is typically declared by inheriting from this class parameterized with one or more type variables. For example, a generic mapping type might be defined as::
class Mapping(Generic[KT, VT]): def getitem(self, key: KT) -> VT: … # Etc.
This class can then be used as follows::
def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT: try: return mapping[key] except KeyError: return default
Adapt transformation for coordinates stored in a pandas DataFrame.
Parameters
columns:listofkeys- Keys for columns containing coordinates, e.g.
["x", "y", "z"]
Expand source code
class DataFrameAdapter(BaseAdapter[pd.DataFrame]): def __init__(self, columns: List[Hashable]): """Adapt transformation for coordinates stored in a pandas DataFrame. Parameters ---------- columns : list of keys Keys for columns containing coordinates, e.g. `["x", "y", "z"]` """ self.columns = columns def apply( self, transform: Transform, df: pd.DataFrame, in_place=False ) -> pd.DataFrame: """Transform the dataframe, optionally in-place. Parameters ---------- transform : Transform df : pd.DataFrame in_place : bool, optional Whether to mutate the dataframe in place, by default False (i.e. make a copy of it). Returns ------- pandas.DataFrame """ coords = df[self.columns].to_numpy() transformed = transform.apply(coords) if not in_place: df = df.copy() df[self.columns] = transformed return dfAncestors
- BaseAdapter
- typing.Generic
- abc.ABC
Methods
def apply(self, transform: Transform, df: pandas.core.frame.DataFrame, in_place=False) ‑> pandas.core.frame.DataFrame-
Transform the dataframe, optionally in-place.
Parameters
transform:Transformdf:pd.DataFramein_place:bool, optional- Whether to mutate the dataframe in place, by default False (i.e. make a copy of it).
Returns
pandas.DataFrame
Expand source code
def apply( self, transform: Transform, df: pd.DataFrame, in_place=False ) -> pd.DataFrame: """Transform the dataframe, optionally in-place. Parameters ---------- transform : Transform df : pd.DataFrame in_place : bool, optional Whether to mutate the dataframe in place, by default False (i.e. make a copy of it). Returns ------- pandas.DataFrame """ coords = df[self.columns].to_numpy() transformed = transform.apply(coords) if not in_place: df = df.copy() df[self.columns] = transformed return df
Inherited members