Skip to main content

MapChunked

Struct MapChunked 

Source
pub struct MapChunked { /* private fields */ }
Expand description

A Map backed by a List(Struct {key, value}) Series.

§Storage safety contract

Every MapChunked must satisfy:

  1. The storage dtype is the DataType::map_storage_dtype of a Map dtype that passes DataType::ensure_valid_map_dtype.
  2. Child arrays are valid over their entire extent, including outside the list offsets: categorical codes in range for every non-null slot, no Object.
  3. Entries and keys are non-null within the offset window of every non-null row of every chunk.

Map values are nullable. Everything a live row does not own – entries under null rows or outside the offsets – is unconstrained, as for any ListChunked. Flat accessors mask those entries and Arrow export drops them; repairs never clear entry or key validity, which would expose arbitrary payloads.

§Canonical semantics

Validated ingestion (Self::try_from_storage, List(Struct) -> Map, from_any_values, Parquet) deduplicates keys within each row. Whole-row operations and value-only replacements preserve uniqueness; key-changing operations re-establish it. Arrow, IPC and FFI imports trust the producer and may contain duplicates. Uniqueness is never a safety requirement; callers that need it must canonicalize first.

Equality is entry-order-sensitive on the storage.

Implementations§

Source§

impl MapChunked

Source

pub unsafe fn from_storage_unchecked( dtype: DataType, storage: Series, ) -> MapChunked

§Safety

storage must satisfy the MapChunked storage safety contract for dtype.

Source

pub fn try_from_storage( dtype: DataType, storage: Series, ) -> Result<MapChunked, PolarsError>

Validate map storage and canonicalize duplicate keys.

Rejects null entries or keys that a live row owns. Duplicate keys keep their first position and last value.

Source

pub fn name(&self) -> &PlSmallStr

Source

pub fn rename(&mut self, name: PlSmallStr)

Source

pub fn field(&self) -> Field

Source

pub fn dtype(&self) -> &DataType

Source

pub fn key_dtype(&self) -> &DataType

Source

pub fn value_dtype(&self) -> &DataType

Source

pub fn storage(&self) -> &Series

The raw List(Struct {key, value}) storage, including entries that no live row owns.

Entries and keys are non-null within the offset windows of live rows. Null rows and slicing can hide arbitrary entries, as they can for any ListChunked; Self::live_storage empties the null rows.

Source

pub fn len(&self) -> usize

Source

pub fn is_empty(&self) -> bool

Source

pub fn any_value_iter(&self) -> impl PolarsIterator

One freshly-allocated AnyValue::Map per row.

Source

pub fn get_any_value(&self, i: usize) -> Result<AnyValue<'_>, PolarsError>

Source

pub unsafe fn get_any_value_unchecked(&self, i: usize) -> AnyValue<'_>

§Safety

i must be in bounds.

Source

pub fn keys(&self) -> Series

Keys of all entries in live rows, flattened in row order.

Source

pub fn values(&self) -> Series

Values of all entries in live rows, flattened in row order.

Source

pub fn live_row_lengths(&self) -> impl Iterator<Item = usize>

Entries each row contributes to Self::keys and Self::values, in row order.

A null row contributes none, whatever its offset window retains. Reads the offsets in place, so pairing this with a flat accessor never materializes the other field.

Source

pub fn key_lists(&self) -> ChunkedArray<ListType>

One list of keys per row: List(key_dtype).

Preserves rows, validity and entry order; null rows have empty windows.

Source

pub fn value_lists(&self) -> ChunkedArray<ListType>

One list of values per row: List(value_dtype).

Preserves rows, validity and entry order; null rows have empty windows.

Source

pub fn with_values(&self, values: &Series) -> Result<MapChunked, PolarsError>

Replace live entry values.

Requires one value per live entry, in Self::values order, and a valid Map value dtype. This also applies to list-valued entries.

Preserves row count, validity, live keys and entry order. Drops entries that no live row owns and may rebase offsets.

Source

pub fn entries(&self) -> Series

All entries in live rows, flattened in row order.

Excludes entries retained by null rows or sliced away.

Source

pub fn live_storage(&self) -> Cow<'_, ChunkedArray<ListType>>

Storage with empty windows for null rows.

Preserves row count, validity and live entries. Borrows if no compaction is needed. Mutating the returned Cow affects only its owned copy.

Source

pub fn cast_with_options( &self, dtype: &DataType, options: CastOptions, ) -> Result<Series, PolarsError>

Trait Implementations§

Source§

impl Clone for MapChunked

Source§

fn clone(&self) -> MapChunked

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl IntoSeries for MapChunked

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoColumn for T
where T: IntoSeries,

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Key for T
where T: Clone,

Source§

fn align() -> usize

The alignment necessary for the key. Must return a power of two.
Source§

fn size(&self) -> usize

The size of the key in bytes.
Source§

unsafe fn init(&self, ptr: *mut u8)

Initialize the key in the given memory location. Read more
Source§

unsafe fn get<'a>(ptr: *const u8) -> &'a T

Get a reference to the key from the given memory location. Read more
Source§

unsafe fn drop_in_place(ptr: *mut u8)

Drop the key in place. Read more
§

impl<T> PlanCallbackArgs for T

§

impl<T> PlanCallbackOut for T

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more