toSeries method
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');
}