Struct polars_core::series::Series

source ·
pub struct Series(pub Arc<dyn SeriesTrait>);
Expand description

Series

The columnar data type for a DataFrame.

Most of the available functions are defined in the SeriesTrait trait.

The Series struct consists of typed ChunkedArray’s. To quickly cast a Series to a ChunkedArray you can call the method with the name of the type:

let s: Series = [1, 2, 3].iter().collect();
// Quickly obtain the ChunkedArray wrapped by the Series.
let chunked_array = s.i32().unwrap();

Arithmetic

You can do standard arithmetic on series.

let s = Series::new("a", [1 , 2, 3]);
let out_add = &s + &s;
let out_sub = &s - &s;
let out_div = &s / &s;
let out_mul = &s * &s;

Or with series and numbers.

let s: Series = (1..3).collect();
let out_add_one = &s + 1;
let out_multiply = &s * 10;

// Could not overload left hand side operator.
let out_divide = 1.div(&s);
let out_add = 1.add(&s);
let out_subtract = 1.sub(&s);
let out_multiply = 1.mul(&s);

Comparison

You can obtain boolean mask by comparing series.

let s = Series::new("dollars", &[1, 2, 3]);
let mask = s.equal(1).unwrap();
let valid = [true, false, false].iter();
assert!(mask
    .into_iter()
    .map(|opt_bool| opt_bool.unwrap()) // option, because series can be null
    .zip(valid)
    .all(|(a, b)| a == *b))

See all the comparison operators in the CmpOps trait

Iterators

The Series variants contain differently typed ChunkedArray’s. These structs can be turned into iterators, making it possible to use any function/ closure you want on a Series.

These iterators return an Option<T> because the values of a series may be null.

use polars_core::prelude::*;
let pi = 3.14;
let s = Series::new("angle", [2f32 * pi, pi, 1.5 * pi].as_ref());
let s_cos: Series = s.f32()
                    .expect("series was not an f32 dtype")
                    .into_iter()
                    .map(|opt_angle| opt_angle.map(|angle| angle.cos()))
                    .collect();

Creation

Series can be create from different data structures. Below we’ll show a few ways we can create a Series object.

// Series can be created from Vec's, slices and arrays
Series::new("boolean series", &[true, false, true]);
Series::new("int series", &[1, 2, 3]);
// And can be nullable
Series::new("got nulls", &[Some(1), None, Some(2)]);

// Series can also be collected from iterators
let from_iter: Series = (0..10)
    .into_iter()
    .collect();

Tuple Fields§

§0: Arc<dyn SeriesTrait>

Implementations§

source§

impl Series

source

pub fn fill_null(&self, strategy: FillNullStrategy) -> PolarsResult<Series>

Replace None values with one of the following strategies:

  • Forward fill (replace None with the previous value)
  • Backward fill (replace None with the next value)
  • Mean fill (replace None with the mean of the whole array)
  • Min fill (replace None with the minimum of the whole array)
  • Max fill (replace None with the maximum of the whole array)

NOTE: If you want to fill the Nones with a value use the fill_null operation on ChunkedArray<T>.

Example
fn example() -> PolarsResult<()> {
    let s = Series::new("some_missing", &[Some(1), None, Some(2)]);

    let filled = s.fill_null(FillNullStrategy::Forward(None))?;
    assert_eq!(Vec::from(filled.i32()?), &[Some(1), Some(1), Some(2)]);

    let filled = s.fill_null(FillNullStrategy::Backward(None))?;
    assert_eq!(Vec::from(filled.i32()?), &[Some(1), Some(2), Some(2)]);

    let filled = s.fill_null(FillNullStrategy::Min)?;
    assert_eq!(Vec::from(filled.i32()?), &[Some(1), Some(1), Some(2)]);

    let filled = s.fill_null(FillNullStrategy::Max)?;
    assert_eq!(Vec::from(filled.i32()?), &[Some(1), Some(2), Some(2)]);

    let filled = s.fill_null(FillNullStrategy::Mean)?;
    assert_eq!(Vec::from(filled.i32()?), &[Some(1), Some(1), Some(2)]);

    Ok(())
}
example();
source§

impl Series

source

pub fn sample_n( &self, n: usize, with_replacement: bool, shuffle: bool, seed: Option<u64> ) -> PolarsResult<Self>

Available on crate feature random only.
source

pub fn sample_frac( &self, frac: f64, with_replacement: bool, shuffle: bool, seed: Option<u64> ) -> PolarsResult<Self>

Available on crate feature random only.

Sample a fraction between 0.0-1.0 of this ChunkedArray.

source

pub fn shuffle(&self, seed: Option<u64>) -> Self

Available on crate feature random only.
source§

impl Series

source

pub fn fmt_list(&self) -> String

source§

impl Series

source

pub fn from_any_values_and_dtype( name: &str, av: &[AnyValue<'_>], dtype: &DataType, strict: bool ) -> PolarsResult<Series>

source

pub fn from_any_values( name: &str, avs: &[AnyValue<'_>], strict: bool ) -> PolarsResult<Series>

source§

impl Series

source

pub fn try_add(&self, rhs: &Series) -> PolarsResult<Series>

source§

impl Series

source

pub unsafe fn from_chunks_and_dtype_unchecked( name: &str, chunks: Vec<ArrayRef>, dtype: &DataType ) -> Self

Takes chunks and a polars datatype and constructs the Series This is faster than creating from chunks and an arrow datatype because there is no casting involved

Safety

The caller must ensure that the given dtype’s physical type matches all the ArrayRef dtypes.

source§

impl Series

source

pub fn new_null(name: &str, len: usize) -> Series

source§

impl Series

source

pub fn array_ref(&self, chunk_idx: usize) -> &ArrayRef

Returns a reference to the Arrow ArrayRef

source

pub fn to_arrow(&self, chunk_idx: usize) -> ArrayRef

Convert a chunk in the Series to the correct Arrow type. This conversion is needed because polars doesn’t use a 1 on 1 mapping for logical/ categoricals, etc.

source§

impl Series

source

pub fn iter(&self) -> SeriesIter<'_>

Available on crate features rows or dtype-struct only.

iterate over Series as AnyValue.

Panics

This will panic if the array is not rechunked first.

source

pub fn phys_iter(&self) -> SeriesPhysIter<'_>

Available on crate features rows or dtype-struct only.
source§

impl Series

source

pub fn diff(&self, n: i64, null_behavior: NullBehavior) -> PolarsResult<Series>

Available on crate feature diff only.
source§

impl Series

source

pub fn i8(&self) -> PolarsResult<&Int8Chunked>

Unpack to ChunkedArray of dtype i8

source

pub fn i16(&self) -> PolarsResult<&Int16Chunked>

Unpack to ChunkedArray i16

source

pub fn i32(&self) -> PolarsResult<&Int32Chunked>

Unpack to ChunkedArray

let s = Series::new("foo", [1i32 ,2, 3]);
let s_squared: Series = s.i32()
    .unwrap()
    .into_iter()
    .map(|opt_v| {
        match opt_v {
            Some(v) => Some(v * v),
            None => None, // null value
        }
}).collect();
source

pub fn i64(&self) -> PolarsResult<&Int64Chunked>

Unpack to ChunkedArray of dtype i64

source

pub fn f32(&self) -> PolarsResult<&Float32Chunked>

Unpack to ChunkedArray of dtype f32

source

pub fn f64(&self) -> PolarsResult<&Float64Chunked>

Unpack to ChunkedArray of dtype f64

source

pub fn u8(&self) -> PolarsResult<&UInt8Chunked>

Unpack to ChunkedArray of dtype u8

source

pub fn u16(&self) -> PolarsResult<&UInt16Chunked>

Unpack to ChunkedArray of dtype u16

source

pub fn u32(&self) -> PolarsResult<&UInt32Chunked>

Unpack to ChunkedArray of dtype u32

source

pub fn u64(&self) -> PolarsResult<&UInt64Chunked>

Unpack to ChunkedArray of dtype u64

source

pub fn bool(&self) -> PolarsResult<&BooleanChunked>

Unpack to ChunkedArray of dtype bool

source

pub fn utf8(&self) -> PolarsResult<&Utf8Chunked>

Unpack to ChunkedArray of dtype utf8

source

pub fn binary(&self) -> PolarsResult<&BinaryChunked>

Unpack to ChunkedArray of dtype binary

source

pub fn list(&self) -> PolarsResult<&ListChunked>

Unpack to ChunkedArray of dtype list

source

pub fn categorical(&self) -> PolarsResult<&CategoricalChunked>

Available on crate feature dtype-categorical only.

Unpack to ChunkedArray of dtype categorical

source§

impl Series

source

pub fn extend_constant( &self, value: AnyValue<'_>, n: usize ) -> PolarsResult<Self>

Extend with a constant value.

source§

impl Series

source

pub fn skew(&self, bias: bool) -> PolarsResult<Option<f64>>

Available on crate feature moment only.

Compute the sample skewness of a data set.

For normally distributed data, the skewness should be about zero. For uni-modal continuous distributions, a skewness value greater than zero means that there is more weight in the right tail of the distribution. The function skewtest can be used to determine if the skewness value is close enough to zero, statistically speaking.

see: https://github.com/scipy/scipy/blob/47bb6febaa10658c72962b9615d5d5aa2513fa3a/scipy/stats/stats.py#L1024

source

pub fn kurtosis(&self, fisher: bool, bias: bool) -> PolarsResult<Option<f64>>

Available on crate feature moment only.

Compute the kurtosis (Fisher or Pearson) of a dataset.

Kurtosis is the fourth central moment divided by the square of the variance. If Fisher’s definition is used, then 3.0 is subtracted from the result to give 0.0 for a normal distribution. If bias is false then the kurtosis is calculated using k statistics to eliminate bias coming from biased moment estimators

see: https://github.com/scipy/scipy/blob/47bb6febaa10658c72962b9615d5d5aa2513fa3a/scipy/stats/stats.py#L1027

source§

impl Series

source

pub fn full_null(name: &str, size: usize, dtype: &DataType) -> Self

source§

impl Series

source

pub fn round(&self, decimals: u32) -> PolarsResult<Self>

Available on crate feature round_series only.

Round underlying floating point array to given decimal.

source

pub fn floor(&self) -> PolarsResult<Self>

Available on crate feature round_series only.

Floor underlying floating point array to the lowest integers smaller or equal to the float value.

source

pub fn ceil(&self) -> PolarsResult<Self>

Available on crate feature round_series only.

Ceil underlying floating point array to the highest integers smaller or equal to the float value.

source

pub fn clip(self, min: AnyValue<'_>, max: AnyValue<'_>) -> PolarsResult<Self>

Available on crate feature round_series only.

Clamp underlying values to the min and max values.

source

pub fn clip_max(self, max: AnyValue<'_>) -> PolarsResult<Self>

Available on crate feature round_series only.

Clamp underlying values to the max value.

source

pub fn clip_min(self, min: AnyValue<'_>) -> PolarsResult<Self>

Available on crate feature round_series only.

Clamp underlying values to the min value.

source§

impl Series

source

pub fn implode(&self) -> PolarsResult<ListChunked>

Convert the values of this Series to a ListChunked with a length of 1, So a Series of: [1, 2, 3] becomes [[1, 2, 3]]

source

pub fn reshape(&self, dims: &[i64]) -> PolarsResult<Series>

source§

impl Series

source

pub fn unique_counts(&self) -> IdxCa

Available on crate feature unique_counts only.

Returns a count of the unique values in the order of appearance.

source§

impl Series

source

pub fn new_empty(name: &str, dtype: &DataType) -> Series

Create a new empty Series

source

pub fn clear(&self) -> Series

source

pub unsafe fn chunks_mut(&mut self) -> &mut Vec<ArrayRef>

Safety

The caller must ensure the length and the data types of ArrayRef does not change.

source

pub fn set_sorted_flag(&mut self, sorted: IsSorted)

source

pub fn into_frame(self) -> DataFrame

source

pub fn rename(&mut self, name: &str) -> &mut Series

Rename series.

source

pub fn shrink_to_fit(&mut self)

Shrink the capacity of this array to fit its length.

source

pub fn append(&mut self, other: &Series) -> PolarsResult<&mut Self>

Append in place. This is done by adding the chunks of other to this Series.

See ChunkedArray::append and ChunkedArray::extend.

source

pub fn extend(&mut self, other: &Series) -> PolarsResult<&mut Self>

Extend the memory backed by this array with the values from other.

See ChunkedArray::extend and ChunkedArray::append.

source

pub fn sort(&self, descending: bool) -> Self

source

pub fn as_single_ptr(&mut self) -> PolarsResult<usize>

Only implemented for numeric types

source

pub fn cast(&self, dtype: &DataType) -> PolarsResult<Self>

Cast [Series] to another [DataType]

source

pub unsafe fn cast_unchecked(&self, dtype: &DataType) -> PolarsResult<Self>

Cast from physical to logical types without any checks on the validity of the cast.

Safety

This can lead to invalid memory access in downstream code.

source

pub fn sum<T>(&self) -> Option<T>where T: NumCast,

Compute the sum of all values in this Series. Returns Some(0) if the array is empty, and None if the array only contains null values.

If the DataType is one of {Int8, UInt8, Int16, UInt16} the Series is first cast to Int64 to prevent overflow issues.

let s = Series::new("days", &[1, 2, 3]);
assert_eq!(s.sum(), Some(6));
source

pub fn min<T>(&self) -> Option<T>where T: NumCast,

Returns the minimum value in the array, according to the natural order. Returns an option because the array is nullable.

let s = Series::new("days", [1, 2, 3].as_ref());
assert_eq!(s.min(), Some(1));
source

pub fn max<T>(&self) -> Option<T>where T: NumCast,

Returns the maximum value in the array, according to the natural order. Returns an option because the array is nullable.

let s = Series::new("days", [1, 2, 3].as_ref());
assert_eq!(s.max(), Some(3));
source

pub fn explode(&self) -> PolarsResult<Series>

Explode a list or utf8 Series. This expands every item to a new row..

source

pub fn is_nan(&self) -> PolarsResult<BooleanChunked>

Check if float value is NaN (note this is different than missing/ null)

source

pub fn is_not_nan(&self) -> PolarsResult<BooleanChunked>

Check if float value is NaN (note this is different than missing/ null)

source

pub fn is_finite(&self) -> PolarsResult<BooleanChunked>

Check if float value is finite

source

pub fn is_infinite(&self) -> PolarsResult<BooleanChunked>

Check if float value is infinite

source

pub fn zip_with( &self, mask: &BooleanChunked, other: &Series ) -> PolarsResult<Series>

Available on crate feature zip_with only.

Create a new ChunkedArray with values from self where the mask evaluates true and values from other where the mask evaluates false

source

pub fn to_physical_repr(&self) -> Cow<'_, Series>

Cast a datelike Series to their physical representation. Primitives remain unchanged

  • Date -> Int32
  • Datetime-> Int64
  • Time -> Int64
  • Categorical -> UInt32
  • List(inner) -> List(physical of inner)
source

pub unsafe fn take_unchecked_from_slice( &self, idx: &[IdxSize] ) -> PolarsResult<Series>

Take by index if ChunkedArray contains a single chunk.

Safety

This doesn’t check any bounds. Null validity is checked.

source

pub unsafe fn take_unchecked_threaded( &self, idx: &IdxCa, rechunk: bool ) -> PolarsResult<Series>

Take by index if ChunkedArray contains a single chunk.

Safety

This doesn’t check any bounds. Null validity is checked.

source

pub fn take_threaded(&self, idx: &IdxCa, rechunk: bool) -> PolarsResult<Series>

Take by index. This operation is clone.

Notes

Out of bounds access doesn’t Error but will return a Null value

source

pub fn filter_threaded( &self, filter: &BooleanChunked, rechunk: bool ) -> PolarsResult<Series>

Filter by boolean mask. This operation clones data.

source

pub fn dot(&self, other: &Series) -> Option<f64>

Available on crate feature dot_product only.
source

pub fn sum_as_series(&self) -> Series

Get the sum of the Series as a new Series of length 1. Returns a Series with a single zeroed entry if self is an empty numeric series.

If the DataType is one of {Int8, UInt8, Int16, UInt16} the Series is first cast to Int64 to prevent overflow issues.

source

pub fn cummax(&self, _reverse: bool) -> Series

Get an array with the cumulative max computed at every element

source

pub fn cummin(&self, _reverse: bool) -> Series

Get an array with the cumulative min computed at every element

source

pub fn cumsum(&self, reverse: bool) -> Series

Get an array with the cumulative sum computed at every element

If the DataType is one of {Int8, UInt8, Int16, UInt16} the Series is first cast to Int64 to prevent overflow issues.

source

pub fn cumprod(&self, reverse: bool) -> Series

Get an array with the cumulative product computed at every element

If the DataType is one of {Int8, UInt8, Int16, UInt16, Int32, UInt32} the Series is first cast to Int64 to prevent overflow issues.

source

pub fn product(&self) -> Series

Get the product of an array.

If the DataType is one of {Int8, UInt8, Int16, UInt16} the Series is first cast to Int64 to prevent overflow issues.

source

pub fn rank(&self, options: RankOptions, seed: Option<u64>) -> Series

Available on crate feature rank only.
source

pub fn strict_cast(&self, dtype: &DataType) -> PolarsResult<Series>

Cast throws an error if conversion had overflows

source

pub fn abs(&self) -> PolarsResult<Series>

Available on crate feature abs only.

convert numerical values to their absolute value

source

pub fn str_value(&self, index: usize) -> PolarsResult<Cow<'_, str>>

Available on crate feature private only.
source

pub fn head(&self, length: Option<usize>) -> Series

Get the head of the Series.

source

pub fn tail(&self, length: Option<usize>) -> Series

Get the tail of the Series.

source

pub fn mean_as_series(&self) -> Series

source

pub fn unique_stable(&self) -> PolarsResult<Series>

Compute the unique elements, but maintain order. This requires more work than a naive Series::unique.

source

pub fn idx(&self) -> PolarsResult<&IdxCa>

source

pub fn estimated_size(&self) -> usize

Returns an estimation of the total (heap) allocated size of the Series in bytes.

Implementation

This estimation is the sum of the size of its buffers, validity, including nested arrays. Multiple arrays may share buffers and bitmaps. Therefore, the size of 2 arrays is not the sum of the sizes computed from this function. In particular, StructArray’s size is an upper bound.

When an array is sliced, its allocated size remains constant because the buffer unchanged. However, this function will yield a smaller number. This is because this function returns the visible size of the buffer, not its total capacity.

FFI buffers are included in this estimation.

source

pub fn as_list(&self) -> ListChunked

Packs every element into a list

source§

impl Series

source

pub fn series_equal(&self, other: &Series) -> bool

Check if series are equal. Note that None == None evaluates to false

source

pub fn series_equal_missing(&self, other: &Series) -> bool

Check if all values in series are equal where None == None evaluates to true. Two Datetime series are not equal if their timezones are different, regardless if they represent the same UTC time or not.

source

pub fn get_data_ptr(&self) -> usize

Get a pointer to the underlying data of this Series. Can be useful for fast comparisons.

Methods from Deref<Target = dyn SeriesTrait>§

source

pub fn unpack<N>(&self) -> PolarsResult<&ChunkedArray<N>>where N: PolarsDataType + 'static,

Trait Implementations§

source§

impl Add<&Series> for &DataFrame

Available on crate feature dataframe_arithmetic only.
§

type Output = Result<DataFrame, PolarsError>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Series) -> Self::Output

Performs the + operation. Read more
source§

impl Add<&Series> for &Series

§

type Output = Series

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl Add<&Series> for DataFrame

Available on crate feature dataframe_arithmetic only.
§

type Output = Result<DataFrame, PolarsError>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Series) -> Self::Output

Performs the + operation. Read more
source§

impl Add<Series> for Series

§

type Output = Series

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl<T> Add<T> for &Serieswhere T: Num + NumCast,

§

type Output = Series

The resulting type after applying the + operator.
source§

fn add(self, rhs: T) -> Self::Output

Performs the + operation. Read more
source§

impl<T> Add<T> for Serieswhere T: Num + NumCast,

§

type Output = Series

The resulting type after applying the + operator.
source§

fn add(self, rhs: T) -> Self::Output

Performs the + operation. Read more
source§

impl AsMut<Series> for UnstableSeries<'_>

Available on crate feature private only.
source§

fn as_mut(&mut self) -> &mut Series

Converts this type into a mutable reference of the (usually inferred) input type.
source§

impl AsRef<Series> for UnstableSeries<'_>

Available on crate feature private only.

We don’t implement Deref so that the caller is aware of converting to Series

source§

fn as_ref(&self) -> &Series

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<'a> AsRef<dyn SeriesTrait + 'a> for Series

source§

fn as_ref(&self) -> &(dyn SeriesTrait + 'a)

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<'a> ChunkApply<'a, Series, Series> for ListChunked

source§

fn apply<F>(&'a self, f: F) -> Selfwhere F: Fn(Series) -> Series + Copy,

Apply a closure F elementwise.

source§

fn apply_with_idx<F>(&'a self, f: F) -> Selfwhere F: Fn((usize, Series)) -> Series + Copy,

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

source§

fn apply_with_idx_on_opt<F>(&'a self, f: F) -> Selfwhere F: Fn((usize, Option<Series>)) -> Option<Series> + Copy,

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

source§

fn apply_cast_numeric<F, S>(&self, f: F) -> ChunkedArray<S>where F: Fn(Series) -> S::Native + Copy, S: PolarsNumericType,

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. Read more
source§

fn branch_apply_cast_numeric_no_null<F, S>(&self, f: F) -> ChunkedArray<S>where F: Fn(Option<Series>) -> S::Native + Copy, S: PolarsNumericType,

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

fn try_apply<F>(&'a self, f: F) -> PolarsResult<Self>where F: Fn(Series) -> PolarsResult<Series> + Copy,

source§

fn apply_on_opt<F>(&'a self, f: F) -> Selfwhere F: Fn(Option<Series>) -> Option<Series> + Copy,

Apply a closure elementwise including null values.
source§

fn apply_to_slice<F, T>(&'a self, f: F, slice: &mut [T])where F: Fn(Option<Series>, &T) -> T,

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

impl ChunkCompare<&Series> for Series

source§

fn equal(&self, rhs: &Series) -> PolarsResult<BooleanChunked>

Create a boolean mask by checking for equality.

source§

fn not_equal(&self, rhs: &Series) -> PolarsResult<BooleanChunked>

Create a boolean mask by checking for inequality.

source§

fn gt(&self, rhs: &Series) -> PolarsResult<BooleanChunked>

Create a boolean mask by checking if self > rhs.

source§

fn gt_eq(&self, rhs: &Series) -> PolarsResult<BooleanChunked>

Create a boolean mask by checking if self >= rhs.

source§

fn lt(&self, rhs: &Series) -> PolarsResult<BooleanChunked>

Create a boolean mask by checking if self < rhs.

source§

fn lt_eq(&self, rhs: &Series) -> PolarsResult<BooleanChunked>

Create a boolean mask by checking if self <= rhs.

§

type Item = Result<ChunkedArray<BooleanType>, PolarsError>

source§

impl ChunkCompare<&str> for Series

§

type Item = Result<ChunkedArray<BooleanType>, PolarsError>

source§

fn equal(&self, rhs: &str) -> PolarsResult<BooleanChunked>

Check for equality.
source§

fn not_equal(&self, rhs: &str) -> PolarsResult<BooleanChunked>

Check for inequality.
source§

fn gt(&self, rhs: &str) -> PolarsResult<BooleanChunked>

Greater than comparison.
source§

fn gt_eq(&self, rhs: &str) -> PolarsResult<BooleanChunked>

Greater than or equal comparison.
source§

fn lt(&self, rhs: &str) -> PolarsResult<BooleanChunked>

Less than comparison.
source§

fn lt_eq(&self, rhs: &str) -> PolarsResult<BooleanChunked>

Less than or equal comparison
source§

impl<Rhs> ChunkCompare<Rhs> for Serieswhere Rhs: NumericNative,

§

type Item = Result<ChunkedArray<BooleanType>, PolarsError>

source§

fn equal(&self, rhs: Rhs) -> PolarsResult<BooleanChunked>

Check for equality.
source§

fn not_equal(&self, rhs: Rhs) -> PolarsResult<BooleanChunked>

Check for inequality.
source§

fn gt(&self, rhs: Rhs) -> PolarsResult<BooleanChunked>

Greater than comparison.
source§

fn gt_eq(&self, rhs: Rhs) -> PolarsResult<BooleanChunked>

Greater than or equal comparison.
source§

fn lt(&self, rhs: Rhs) -> PolarsResult<BooleanChunked>

Less than comparison.
source§

fn lt_eq(&self, rhs: Rhs) -> PolarsResult<BooleanChunked>

Less than or equal comparison
source§

impl ChunkFull<&Series> for ListChunked

source§

fn full(name: &str, value: &Series, length: usize) -> ListChunked

Create a ChunkedArray with a single value.
source§

impl ChunkQuantile<Series> for ListChunked

source§

fn median(&self) -> Option<T>

Returns the mean value in the array. Returns None if the array is empty or only contains null values.
source§

fn quantile( &self, _quantile: f64, _interpol: QuantileInterpolOptions ) -> PolarsResult<Option<T>>

Aggregate a given quantile of the ChunkedArray. Returns None if the array is empty or only contains null values.
source§

impl<T: PolarsObject> ChunkQuantile<Series> for ObjectChunked<T>

Available on crate feature object only.
source§

fn median(&self) -> Option<T>

Returns the mean value in the array. Returns None if the array is empty or only contains null values.
source§

fn quantile( &self, _quantile: f64, _interpol: QuantileInterpolOptions ) -> PolarsResult<Option<T>>

Aggregate a given quantile of the ChunkedArray. Returns None if the array is empty or only contains null values.
source§

impl ChunkVar<Series> for ListChunked

source§

fn var(&self, _ddof: u8) -> Option<T>

Compute the variance of this ChunkedArray/Series.
source§

fn std(&self, _ddof: u8) -> Option<T>

Compute the standard deviation of this ChunkedArray/Series.
source§

impl<T: PolarsObject> ChunkVar<Series> for ObjectChunked<T>

Available on crate feature object only.
source§

fn var(&self, _ddof: u8) -> Option<T>

Compute the variance of this ChunkedArray/Series.
source§

fn std(&self, _ddof: u8) -> Option<T>

Compute the standard deviation of this ChunkedArray/Series.
source§

impl Clone for Series

source§

fn clone(&self) -> Series

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for Series

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Series

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Deref for Series

§

type Target = dyn SeriesTrait + 'static

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl Display for Series

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Div<&Series> for &DataFrame

Available on crate feature dataframe_arithmetic only.
§

type Output = Result<DataFrame, PolarsError>

The resulting type after applying the / operator.
source§

fn div(self, rhs: &Series) -> Self::Output

Performs the / operation. Read more
source§

impl Div<&Series> for &Series

source§

fn div(self, rhs: Self) -> Self::Output

let s: Series = [1, 2, 3].iter().collect();
let out = &s / &s;
§

type Output = Series

The resulting type after applying the / operator.
source§

impl Div<&Series> for DataFrame

Available on crate feature dataframe_arithmetic only.
§

type Output = Result<DataFrame, PolarsError>

The resulting type after applying the / operator.
source§

fn div(self, rhs: &Series) -> Self::Output

Performs the / operation. Read more
source§

impl Div<Series> for Series

§

type Output = Series

The resulting type after applying the / operator.
source§

fn div(self, rhs: Self) -> Self::Output

Performs the / operation. Read more
source§

impl<T> Div<T> for &Serieswhere T: Num + NumCast,

§

type Output = Series

The resulting type after applying the / operator.
source§

fn div(self, rhs: T) -> Self::Output

Performs the / operation. Read more
source§

impl<T> Div<T> for Serieswhere T: Num + NumCast,

§

type Output = Series

The resulting type after applying the / operator.
source§

fn div(self, rhs: T) -> Self::Output

Performs the / operation. Read more
source§

impl<T> From<ChunkedArray<T>> for Serieswhere T: PolarsDataType, ChunkedArray<T>: IntoSeries,

source§

fn from(ca: ChunkedArray<T>) -> Self

Converts to this type from the input type.
source§

impl<'a> FromIterator<&'a bool> for Series

source§

fn from_iter<I: IntoIterator<Item = &'a bool>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl<'a> FromIterator<&'a f32> for Series

source§

fn from_iter<I: IntoIterator<Item = &'a f32>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl<'a> FromIterator<&'a f64> for Series

source§

fn from_iter<I: IntoIterator<Item = &'a f64>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl<'a> FromIterator<&'a i32> for Series

source§

fn from_iter<I: IntoIterator<Item = &'a i32>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl<'a> FromIterator<&'a i64> for Series

source§

fn from_iter<I: IntoIterator<Item = &'a i64>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl<'a> FromIterator<&'a str> for Series

source§

fn from_iter<I: IntoIterator<Item = &'a str>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl<'a> FromIterator<&'a u32> for Series

source§

fn from_iter<I: IntoIterator<Item = &'a u32>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl<'a> FromIterator<&'a u64> for Series

source§

fn from_iter<I: IntoIterator<Item = &'a u64>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<Option<bool>> for Series

source§

fn from_iter<I: IntoIterator<Item = Option<bool>>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<Option<f32>> for Series

source§

fn from_iter<I: IntoIterator<Item = Option<f32>>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<Option<f64>> for Series

source§

fn from_iter<I: IntoIterator<Item = Option<f64>>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<Option<i32>> for Series

source§

fn from_iter<I: IntoIterator<Item = Option<i32>>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<Option<i64>> for Series

source§

fn from_iter<I: IntoIterator<Item = Option<i64>>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<Option<u32>> for Series

source§

fn from_iter<I: IntoIterator<Item = Option<u32>>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<Option<u64>> for Series

source§

fn from_iter<I: IntoIterator<Item = Option<u64>>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<Series> for DataFrame

source§

fn from_iter<T: IntoIterator<Item = Series>>(iter: T) -> Self

Panics

Panics if Series have different lengths.

source§

impl FromIterator<String> for Series

source§

fn from_iter<I: IntoIterator<Item = String>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<bool> for Series

source§

fn from_iter<I: IntoIterator<Item = bool>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<f32> for Series

source§

fn from_iter<I: IntoIterator<Item = f32>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<f64> for Series

source§

fn from_iter<I: IntoIterator<Item = f64>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<i32> for Series

source§

fn from_iter<I: IntoIterator<Item = i32>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<i64> for Series

source§

fn from_iter<I: IntoIterator<Item = i64>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<u32> for Series

source§

fn from_iter<I: IntoIterator<Item = u32>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromIterator<u64> for Series

source§

fn from_iter<I: IntoIterator<Item = u64>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl IntoSeries for Series

source§

impl Mul<&Series> for &DataFrame

Available on crate feature dataframe_arithmetic only.
§

type Output = Result<DataFrame, PolarsError>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Series) -> Self::Output

Performs the * operation. Read more
source§

impl Mul<&Series> for &Series

source§

fn mul(self, rhs: Self) -> Self::Output

let s: Series = [1, 2, 3].iter().collect();
let out = &s * &s;
§

type Output = Series

The resulting type after applying the * operator.
source§

impl Mul<&Series> for DataFrame

Available on crate feature dataframe_arithmetic only.
§

type Output = Result<DataFrame, PolarsError>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Series) -> Self::Output

Performs the * operation. Read more
source§

impl Mul<Series> for Series

§

type Output = Series

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self::Output

Performs the * operation. Read more
source§

impl<T> Mul<T> for &Serieswhere T: Num + NumCast,

§

type Output = Series

The resulting type after applying the * operator.
source§

fn mul(self, rhs: T) -> Self::Output

Performs the * operation. Read more
source§

impl<T> Mul<T> for Serieswhere T: Num + NumCast,

§

type Output = Series

The resulting type after applying the * operator.
source§

fn mul(self, rhs: T) -> Self::Output

Performs the * operation. Read more
source§

impl NamedFrom<&Series, str> for Series

source§

fn new(name: &str, s: &Series) -> Self

Initialize by name and values.
source§

impl NamedFrom<Range<i32>, Int32Type> for Series

source§

fn new(name: &str, range: Range<i32>) -> Self

Initialize by name and values.
source§

impl NamedFrom<Range<i64>, Int64Type> for Series

source§

fn new(name: &str, range: Range<i64>) -> Self

Initialize by name and values.
source§

impl NamedFrom<Range<u32>, UInt32Type> for Series

source§

fn new(name: &str, range: Range<u32>) -> Self

Initialize by name and values.
source§

impl NamedFrom<Range<u64>, UInt64Type> for Series

source§

fn new(name: &str, range: Range<u64>) -> Self

Initialize by name and values.
source§

impl<'a, T: AsRef<[&'a [u8]]>> NamedFrom<T, [&'a [u8]]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<'a, T: AsRef<[&'a str]>> NamedFrom<T, [&'a str]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<'a, T: AsRef<[AnyValue<'a>]>> NamedFrom<T, [AnyValue<'a>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<'a, T: AsRef<[Cow<'a, [u8]>]>> NamedFrom<T, [Cow<'a, [u8]>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<'a, T: AsRef<[Cow<'a, str>]>> NamedFrom<T, [Cow<'a, str>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<'a, T: AsRef<[Option<&'a [u8]>]>> NamedFrom<T, [Option<&'a [u8]>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<'a, T: AsRef<[Option<&'a str>]>> NamedFrom<T, [Option<&'a str>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<'a, T: AsRef<[Option<Cow<'a, [u8]>>]>> NamedFrom<T, [Option<Cow<'a, [u8]>>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<'a, T: AsRef<[Option<Cow<'a, str>>]>> NamedFrom<T, [Option<Cow<'a, str>>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Option<Series>]>> NamedFrom<T, [Option<Series>]> for Series

source§

fn new(name: &str, s: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Option<String>]>> NamedFrom<T, [Option<String>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Option<Vec<u8>>]>> NamedFrom<T, [Option<Vec<u8, Global>>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Option<bool>]>> NamedFrom<T, [Option<bool>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Option<f32>]>> NamedFrom<T, [Option<f32>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Option<f64>]>> NamedFrom<T, [Option<f64>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Option<i32>]>> NamedFrom<T, [Option<i32>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Option<i64>]>> NamedFrom<T, [Option<i64>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Option<u32>]>> NamedFrom<T, [Option<u32>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Option<u64>]>> NamedFrom<T, [Option<u64>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[String]>> NamedFrom<T, [String]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Vec<u8>]>> NamedFrom<T, [Vec<u8, Global>]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[bool]>> NamedFrom<T, [bool]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[f32]>> NamedFrom<T, [f32]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[f64]>> NamedFrom<T, [f64]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[i32]>> NamedFrom<T, [i32]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[i64]>> NamedFrom<T, [i64]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[u32]>> NamedFrom<T, [u32]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[u64]>> NamedFrom<T, [u64]> for Series

source§

fn new(name: &str, v: T) -> Self

Initialize by name and values.
source§

impl<T: AsRef<[Series]>> NamedFrom<T, ListType> for Series

source§

fn new(name: &str, s: T) -> Self

Initialize by name and values.
source§

impl<T: IntoSeries> NamedFrom<T, T> for Series

For any ChunkedArray and Series

source§

fn new(name: &str, t: T) -> Self

Initialize by name and values.
source§

impl NamedFromOwned<Vec<f32, Global>> for Series

source§

fn from_vec(name: &str, v: Vec<f32>) -> Self

Initialize by name and values.
source§

impl NamedFromOwned<Vec<f64, Global>> for Series

source§

fn from_vec(name: &str, v: Vec<f64>) -> Self

Initialize by name and values.
source§

impl NamedFromOwned<Vec<i32, Global>> for Series

source§

fn from_vec(name: &str, v: Vec<i32>) -> Self

Initialize by name and values.
source§

impl NamedFromOwned<Vec<i64, Global>> for Series

source§

fn from_vec(name: &str, v: Vec<i64>) -> Self

Initialize by name and values.
source§

impl NamedFromOwned<Vec<u32, Global>> for Series

source§

fn from_vec(name: &str, v: Vec<u32>) -> Self

Initialize by name and values.
source§

impl NamedFromOwned<Vec<u64, Global>> for Series

source§

fn from_vec(name: &str, v: Vec<u64>) -> Self

Initialize by name and values.
source§

impl NumOpsDispatchChecked for Series

Available on crate feature checked_arithmetic only.
source§

fn checked_div(&self, rhs: &Series) -> PolarsResult<Series>

Checked integer division. Computes self / rhs, returning None if rhs == 0 or the division results in overflow.
source§

fn checked_div_num<T: ToPrimitive>(&self, rhs: T) -> PolarsResult<Series>

source§

impl PartialEq<Series> for Series

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Rem<&Series> for &DataFrame

Available on crate feature dataframe_arithmetic only.
§

type Output = Result<DataFrame, PolarsError>

The resulting type after applying the % operator.
source§

fn rem(self, rhs: &Series) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<&Series> for &Series

source§

fn rem(self, rhs: Self) -> Self::Output

let s: Series = [1, 2, 3].iter().collect();
let out = &s / &s;
§

type Output = Series

The resulting type after applying the % operator.
source§

impl Rem<&Series> for DataFrame

Available on crate feature dataframe_arithmetic only.
§

type Output = Result<DataFrame, PolarsError>

The resulting type after applying the % operator.
source§

fn rem(self, rhs: &Series) -> Self::Output

Performs the % operation. Read more
source§

impl<T> Rem<T> for &Serieswhere T: Num + NumCast,

§

type Output = Series

The resulting type after applying the % operator.
source§

fn rem(self, rhs: T) -> Self::Output

Performs the % operation. Read more
source§

impl<T> Rem<T> for Serieswhere T: Num + NumCast,

§

type Output = Series

The resulting type after applying the % operator.
source§

fn rem(self, rhs: T) -> Self::Output

Performs the % operation. Read more
source§

impl Sub<&Series> for &DataFrame

Available on crate feature dataframe_arithmetic only.
§

type Output = Result<DataFrame, PolarsError>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Series) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<&Series> for &Series

§

type Output = Series

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<&Series> for DataFrame

Available on crate feature dataframe_arithmetic only.
§

type Output = Result<DataFrame, PolarsError>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Series) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<Series> for Series

§

type Output = Series

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl<T> Sub<T> for &Serieswhere T: Num + NumCast,

§

type Output = Series

The resulting type after applying the - operator.
source§

fn sub(self, rhs: T) -> Self::Output

Performs the - operation. Read more
source§

impl<T> Sub<T> for Serieswhere T: Num + NumCast,

§

type Output = Series

The resulting type after applying the - operator.
source§

fn sub(self, rhs: T) -> Self::Output

Performs the - operation. Read more
source§

impl TryFrom<(&str, Box<dyn Array + 'static, Global>)> for Series

§

type Error = PolarsError

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

fn try_from(name_arr: (&str, ArrayRef)) -> PolarsResult<Self>

Performs the conversion.
source§

impl TryFrom<(&str, Vec<Box<dyn Array + 'static, Global>, Global>)> for Series

§

type Error = PolarsError

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

fn try_from(name_arr: (&str, Vec<ArrayRef>)) -> PolarsResult<Self>

Performs the conversion.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Series

§

impl Send for Series

§

impl Sync for Series

§

impl Unpin for Series

§

impl !UnwindSafe for Series

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> DynClone for Twhere 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.

source§

impl<T, U> Into<U> for Twhere 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

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
source§

impl<T> ToOwned for Twhere T: Clone,

§

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> ToString for Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

type Error = Infallible

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 Twhere U: TryFrom<T>,

§

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<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T, Rhs, Output> NumOps<Rhs, Output> for Twhere T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>,