pub struct Schema<D> { /* private fields */ }Implementations§
Source§impl<D> Schema<D>
impl<D> Schema<D>
pub fn with_capacity(capacity: usize) -> Self
pub fn is_empty(&self) -> bool
Sourcepub fn rename(&mut self, old: &str, new: PlSmallStr) -> Option<PlSmallStr>
pub fn rename(&mut self, old: &str, new: PlSmallStr) -> Option<PlSmallStr>
Rename field old to new, and return the (owned) old name.
If old is not present in the schema, the schema is not modified and None is returned. Otherwise the schema
is updated and Some(old_name) is returned.
pub fn insert(&mut self, key: PlSmallStr, value: D) -> Option<D>
Sourcepub fn insert_at_index(
&mut self,
index: usize,
name: PlSmallStr,
dtype: D,
) -> PolarsResult<Option<D>>
pub fn insert_at_index( &mut self, index: usize, name: PlSmallStr, dtype: D, ) -> PolarsResult<Option<D>>
Insert a field with name and dtype at the given index into this schema.
If a field named name already exists, it is updated with the new dtype. Regardless, the field named name is
always moved to the given index. Valid indices range from 0 (front of the schema) to self.len() (after the
end of the schema).
For a non-mutating version that clones the schema, see new_inserting_at_index.
Runtime: O(n) where n is the number of fields in the schema.
Returns:
- If index is out of bounds,
Err(PolarsError) - Else if
namewas already in the schema,Ok(Some(old_dtype)) - Else
Ok(None)
Sourcepub fn get(&self, name: &str) -> Option<&D>
pub fn get(&self, name: &str) -> Option<&D>
Get a reference to the dtype of the field named name, or None if the field doesn’t exist.
Sourcepub fn get_mut(&mut self, name: &str) -> Option<&mut D>
pub fn get_mut(&mut self, name: &str) -> Option<&mut D>
Get a mutable reference to the dtype of the field named name, or None if the field doesn’t exist.
Sourcepub fn try_get(&self, name: &str) -> PolarsResult<&D>
pub fn try_get(&self, name: &str) -> PolarsResult<&D>
Get a reference to the dtype of the field named name, or Err(PolarsErr) if the field doesn’t exist.
Sourcepub fn try_get_mut(&mut self, name: &str) -> PolarsResult<&mut D>
pub fn try_get_mut(&mut self, name: &str) -> PolarsResult<&mut D>
Get a mutable reference to the dtype of the field named name, or Err(PolarsErr) if the field doesn’t exist.
Sourcepub fn get_full(&self, name: &str) -> Option<(usize, &PlSmallStr, &D)>
pub fn get_full(&self, name: &str) -> Option<(usize, &PlSmallStr, &D)>
Return all data about the field named name: its index in the schema, its name, and its dtype.
Returns Some((index, &name, &dtype)) if the field exists, None if it doesn’t.
Sourcepub fn try_get_full(&self, name: &str) -> PolarsResult<(usize, &PlSmallStr, &D)>
pub fn try_get_full(&self, name: &str) -> PolarsResult<(usize, &PlSmallStr, &D)>
Return all data about the field named name: its index in the schema, its name, and its dtype.
Returns Ok((index, &name, &dtype)) if the field exists, Err(PolarsErr) if it doesn’t.
Sourcepub fn get_at_index(&self, index: usize) -> Option<(&PlSmallStr, &D)>
pub fn get_at_index(&self, index: usize) -> Option<(&PlSmallStr, &D)>
Get references to the name and dtype of the field at index.
If index is inbounds, returns Some((&name, &dtype)), else None. See
get_at_index_mut for a mutable version.
pub fn try_get_at_index(&self, index: usize) -> PolarsResult<(&PlSmallStr, &D)>
Sourcepub fn get_at_index_mut(
&mut self,
index: usize,
) -> Option<(&mut PlSmallStr, &mut D)>
pub fn get_at_index_mut( &mut self, index: usize, ) -> Option<(&mut PlSmallStr, &mut D)>
Get mutable references to the name and dtype of the field at index.
If index is inbounds, returns Some((&mut name, &mut dtype)), else None. See
get_at_index for an immutable version.
Sourcepub fn remove(&mut self, name: &str) -> Option<D>
pub fn remove(&mut self, name: &str) -> Option<D>
Swap-remove a field by name and, if the field existed, return its dtype.
If the field does not exist, the schema is not modified and None is returned.
This method does a swap_remove, which is O(1) but changes the order of the schema: the field named name
is replaced by the last field, which takes its position. For a slower, but order-preserving, method, use
shift_remove.
Sourcepub fn shift_remove(&mut self, name: &str) -> Option<D>
pub fn shift_remove(&mut self, name: &str) -> Option<D>
Remove a field by name, preserving order, and, if the field existed, return its dtype.
If the field does not exist, the schema is not modified and None is returned.
This method does a shift_remove, which preserves the order of the fields in the schema but is O(n). For a
faster, but not order-preserving, method, use remove.
Sourcepub fn shift_remove_index(&mut self, index: usize) -> Option<(PlSmallStr, D)>
pub fn shift_remove_index(&mut self, index: usize) -> Option<(PlSmallStr, D)>
Remove a field by name, preserving order, and, if the field existed, return its dtype.
If the field does not exist, the schema is not modified and None is returned.
This method does a shift_remove, which preserves the order of the fields in the schema but is O(n). For a
faster, but not order-preserving, method, use remove.
Sourcepub fn set_dtype(&mut self, name: &str, dtype: D) -> Option<D>
pub fn set_dtype(&mut self, name: &str, dtype: D) -> Option<D>
Change the field named name to the given dtype and return the previous dtype.
If name doesn’t already exist in the schema, the schema is not modified and None is returned. Otherwise
returns Some(old_dtype).
This method only ever modifies an existing field and never adds a new field to the schema. To add a new field,
use with_column or insert_at_index.
Sourcepub fn set_dtype_at_index(&mut self, index: usize, dtype: D) -> Option<D>
pub fn set_dtype_at_index(&mut self, index: usize, dtype: D) -> Option<D>
Change the field at the given index to the given dtype and return the previous dtype.
If the index is out of bounds, the schema is not modified and None is returned. Otherwise returns
Some(old_dtype).
This method only ever modifies an existing index and never adds a new field to the schema. To add a new field,
use with_column or insert_at_index.
Sourcepub fn with_column(&mut self, name: PlSmallStr, dtype: D) -> Option<D>
pub fn with_column(&mut self, name: PlSmallStr, dtype: D) -> Option<D>
Insert a column into the Schema.
If the schema already has this column, this instead updates it with the new value and returns the old one. Otherwise, the column is inserted at the end.
To enforce the index of the resulting field, use insert_at_index.
Sourcepub fn try_insert(&mut self, name: PlSmallStr, value: D) -> PolarsResult<()>
pub fn try_insert(&mut self, name: PlSmallStr, value: D) -> PolarsResult<()>
Raises DuplicateError if this column already exists in the schema.
Sourcepub fn hstack_mut(
&mut self,
columns: impl IntoIterator<Item = impl Into<(PlSmallStr, D)>>,
) -> PolarsResult<()>
pub fn hstack_mut( &mut self, columns: impl IntoIterator<Item = impl Into<(PlSmallStr, D)>>, ) -> PolarsResult<()>
Performs Schema::try_insert for every column.
Raises DuplicateError if a column already exists in the schema.
Sourcepub fn hstack(
self,
columns: impl IntoIterator<Item = impl Into<(PlSmallStr, D)>>,
) -> PolarsResult<Self>
pub fn hstack( self, columns: impl IntoIterator<Item = impl Into<(PlSmallStr, D)>>, ) -> PolarsResult<Self>
Performs Schema::try_insert for every column.
Raises DuplicateError if a column already exists in the schema.
Sourcepub fn merge(&mut self, other: Self)
pub fn merge(&mut self, other: Self)
Merge other into self.
Merging logic:
- Fields that occur in
selfbut nototherare unmodified - Fields that occur in
otherbut notselfare appended, in order, to the end ofself - Fields that occur in both
selfandotherare updated with the dtype fromother, but keep their original index
Sourcepub fn iter(&self) -> impl ExactSizeIterator<Item = (&PlSmallStr, &D)> + '_
pub fn iter(&self) -> impl ExactSizeIterator<Item = (&PlSmallStr, &D)> + '_
Iterates over the (&name, &dtype) pairs in this schema.
For an owned version, use [iter_fields][Self::iter_fields], which clones the data to iterate owned Fields
pub fn iter_mut( &mut self, ) -> impl ExactSizeIterator<Item = (&PlSmallStr, &mut D)> + '_
Sourcepub fn iter_names(&self) -> impl '_ + ExactSizeIterator<Item = &PlSmallStr>
pub fn iter_names(&self) -> impl '_ + ExactSizeIterator<Item = &PlSmallStr>
Iterates over references to the names in this schema.
pub fn iter_names_cloned( &self, ) -> impl '_ + ExactSizeIterator<Item = PlSmallStr>
Sourcepub fn iter_values(&self) -> impl '_ + ExactSizeIterator<Item = &D>
pub fn iter_values(&self) -> impl '_ + ExactSizeIterator<Item = &D>
Iterates over references to the dtypes in this schema.
pub fn into_iter_values(self) -> impl ExactSizeIterator<Item = D>
Sourcepub fn iter_values_mut(&mut self) -> impl '_ + ExactSizeIterator<Item = &mut D>
pub fn iter_values_mut(&mut self) -> impl '_ + ExactSizeIterator<Item = &mut D>
Iterates over mut references to the dtypes in this schema.
pub fn index_of(&self, name: &str) -> Option<usize>
pub fn try_index_of(&self, name: &str) -> PolarsResult<usize>
Sourcepub fn field_compare<'a, 'b>(
&'a self,
other: &'b Self,
self_extra: &mut Vec<(usize, (&'a PlSmallStr, &'a D))>,
other_extra: &mut Vec<(usize, (&'b PlSmallStr, &'b D))>,
)
pub fn field_compare<'a, 'b>( &'a self, other: &'b Self, self_extra: &mut Vec<(usize, (&'a PlSmallStr, &'a D))>, other_extra: &mut Vec<(usize, (&'b PlSmallStr, &'b D))>, )
Compare the fields between two schema returning the additional columns that each schema has.
Source§impl<D> Schema<D>
impl<D> Schema<D>
Sourcepub fn new_inserting_at_index(
&self,
index: usize,
name: PlSmallStr,
field: D,
) -> PolarsResult<Self>
pub fn new_inserting_at_index( &self, index: usize, name: PlSmallStr, field: D, ) -> PolarsResult<Self>
Create a new schema from this one, inserting a field with name and dtype at the given index.
If a field named name already exists, it is updated with the new dtype. Regardless, the field named name is
always moved to the given index. Valid indices range from 0 (front of the schema) to self.len() (after the
end of the schema).
For a mutating version that doesn’t clone, see insert_at_index.
Runtime: O(m * n) where m is the (average) length of the field names and n is the number of fields in
the schema. This method clones every field in the schema.
Returns: Ok(new_schema) if index <= self.len(), else Err(PolarsError)
Sourcepub fn merge_from_ref(&mut self, other: &Self)
pub fn merge_from_ref(&mut self, other: &Self)
Merge borrowed other into self.
Merging logic:
- Fields that occur in
selfbut nototherare unmodified - Fields that occur in
otherbut notselfare appended, in order, to the end ofself - Fields that occur in both
selfandotherare updated with the dtype fromother, but keep their original index
Sourcepub fn try_project<I>(&self, columns: I) -> PolarsResult<Self>
pub fn try_project<I>(&self, columns: I) -> PolarsResult<Self>
Generates another schema with just the specified columns selected from this one.
pub fn try_project_indices(&self, indices: &[usize]) -> PolarsResult<Self>
Sourcepub fn filter<F: Fn(usize, &D) -> bool>(self, predicate: F) -> Self
pub fn filter<F: Fn(usize, &D) -> bool>(self, predicate: F) -> Self
Returns a new Schema with a subset of all fields whose predicate
evaluates to true.
pub fn from_iter_check_duplicates<I, F>(iter: I) -> PolarsResult<Self>
pub fn try_from_iter_check_duplicates<I, F, E>(
iter: I,
err_func: E,
) -> PolarsResult<Self>where
I: IntoIterator<Item = PolarsResult<F>>,
F: Into<(PlSmallStr, D)>,
E: Fn(&str) -> PolarsError,
Trait Implementations§
Source§impl<F, D> Extend<F> for Schema<D>where
F: Into<(PlSmallStr, D)>,
impl<F, D> Extend<F> for Schema<D>where
F: Into<(PlSmallStr, D)>,
Source§fn extend<T: IntoIterator<Item = F>>(&mut self, iter: T)
fn extend<T: IntoIterator<Item = F>>(&mut self, iter: T)
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)Source§impl<D> From<IndexMap<PlSmallStr, D, RandomState>> for Schema<D>
impl<D> From<IndexMap<PlSmallStr, D, RandomState>> for Schema<D>
Source§fn from(fields: PlIndexMap<PlSmallStr, D>) -> Self
fn from(fields: PlIndexMap<PlSmallStr, D>) -> Self
Source§impl<F, D> FromIterator<F> for Schema<D>where
F: Into<(PlSmallStr, D)>,
impl<F, D> FromIterator<F> for Schema<D>where
F: Into<(PlSmallStr, D)>,
Source§fn from_iter<I: IntoIterator<Item = F>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = F>>(iter: I) -> Self
Source§impl<D> IntoIterator for Schema<D>
impl<D> IntoIterator for Schema<D>
Source§type IntoIter = <IndexMap<PlSmallStr, D, RandomState> as IntoIterator>::IntoIter
type IntoIter = <IndexMap<PlSmallStr, D, RandomState> as IntoIterator>::IntoIter
Source§type Item = (PlSmallStr, D)
type Item = (PlSmallStr, D)
impl<D: Eq> Eq for Schema<D>
Auto Trait Implementations§
impl<D> Freeze for Schema<D>
impl<D> RefUnwindSafe for Schema<D>where
D: RefUnwindSafe,
impl<D> Send for Schema<D>where
D: Send,
impl<D> Sync for Schema<D>where
D: Sync,
impl<D> Unpin for Schema<D>where
D: Unpin,
impl<D> UnwindSafe for Schema<D>where
D: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more