def table(ax, data: FrameOrSeriesUnion, rowLabels=None, colLabels=None, **kwargs) -> Table: if isinstance(data, ABCSeries): data = data.to_frame() elif isinstance(data, ABCDataFrame): pass else: raise ValueError("Input data must be DataFrame or Series") if rowLabels is None: rowLabels = data.index if colLabels is None: colLabels = data.columns cellText = data.values table = matplotlib.table.table(ax, cellText=cellText, rowLabels=rowLabels, colLabels=colLabels, **kwargs) return table
def reindex_weights_to_indices( weights: FrameOrSeriesUnion, indices: pd.DataFrame, axis: Axis = 0, ) -> pd.DataFrame: """Reshapes and reindexes weights to indices, if they do not already have the same shape and share the same index frequency. """ axis = _handle_axis(axis) # Convert to a DataFrame is weight is a Series, transpose if needed if isinstance(weights, pd.Series): weights = weights.to_frame() if axis == 0: weights = weights.T if not weights.axes[axis].equals(indices.axes[axis]): return reindex_and_fill(weights, indices, 'ffill', axis) else: return weights
def __init__( self, data: FrameOrSeriesUnion, uuid: str | None = None, uuid_len: int = 5, table_styles: CSSStyles | None = None, table_attributes: str | None = None, caption: str | None = None, cell_ids: bool = True, ): # validate ordered args if isinstance(data, Series): data = data.to_frame() if not isinstance(data, DataFrame): raise TypeError("``data`` must be a Series or DataFrame") if not data.index.is_unique or not data.columns.is_unique: raise ValueError("style is not supported for non-unique indices.") self.data: DataFrame = data self.index: Index = data.index self.columns: Index = data.columns if not isinstance(uuid_len, int) or not uuid_len >= 0: raise TypeError( "``uuid_len`` must be an integer in range [0, 32].") self.uuid_len = min(32, uuid_len) self.uuid = (uuid or uuid4().hex[:self.uuid_len]) + "_" self.table_styles = table_styles self.table_attributes = table_attributes self.caption = caption self.cell_ids = cell_ids # add rendering variables self.hidden_index: bool = False self.hidden_columns: Sequence[int] = [] self.ctx: DefaultDict[tuple[int, int], CSSList] = defaultdict(list) self.cell_context: DefaultDict[tuple[int, int], str] = defaultdict(str) self._todo: list[tuple[Callable, tuple, dict]] = [] self.tooltips: Tooltips | None = None def_precision = get_option("display.precision") self._display_funcs: DefaultDict[ # maps (row, col) -> formatting function tuple[int, int], Callable[[Any], str]] = defaultdict( lambda: partial(_default_formatter, precision=def_precision))