pub struct ColumnFrame { /* private fields */ }
Expand description
ColumnFrame
is used to store the data for the candidates
The data is stored in the Array2
with the DataValue
values
The data is stored in the columns and the columns are indexed by the KeyIndex
The KeyIndex
is used to access the data by the column Key
Memory layout is same like in ndarray
- the data is stored in the row-major order
Implementations§
Source§impl ColumnFrame
impl ColumnFrame
pub fn new(index: KeyIndex, data_frame: Array2<DataValue>) -> Self
pub fn keys(&self) -> &[Key]
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn shrink(&mut self)
Sourcepub fn select_transposed_typed<D: Extract>(&self, keys: &[Key]) -> Vec<Vec<D>>
pub fn select_transposed_typed<D: Extract>(&self, keys: &[Key]) -> Vec<Vec<D>>
Selects the data from the ColumnFrame
by the given keys
If the keys are not provided, the data is selected by the KeyIndex
keys
The data is returned as the Vec<Vec<DataValue>>
If the keys are not found, the empty Vec<Vec<DataValue>>
is returned
Returns the data in the column-major order
Sourcepub fn select_transposed(
&self,
keys: Option<&[Key]>,
) -> Result<Array2<DataValue>, Error>
pub fn select_transposed( &self, keys: Option<&[Key]>, ) -> Result<Array2<DataValue>, Error>
Selects the data from the ColumnFrame
by the given keys
If the keys are not provided, the data is selected by the KeyIndex
keys
The data is returned as the Array2
with the DataValue
values
If the keys are not found, the empty Array2
is returned
Returns the Array2
with the data in the column-major order
Sourcepub fn select_column(&self, key: &Key) -> Option<ArrayView1<'_, DataValue>>
pub fn select_column(&self, key: &Key) -> Option<ArrayView1<'_, DataValue>>
Selects whole column from the ColumnFrame
by the given key
If the key is not found, the None is returned
If the key is found, the ArrayView1
with the DataValue
values is returned
pub fn apply_function<F>(&mut self, keys: &[Key], func: F) -> Result<(), Error>
Sourcepub fn validate_entry_access(
&self,
column: &Key,
row_index: usize,
) -> Result<usize, Error>
pub fn validate_entry_access( &self, column: &Key, row_index: usize, ) -> Result<usize, Error>
Validates the access to the entry by the given column Key
and row index
If the column is not found, an error is returned Error::NotFound
If the row index is out of bounds, an error is returned Error::IndexOutOfRange
Otherwise, the column index is returned
Sourcepub fn select(&self, keys: Option<&[Key]>) -> Array2<DataValue>
pub fn select(&self, keys: Option<&[Key]>) -> Array2<DataValue>
Returns the value Array2<DataValue>
for the given columns defined by Key
.
If the keys are not provided, the data is selected by the KeyIndex
keys
If the keys are not found, the empty Array2
is returned
Returns the Array2
with the data in the row-major order
Sourcepub fn push<C: CandidateData>(&mut self, row_candidate: C) -> Result<(), Error>
pub fn push<C: CandidateData>(&mut self, row_candidate: C) -> Result<(), Error>
Pushes the row candidate into the ColumnFrame
If the column is not found this method will add the column to the ColumnFrame
pub fn remove_column(&mut self, keys: &[Key]) -> Result<Self, Error>
Sourcepub fn extend(&mut self, other: Self) -> Result<(), Error>
pub fn extend(&mut self, other: Self) -> Result<(), Error>
Extends the ColumnFrame
with the data from the other ColumnFrame
If the KeyIndex
is empty, the ColumnFrame
is replaced with the other ColumnFrame
If the other KeyIndex
is empty, nothing happens
If the length of the KeyIndex
of the other data frame is greater then current,
an error is returned Error::DataSetSizeDoesntMatch
If Key
from other data frame - extends the KeyIndex
and add column to the current ColumnFrame
Sourcepub fn replace(&mut self, other: Self) -> Result<(), Error>
pub fn replace(&mut self, other: Self) -> Result<(), Error>
Replace the ColumnFrame
with the other ColumnFrame
If the current KeyIndex
is empty, the ColumnFrame
is replaced with the other ColumnFrame
If the other KeyIndex
is empty, nothing happens
If the KeyIndex
of the other data frame and current doesn’t match an error is returned Error::DataSetSizeDoesntMatch
If the Key
from other data frame is not present in the current ColumnFrame
- extends the KeyIndex
and add column to the current ColumnFrame
Sourcepub fn join_by_id_inner(
&mut self,
right: Self,
keys: &[Key],
) -> Result<(), Error>
pub fn join_by_id_inner( &mut self, right: Self, keys: &[Key], ) -> Result<(), Error>
Joins the candidates by the keys in the JoinRelation::JoinById
struct.
This function creates Index
for the keys and then joins the candidates by the keys.
Sourcepub fn add_single_column<K: Into<Key>>(
&mut self,
key: K,
column: Array1<DataValue>,
) -> Result<(), Error>
pub fn add_single_column<K: Into<Key>>( &mut self, key: K, column: Array1<DataValue>, ) -> Result<(), Error>
Adds the single column to the current ColumnFrame
If the column is already present, an error is returned Error::ColumnAlreadyExists
If the length of the column is different from the current data frame, an error is returned Error::DataSetSizeDoesntMatch
Sourcepub fn add_columns(&mut self, other: Self) -> Result<(), Error>
pub fn add_columns(&mut self, other: Self) -> Result<(), Error>
Adds the columns from the other ColumnFrame
to the current ColumnFrame
If the current KeyIndex
is empty, the ColumnFrame
is replaced with the other ColumnFrame
If the other KeyIndex
is empty, nothing happens
Sourcepub fn broadcast(&mut self, other: Self) -> Result<(), Error>
pub fn broadcast(&mut self, other: Self) -> Result<(), Error>
Broadcasts the data from the other ColumnFrame
to the current ColumnFrame
If the current KeyIndex
is empty, the ColumnFrame
is replaced with the other ColumnFrame
If the other KeyIndex
is empty, nothing happens
If the length (number of rows) of the other data frame is greater then 1 an error is returned Error::CannotBroadcast
Sourcepub fn cartesian_product(&mut self, other: Self) -> Result<(), Error>
pub fn cartesian_product(&mut self, other: Self) -> Result<(), Error>
Computes the Cartesian product of the input structures,
resulting in all possible combinations of elements.
The data is stored in the row-major order
The keys are stored in the order they are added - the order is preserved - new keys from the other
ColumnFrame
are added to the end
Sourcepub fn join(
&mut self,
right: Self,
join_type: &JoinRelation,
) -> Result<(), Error>
pub fn join( &mut self, right: Self, join_type: &JoinRelation, ) -> Result<(), Error>
Joins the candidates with the other candidates by the JoinRelation
policy.
For JoinBy::AddColumns
the columns are added to the existing structure via Self::add_columns
For JoinBy::Replace
the columns are replaced with the new columns
For JoinBy::Extend
the candidates are extended via Self::extend
For JoinBy::Broadcast
each candidate is extended with the values of the other candidates Self::broadcast
For JoinBy::CartesianProduct
the candidates are multiplied by the other candidates
For JoinBy::JoinById
the candidates are joined by the keys in the JoinRelation::JoinById
struct see Self::join_by_id_inner
pub fn get_single_column(&self, key: &Key) -> Option<ArrayView1<'_, DataValue>>
Trait Implementations§
Source§impl Clone for ColumnFrame
impl Clone for ColumnFrame
Source§fn clone(&self) -> ColumnFrame
fn clone(&self) -> ColumnFrame
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ColumnFrame
impl Debug for ColumnFrame
Source§impl Default for ColumnFrame
impl Default for ColumnFrame
Source§fn default() -> ColumnFrame
fn default() -> ColumnFrame
Source§impl<'de> Deserialize<'de> for ColumnFrame
impl<'de> Deserialize<'de> for ColumnFrame
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for ColumnFrame
impl Display for ColumnFrame
Source§impl From<ColumnFrame> for DataFrame
impl From<ColumnFrame> for DataFrame
Source§fn from(dataframe: ColumnFrame) -> Self
fn from(dataframe: ColumnFrame) -> Self
Source§impl From<HashMap<String, Vec<DataValue>>> for ColumnFrame
impl From<HashMap<String, Vec<DataValue>>> for ColumnFrame
NOTE: Because of randomnes of the key order in the hashmap, the order of the keys are sorted!
Source§impl From<SizedHashMap<SmartString<LazyCompact>, Vec<DataValue>>> for ColumnFrame
impl From<SizedHashMap<SmartString<LazyCompact>, Vec<DataValue>>> for ColumnFrame
Source§impl From<Vec<HashMap<Key, DataValue>>> for ColumnFrame
impl From<Vec<HashMap<Key, DataValue>>> for ColumnFrame
NOTE: Because of randomnes of the key order in the hashmap, the order of the keys are sorted!
Source§impl From<Vec<SizedHashMap<Key, DataValue>>> for ColumnFrame
impl From<Vec<SizedHashMap<Key, DataValue>>> for ColumnFrame
NOTE: Because of randomnes of the key order in the hashmap, the order of the keys are sorted!