Trait polars::prelude::ChunkApply[][src]

pub trait ChunkApply<'a, A, B> {
    fn apply_cast_numeric<F, S>(&'a self, f: F) -> ChunkedArray<S>
    where
        F: Fn(A) -> <S as ArrowPrimitiveType>::Native + Copy,
        S: PolarsNumericType
;
fn branch_apply_cast_numeric_no_null<F, S>(
        &'a self,
        f: F
    ) -> ChunkedArray<S>
    where
        F: Fn(Option<A>) -> <S as ArrowPrimitiveType>::Native + Copy,
        S: PolarsNumericType
;
fn apply<F>(&'a self, f: F) -> Self
    where
        F: Fn(A) -> B + Copy
;
fn apply_on_opt<F>(&'a self, f: F) -> Self
    where
        F: Fn(Option<A>) -> Option<B> + Copy
;
fn apply_with_idx<F>(&'a self, f: F) -> Self
    where
        F: Fn((usize, A)) -> B + Copy
;
fn apply_with_idx_on_opt<F>(&'a self, f: F) -> Self
    where
        F: Fn((usize, Option<A>)) -> Option<B> + Copy
;
fn apply_to_slice<F, T>(&'a self, f: F, slice: &mut [T])
    where
        F: Fn(Option<A>, &T) -> T
; }
Expand description

Fastest way to do elementwise operations on a ChunkedArray when the operation is cheaper than branching due to null checking

Required methods

Apply a closure elementwise and cast to a Numeric ChunkedArray. This is fastest when the null check branching is more expensive than the closure application.

Null values remain null.

Apply a closure on optional values and cast to Numeric ChunkedArray without null values.

Apply a closure elementwise. This is fastest when the null check branching is more expensive than the closure application. Often it is.

Null values remain null.

Example

use polars_core::prelude::*;
fn double(ca: &UInt32Chunked) -> UInt32Chunked {
    ca.apply(|v| v * 2)
}

Apply a closure elementwise including null values.

Apply a closure elementwise. The closure gets the index of the element as first argument.

Apply a closure elementwise. The closure gets the index of the element as first argument.

Apply a closure elementwise and write results to a mutable slice.

Implementors