pub struct DictionaryArray<K: DictionaryKey> { /* private fields */ }Expand description
An Array whose values are stored as indices. This Array is useful when the cardinality of
values is low compared to the length of the Array.
§Safety
This struct guarantees that each item of DictionaryArray::keys is castable to usize and
its value is smaller than DictionaryArray::values.len(). In other words, you can safely
use unchecked calls to retrieve the values
Implementations§
Source§impl<K: DictionaryKey> DictionaryArray<K>
impl<K: DictionaryKey> DictionaryArray<K>
Sourcepub fn try_new(
dtype: ArrowDataType,
keys: PrimitiveArray<K>,
values: Box<dyn Array>,
) -> PolarsResult<Self>
pub fn try_new( dtype: ArrowDataType, keys: PrimitiveArray<K>, values: Box<dyn Array>, ) -> PolarsResult<Self>
Returns a new DictionaryArray.
§Implementation
This function is O(N) where N is the length of keys
§Errors
This function errors iff
- the
dtype’s logical type is not aDictionaryArray - the
dtype’s keys is not compatible withkeys - the
dtype’s values’s dtype is not equal withvalues.dtype() - any of the keys’s values is not represented in
usizeor is>= values.len()
Sourcepub fn try_from_keys(
keys: PrimitiveArray<K>,
values: Box<dyn Array>,
) -> PolarsResult<Self>
pub fn try_from_keys( keys: PrimitiveArray<K>, values: Box<dyn Array>, ) -> PolarsResult<Self>
Returns a new DictionaryArray.
§Implementation
This function is O(N) where N is the length of keys
§Errors
This function errors iff
- any of the keys’s values is not represented in
usizeor is>= values.len()
Sourcepub unsafe fn try_new_unchecked(
dtype: ArrowDataType,
keys: PrimitiveArray<K>,
values: Box<dyn Array>,
) -> PolarsResult<Self>
pub unsafe fn try_new_unchecked( dtype: ArrowDataType, keys: PrimitiveArray<K>, values: Box<dyn Array>, ) -> PolarsResult<Self>
Returns a new DictionaryArray.
§Errors
This function errors iff
- the
dtype’s logical type is not aDictionaryArray - the
dtype’s keys is not compatible withkeys - the
dtype’s values’s dtype is not equal withvalues.dtype()
§Safety
The caller must ensure that every keys’s values is represented in usize and is < values.len()
Sourcepub fn new_empty(dtype: ArrowDataType) -> Self
pub fn new_empty(dtype: ArrowDataType) -> Self
Returns a new empty DictionaryArray.
Sourcepub fn new_null(dtype: ArrowDataType, length: usize) -> Self
pub fn new_null(dtype: ArrowDataType, length: usize) -> Self
Returns an DictionaryArray whose all elements are null
Sourcepub fn iter(
&self,
) -> ZipValidity<Box<dyn Scalar>, DictionaryValuesIter<'_, K>, BitmapIter<'_>> ⓘ
pub fn iter( &self, ) -> ZipValidity<Box<dyn Scalar>, DictionaryValuesIter<'_, K>, BitmapIter<'_>> ⓘ
Returns an iterator of Option<Box<dyn Scalar>>.
§Implementation
This function will allocate a new Scalar per item and is usually not performant.
Consider calling keys_iter and values, downcasting values, and iterating over that.
Sourcepub fn values_iter(&self) -> DictionaryValuesIter<'_, K>
pub fn values_iter(&self) -> DictionaryValuesIter<'_, K>
Returns an iterator of Box<dyn Scalar>
§Implementation
This function will allocate a new Scalar per item and is usually not performant.
Consider calling keys_iter and values, downcasting values, and iterating over that.
Sourcepub fn values_iter_typed<V: DictValue>(
&self,
) -> PolarsResult<DictionaryValuesIterTyped<'_, K, V>>
pub fn values_iter_typed<V: DictValue>( &self, ) -> PolarsResult<DictionaryValuesIterTyped<'_, K, V>>
Returns an iterator over the values [V::IterValue].
§Panics
Panics if the keys of this DictionaryArray has any nulls.
If they do DictionaryArray::iter_typed should be used.
Sourcepub fn iter_typed<V: DictValue>(
&self,
) -> PolarsResult<DictionaryIterTyped<'_, K, V>>
pub fn iter_typed<V: DictValue>( &self, ) -> PolarsResult<DictionaryIterTyped<'_, K, V>>
Returns an iterator over the optional values of Option<V::IterValue>.
Sourcepub fn dtype(&self) -> &ArrowDataType
pub fn dtype(&self) -> &ArrowDataType
Returns the ArrowDataType of this DictionaryArray
Sourcepub fn is_ordered(&self) -> bool
pub fn is_ordered(&self) -> bool
Returns whether the values of this DictionaryArray are ordered
Sourcepub unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
pub unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
Sourcepub unsafe fn sliced_unchecked(self, offset: usize, length: usize) -> Self
pub unsafe fn sliced_unchecked(self, offset: usize, length: usize) -> Self
Sourcepub fn with_validity(self, validity: Option<Bitmap>) -> Self
pub fn with_validity(self, validity: Option<Bitmap>) -> Self
Returns this DictionaryArray with a new validity.
§Panic
This function panics iff validity.len() != self.len().
Sourcepub fn set_validity(&mut self, validity: Option<Bitmap>)
pub fn set_validity(&mut self, validity: Option<Bitmap>)
Sets the validity of the keys of this DictionaryArray.
§Panics
This function panics iff validity.len() != self.len().
Sourcepub fn boxed(self) -> Box<dyn Array>
pub fn boxed(self) -> Box<dyn Array>
Boxes this array into a Box<dyn Array>.
Sourcepub fn arced(self) -> Arc<dyn Array>
pub fn arced(self) -> Arc<dyn Array>
Arcs this array into a std::sync::Arc<dyn Array>.
Sourcepub fn validity(&self) -> Option<&Bitmap>
pub fn validity(&self) -> Option<&Bitmap>
The optional validity. Equivalent to self.keys().validity().
Sourcepub fn keys(&self) -> &PrimitiveArray<K>
pub fn keys(&self) -> &PrimitiveArray<K>
Returns the keys of the DictionaryArray. These keys can be used to fetch values
from values.
Sourcepub fn keys_values_iter(&self) -> impl TrustedLen<Item = usize> + Clone + '_
pub fn keys_values_iter(&self) -> impl TrustedLen<Item = usize> + Clone + '_
Returns an iterator of the keys’ values of the DictionaryArray as usize
Sourcepub fn keys_iter(&self) -> impl TrustedLen<Item = Option<usize>> + Clone + '_
pub fn keys_iter(&self) -> impl TrustedLen<Item = Option<usize>> + Clone + '_
Returns an iterator of the keys’ of the DictionaryArray as usize
Sourcepub fn key_value(&self, index: usize) -> usize
pub fn key_value(&self, index: usize) -> usize
Returns the keys’ value of the DictionaryArray as usize
§Panics
This function panics iff index >= self.len()
Sourcepub fn values(&self) -> &Box<dyn Array>
pub fn values(&self) -> &Box<dyn Array>
Returns the values of the DictionaryArray.
Sourcepub fn value(&self, index: usize) -> Box<dyn Scalar>
pub fn value(&self, index: usize) -> Box<dyn Scalar>
Returns the value of the DictionaryArray at position i.
§Implementation
This function will allocate a new Scalar and is usually not performant.
Consider calling keys and values, downcasting values, and iterating over that.
§Panic
This function panics iff index >= self.len()
pub fn take(self) -> (ArrowDataType, PrimitiveArray<K>, Box<dyn Array>)
Trait Implementations§
Source§impl<K: DictionaryKey> Array for DictionaryArray<K>
impl<K: DictionaryKey> Array for DictionaryArray<K>
Source§fn as_any(&self) -> &dyn Any
fn as_any(&self) -> &dyn Any
Any, which enables downcasting to concrete types.Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
Any, which enables mutable downcasting to concrete types.Source§fn len(&self) -> usize
fn len(&self) -> usize
Array. Every array has a length corresponding to the number of
elements (slots).Source§fn dtype(&self) -> &ArrowDataType
fn dtype(&self) -> &ArrowDataType
ArrowDataType of the Array. In combination with Array::as_any, this can be
used to downcast trait objects (dyn Array) to concrete arrays.Source§unsafe fn split_at_boxed_unchecked(
&self,
offset: usize,
) -> (Box<dyn Array>, Box<dyn Array>)
unsafe fn split_at_boxed_unchecked( &self, offset: usize, ) -> (Box<dyn Array>, Box<dyn Array>)
Source§unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
fn has_nulls(&self) -> bool
Source§unsafe fn is_null_unchecked(&self, i: usize) -> bool
unsafe fn is_null_unchecked(&self, i: usize) -> bool
i is null. Read moreSource§impl<K: Clone + DictionaryKey> Clone for DictionaryArray<K>
impl<K: Clone + DictionaryKey> Clone for DictionaryArray<K>
Source§fn clone(&self) -> DictionaryArray<K>
fn clone(&self) -> DictionaryArray<K>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<K: DictionaryKey> Debug for DictionaryArray<K>
impl<K: DictionaryKey> Debug for DictionaryArray<K>
Source§impl<'a, T: DictionaryKey> From<GrowableDictionary<'a, T>> for DictionaryArray<T>
impl<'a, T: DictionaryKey> From<GrowableDictionary<'a, T>> for DictionaryArray<T>
Source§fn from(val: GrowableDictionary<'a, T>) -> Self
fn from(val: GrowableDictionary<'a, T>) -> Self
Source§impl<K: DictionaryKey, M: MutableArray> From<MutableDictionaryArray<K, M>> for DictionaryArray<K>
impl<K: DictionaryKey, M: MutableArray> From<MutableDictionaryArray<K, M>> for DictionaryArray<K>
Source§fn from(other: MutableDictionaryArray<K, M>) -> Self
fn from(other: MutableDictionaryArray<K, M>) -> Self
Source§impl<'a, K: DictionaryKey> IntoIterator for &'a DictionaryArray<K>
impl<'a, K: DictionaryKey> IntoIterator for &'a DictionaryArray<K>
Source§type IntoIter = ZipValidity<Box<dyn Scalar>, DictionaryValuesIter<'a, K>, BitmapIter<'a>>
type IntoIter = ZipValidity<Box<dyn Scalar>, DictionaryValuesIter<'a, K>, BitmapIter<'a>>
Source§impl<K: DictionaryKey> PartialEq<&(dyn Array + 'static)> for DictionaryArray<K>
impl<K: DictionaryKey> PartialEq<&(dyn Array + 'static)> for DictionaryArray<K>
Source§impl<K: DictionaryKey> PartialEq for DictionaryArray<K>
impl<K: DictionaryKey> PartialEq for DictionaryArray<K>
Source§impl<K: DictionaryKey> Splitable for DictionaryArray<K>
impl<K: DictionaryKey> Splitable for DictionaryArray<K>
fn check_bound(&self, offset: usize) -> bool
Source§unsafe fn _split_at_unchecked(&self, offset: usize) -> (Self, Self)
unsafe fn _split_at_unchecked(&self, offset: usize) -> (Self, Self)
split_at_unchecked. For any usage, prefer the using
split_at or split_at_unchecked. Read moreAuto Trait Implementations§
impl<K> !Freeze for DictionaryArray<K>
impl<K> !RefUnwindSafe for DictionaryArray<K>
impl<K> Send for DictionaryArray<K>
impl<K> Sync for DictionaryArray<K>
impl<K> Unpin for DictionaryArray<K>where
K: Unpin,
impl<K> !UnwindSafe for DictionaryArray<K>
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<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