Trait UnpivotDF

Source
pub trait UnpivotDF: IntoDf {
    // Provided methods
    fn unpivot<I, J>(&self, on: I, index: J) -> Result<DataFrame, PolarsError>
       where I: IntoVec<PlSmallStr>,
             J: IntoVec<PlSmallStr> { ... }
    fn unpivot2(&self, args: UnpivotArgsIR) -> Result<DataFrame, PolarsError> { ... }
}

Provided Methods§

Source

fn unpivot<I, J>(&self, on: I, index: J) -> Result<DataFrame, PolarsError>

Unpivot a DataFrame from wide to long format.

§Example
§Arguments
  • on - String slice that represent the columns to use as value variables.
  • index - String slice that represent the columns to use as id variables.

If on is empty all columns that are not in index will be used.

let df = df!("A" => &["a", "b", "a"],
             "B" => &[1, 3, 5],
             "C" => &[10, 11, 12],
             "D" => &[2, 4, 6]
    )?;

let unpivoted = df.unpivot(&["A", "B"], &["C", "D"])?;
println!("{:?}", df);
println!("{:?}", unpivoted);

Outputs:

 +-----+-----+-----+-----+
 | A   | B   | C   | D   |
 | --- | --- | --- | --- |
 | str | i32 | i32 | i32 |
 +=====+=====+=====+=====+
 | "a" | 1   | 10  | 2   |
 +-----+-----+-----+-----+
 | "b" | 3   | 11  | 4   |
 +-----+-----+-----+-----+
 | "a" | 5   | 12  | 6   |
 +-----+-----+-----+-----+

 +-----+-----+----------+-------+
 | A   | B   | variable | value |
 | --- | --- | ---      | ---   |
 | str | i32 | str      | i32   |
 +=====+=====+==========+=======+
 | "a" | 1   | "C"      | 10    |
 +-----+-----+----------+-------+
 | "b" | 3   | "C"      | 11    |
 +-----+-----+----------+-------+
 | "a" | 5   | "C"      | 12    |
 +-----+-----+----------+-------+
 | "a" | 1   | "D"      | 2     |
 +-----+-----+----------+-------+
 | "b" | 3   | "D"      | 4     |
 +-----+-----+----------+-------+
 | "a" | 5   | "D"      | 6     |
 +-----+-----+----------+-------+
Source

fn unpivot2(&self, args: UnpivotArgsIR) -> Result<DataFrame, PolarsError>

Similar to unpivot, but without generics. This may be easier if you want to pass an empty index or empty on.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§