Skip to content

v0.28.9 - DataFrame Submodule Reorganization (2026-03-22)

What Changed?

This release completes the internal reorganization of the DataFrame submodule directory structure, modeled after pandas/polars conventions. All major method implementations have been moved from core/dataframe.ts into their respective submodules. The public API is fully backward compatible.


What's New

Main Feature: DataFrame Submodule Delegation

What it does: Method implementations previously living in the large core/dataframe.ts file are now fully delegated to specialized submodules. Each submodule owns the logic for its domain:

Submodule Methods
analysis/statistics.ts describe, transform, fillna, pivot, melt
analysis/operations.ts join, concat, concatVertical, concatHorizontal
transformation/manipulation.ts sort

How to use it: No changes needed. All public methods on DataFrame work exactly as before.

Code example:

TypeScript
// All of these delegate to the appropriate submodule internally
const stats = df.describe();
const sorted = df.sort("age");
const joined = df1.join(df2, { on: "id" });
const filled = df.fillna(0);
const pivoted = df.pivot({ index: "date", columns: "metric", values: "value" });

Added

  • analysis/groupby.tsGroupedDataFrame and DataFrameGrouping (moved from group/)
  • analysis/operations.tsjoin, concat, concatVertical, concatHorizontal implementations
  • display/display.tsDataFrameDisplay (moved from output/display.ts)
  • io/readers.tsDataFrameInitializationHelpers (moved from initialization/helpers.ts)
  • io/writers.tsDataFrameOutputConversion (moved from output/conversion.ts)
  • reshape/reshape.tsDataFrameStructuralTransformations (moved from transformation/structure.ts)
  • torch/expression/Expression submodule directory (moved from torch/expression.ts)

Changed

  • core/dataframe.ts — all delegated methods reduced to 1-line delegate calls
  • transformation/columns.ts — renamed from transformation/basic.ts
  • transformation/rows.tsDataFrameSlicing moved from output/slicing.ts
  • analysis/statistics.tsdescribe, transform, fillna, pivot, melt now fully implemented here
  • _syncSubmodules() — new private method consolidating all updateReferences calls
  • Docstrings updated: removed false @throws Method not yet implemented, added missing @example tags, converted old JSDoc style to TypeDoc style

Fixed

  • join and concat docstrings incorrectly documented @throws Method not yet implemented
  • fillna TypeDoc @param name mismatch (options vs _options)
  • Non-null assertions (!) in describe() replaced with null-safe checks

Is It Safe to Upgrade?

  • Breaking Changes: No
  • Backward Compatible: Yes

All public methods on DataFrame retain the same signatures and behavior. Internal submodule class names and file paths changed, but these are not part of the public API.


Release Details

  • Date: 2026-03-22
  • Version: v0.28.9
  • gaslamp: -
  • pilotlamp: -
  • Files Changed: 30+
  • Commits:
  • 163204c refactor(torch/dataframe): consolidate updateReferences calls into _syncSubmodules()
  • edc2e70 refactor(torch): move Expression to expression/ submodule
  • b4aac9e refactor(torch/dataframe): move readers/writers to io/ submodule
  • a601212 refactor(torch/dataframe): move DataFrameSlicing from output/ to transformation/rows.ts
  • 435eb0a refactor(torch/dataframe): move DataFrameDisplay to display/ and remove empty output/
  • a746d09 refactor(torch/dataframe): rename transformation/basic.ts to transformation/columns.ts
  • 4fae6f1 refactor(torch/dataframe): move GroupedDataFrame from group/ to analysis/groupby.ts
  • a9691f7 refactor(torch/dataframe): move DataFrameStructuralTransformations to reshape/
  • 856b652 refactor(dataframe): move describe() implementation to DataFrameStatistics
  • eaa65aa refactor(dataframe): move sort() implementation to DataFrameManipulation
  • 1681df1 refactor(dataframe): move join/concat implementations to DataFrameOperations
  • dd11f97 refactor(dataframe): move transform/fillna/pivot/melt to DataFrameStatistics
  • 4a2cd65 docs(dataframe): update docstrings for delegated methods
  • 6b5246b docs(api): regenerate TypeDoc API docs and fix fillna @param name mismatch

Known Issues

  • transpose() is still not implemented (throws not yet implemented)
  • combine/ directory for advanced join operations is deferred to a future release

Next Steps

  • Implement transpose() in reshape/
  • Consider DataFrameState shared object pattern to eliminate updateReferences entirely
  • Add combine/ submodule for advanced join/merge operations