Trait polars::chunked_array::object::ChunkSet [−][src]
pub trait ChunkSet<'a, A, B> {
fn set_at_idx<I>(
&'a self,
idx: I,
opt_value: Option<A>
) -> Result<Self, PolarsError>
where
I: IntoIterator<Item = usize>;
fn set_at_idx_with<I, F>(
&'a self,
idx: I,
f: F
) -> Result<Self, PolarsError>
where
I: IntoIterator<Item = usize>,
F: Fn(Option<A>) -> Option<B>;
fn set(
&'a self,
mask: &ChunkedArray<BooleanType>,
opt_value: Option<A>
) -> Result<Self, PolarsError>;
fn set_with<F>(
&'a self,
mask: &ChunkedArray<BooleanType>,
f: F
) -> Result<Self, PolarsError>
where
F: Fn(Option<A>) -> Option<B>;
}
Expand description
Create a ChunkedArray
with new values by index or by boolean mask.
Note that these operations clone data. This is however the only way we can modify at mask or
index level as the underlying Arrow arrays are immutable.
Required methods
fn set_at_idx<I>(
&'a self,
idx: I,
opt_value: Option<A>
) -> Result<Self, PolarsError> where
I: IntoIterator<Item = usize>,
fn set_at_idx<I>(
&'a self,
idx: I,
opt_value: Option<A>
) -> Result<Self, PolarsError> where
I: IntoIterator<Item = usize>,
Set the values at indexes idx
to some optional value Option<T>
.
Example
let ca = UInt32Chunked::new_from_slice("a", &[1, 2, 3]);
let new = ca.set_at_idx(vec![0, 1], Some(10)).unwrap();
assert_eq!(Vec::from(&new), &[Some(10), Some(10), Some(3)]);
fn set_at_idx_with<I, F>(&'a self, idx: I, f: F) -> Result<Self, PolarsError> where
I: IntoIterator<Item = usize>,
F: Fn(Option<A>) -> Option<B>,
fn set_at_idx_with<I, F>(&'a self, idx: I, f: F) -> Result<Self, PolarsError> where
I: IntoIterator<Item = usize>,
F: Fn(Option<A>) -> Option<B>,
Set the values at indexes idx
by applying a closure to these values.
Example
let ca = Int32Chunked::new_from_slice("a", &[1, 2, 3]);
let new = ca.set_at_idx_with(vec![0, 1], |opt_v| opt_v.map(|v| v - 5)).unwrap();
assert_eq!(Vec::from(&new), &[Some(-4), Some(-3), Some(3)]);
fn set(
&'a self,
mask: &ChunkedArray<BooleanType>,
opt_value: Option<A>
) -> Result<Self, PolarsError>
fn set(
&'a self,
mask: &ChunkedArray<BooleanType>,
opt_value: Option<A>
) -> Result<Self, PolarsError>
Set the values where the mask evaluates to true
to some optional value Option<T>
.
Example
let ca = Int32Chunked::new_from_slice("a", &[1, 2, 3]);
let mask = BooleanChunked::new_from_slice("mask", &[false, true, false]);
let new = ca.set(&mask, Some(5)).unwrap();
assert_eq!(Vec::from(&new), &[Some(1), Some(5), Some(3)]);
fn set_with<F>(
&'a self,
mask: &ChunkedArray<BooleanType>,
f: F
) -> Result<Self, PolarsError> where
F: Fn(Option<A>) -> Option<B>,
fn set_with<F>(
&'a self,
mask: &ChunkedArray<BooleanType>,
f: F
) -> Result<Self, PolarsError> where
F: Fn(Option<A>) -> Option<B>,
Set the values where the mask evaluates to true
by applying a closure to these values.
Example
let ca = UInt32Chunked::new_from_slice("a", &[1, 2, 3]);
let mask = BooleanChunked::new_from_slice("mask", &[false, true, false]);
let new = ca.set_with(&mask, |opt_v| opt_v.map(
|v| v * 2
)).unwrap();
assert_eq!(Vec::from(&new), &[Some(1), Some(4), Some(3)]);