You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Utah is a Rust crate backed by ndarray for type-conscious, tabular data manipulation with an expressive, functional interface.
Note: This crate works on stable. However, if you are working with dataframes with f64 data, use nightly, because you will get the performance benefits of specialization.
API currently in development and subject to change.
For an in-depth introduction to the mechanics of this crate, as well as future goals, read this blog post.
use utah::prelude::*;let df = DataFrame<f64> = dataframe!({"a" => col!([2.,3.,2.]),"b" => col!([2.,NAN,2.])});let a = arr2(&[[2.0,7.0],[3.0,4.0]]);let df :Result<DataFrame<f64>> = DataFrame::new(a).index(&["1","2"]);
Transform the dataframe
use utah::prelude::*;let df:DataFrame<f64> = DataFrame::read_csv("test.csv").unwrap();let res :DataFrame<f64> = df.remove(&["a","c"],UtahAxis::Column).as_df()?;
Chain operations
use utah::prelude::*;let df:DataFrame<f64> = DataFrame::read_csv("test.csv").unwrap();let res :DataFrame<f64> = df.df_iter(UtahAxis::Row).remove(&["1"]).select(&["2"]).append("8", new_data.view()).sumdf().as_df()?;
Support mixed types
use utah::prelude::*;let a = DataFrame<InnerType> = dataframe!({"name" => col!([InnerType::Str("Alice"),InnerType::Str("Bob"),InnerType::Str("Jane")]),"data" => col!([InnerType::Float(2.0),InnerType::Empty(),InnerType::Float(3.0)])});let b:DataFrame<InnerType> = DataFrame::read_csv("test.csv").unwrap();let res :DataFrame<InnerType> = a.concat(&b).as_df()?;