toSeries method

Series toSeries()

Converts this DartData to a Series.

Conversion rules:

  • 1D NDArray → Series directly
  • 2D NDArray → Extract first column as Series
  • 3D NDArray → Flatten and convert to Series
  • Series → Returns self
  • DataFrame → Extract first column as Series
  • DataCube → Flatten and convert to Series

Throws ArgumentError if conversion is not possible.

Implementation

Series toSeries() {
  if (this is Series) {
    return this as Series;
  }

  if (this is NDArray) {
    final array = this as NDArray;

    if (array.ndim == 1) {
      // 1D array → Series directly
      final data = array.toFlatList();
      return Series(data, name: 'series_0');
    } else if (array.ndim == 2) {
      // 2D array → Extract first column
      final data = <dynamic>[];
      for (int i = 0; i < array.shape[0]; i++) {
        data.add(array.getValue([i, 0]));
      }
      return Series(data, name: 'col_0');
    } else if (array.ndim == 3) {
      // 3D array → Flatten
      final data = array.toFlatList();
      return Series(data, name: 'flattened');
    } else {
      throw ArgumentError('Cannot convert ${array.ndim}D NDArray to Series. '
          'Only 1D, 2D, and 3D arrays are supported.');
    }
  }

  if (this is DataFrame) {
    final df = this as DataFrame;
    if (df.columnCount == 0) {
      throw ArgumentError('Cannot convert empty DataFrame to Series');
    }
    // Extract first column
    return df[df.columns[0]];
  }

  if (this is DataCube) {
    final cube = this as DataCube;
    // Flatten the cube
    final data = cube.flatten().toFlatList();
    return Series(data, name: 'flattened');
  }

  throw ArgumentError('Cannot convert $runtimeType to Series. '
      'Supported types: NDArray (1D, 2D, 3D), Series, DataFrame, DataCube');
}