diff --git a/.gitignore b/.gitignore index 5dcd94921..1ddcc9d7f 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ bin/ .vscode *.node docs/ -run.js \ No newline at end of file +run.js +.yarn/install-state.gz \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index 4937efd8f..9e7f61de5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ ahash = "0.7" bincode = "1.3" napi = { version = "2.2.0", default-features = false, features = ["napi8", "serde-json", "experimental"] } napi-derive = { version = "2.2.0", default-features = false } -polars-core = { git = "https://github.com/pola-rs/polars.git", rev = "95074d91cfa0248a86722fbae572952425ae43cb", default-features = false } +polars-core = { git = "https://github.com/pola-rs/polars.git", rev = "9b3560471b7dae1ef295172bd1c78635d3c773a9", default-features = false } thiserror = "1.0.20" serde_json = { version = "1" } @@ -88,7 +88,7 @@ features = [ "arg_where", ] git = "https://github.com/pola-rs/polars.git" -rev = "95074d91cfa0248a86722fbae572952425ae43cb" +rev = "9b3560471b7dae1ef295172bd1c78635d3c773a9" [build-dependencies] napi-build = "1.2.1" diff --git a/__tests__/expr.test.ts b/__tests__/expr.test.ts index 739587684..4a6e71ba1 100644 --- a/__tests__/expr.test.ts +++ b/__tests__/expr.test.ts @@ -707,7 +707,7 @@ describe("expr", () => { const df = pl.DataFrame({ a: [1, 2, 3, 3] }); const expected = pl.DataFrame({ "skew:bias=true": ["-0.49338220021815865"], - "skew:bias=false": ["-0.8545630383279711"], + "skew:bias=false": ["-0.8545630383279712"], }); const actual = df.select( col("a") @@ -1574,7 +1574,7 @@ describe("expr.dt", () => { hour: pl.Series("", [1], pl.UInt32), day: pl.Series("", [8], pl.UInt32), ordinalDay: pl.Series("", [8], pl.UInt32), - weekday: pl.Series("", [7], pl.UInt32), + weekday: pl.Series("", [6], pl.UInt32), week: pl.Series("", [1], pl.UInt32), month: pl.Series("", [1], pl.UInt32), year: pl.Series("", [1984], pl.Int32), diff --git a/src/dataframe.rs b/src/dataframe.rs index b56ca5840..fac9dae5e 100644 --- a/src/dataframe.rs +++ b/src/dataframe.rs @@ -971,12 +971,14 @@ impl JsDataFrame { self.df.mean().into() } #[napi] - pub fn std(&self) -> JsDataFrame { - self.df.std().into() + pub fn std(&self, ddof: Option) -> JsDataFrame { + let ddof = ddof.unwrap_or(1); + self.df.std(ddof).into() } #[napi] - pub fn var(&self) -> JsDataFrame { - self.df.var().into() + pub fn var(&self, ddof: Option) -> JsDataFrame { + let ddof = ddof.unwrap_or(1); + self.df.var(ddof).into() } #[napi] pub fn median(&self) -> JsDataFrame { @@ -1493,8 +1495,6 @@ fn finish_groupby(gb: GroupBy, agg: &str) -> napi::Result { "median" => gb.median(), "agg_list" => gb.agg_list(), "groups" => gb.groups(), - "std" => gb.std(), - "var" => gb.var(), a => Err(PolarsError::ComputeError( format!("agg fn {} does not exists", a).into(), )), diff --git a/src/lazy/dataframe.rs b/src/lazy/dataframe.rs index 34df6b73f..abedf47f9 100644 --- a/src/lazy/dataframe.rs +++ b/src/lazy/dataframe.rs @@ -427,15 +427,17 @@ impl JsLazyFrame { } #[napi] - pub fn std(&self) -> JsLazyFrame { + pub fn std(&self, ddof: Option) -> JsLazyFrame { + let ddof = ddof.unwrap_or(1); let ldf = self.ldf.clone(); - ldf.std().into() + ldf.std(ddof).into() } #[napi] - pub fn var(&self) -> JsLazyFrame { + pub fn var(&self, ddof: Option) -> JsLazyFrame { + let ddof = ddof.unwrap_or(1); let ldf = self.ldf.clone(); - ldf.var().into() + ldf.var(ddof).into() } #[napi] @@ -650,6 +652,7 @@ pub struct ScanIPCOptions { pub cache: Option, pub rechunk: Option, pub row_count: Option, + pub memmap: Option, } #[napi] @@ -657,12 +660,14 @@ pub fn scan_ipc(path: String, options: ScanIPCOptions) -> napi::Result = options.row_count.map(|rc| rc.into()); let args = ScanArgsIpc { n_rows, cache, rechunk, row_count, + memmap }; let lf = LazyFrame::scan_ipc(path, args).map_err(JsPolarsErr::from)?; Ok(lf.into()) diff --git a/src/lazy/dsl.rs b/src/lazy/dsl.rs index ff5a12791..a91d2c7ed 100644 --- a/src/lazy/dsl.rs +++ b/src/lazy/dsl.rs @@ -391,13 +391,15 @@ impl JsExpr { } #[napi] - pub fn std(&self) -> JsExpr { - self.clone().inner.std().into() + pub fn std(&self, ddof: Option) -> JsExpr { + let ddof = ddof.unwrap_or(1); + self.clone().inner.std(ddof).into() } #[napi] - pub fn var(&self) -> JsExpr { - self.clone().inner.var().into() + pub fn var(&self, ddof: Option) -> JsExpr { + let ddof = ddof.unwrap_or(1); + self.clone().inner.var(ddof).into() } #[napi] pub fn is_unique(&self) -> JsExpr { @@ -1406,13 +1408,15 @@ pub fn arange(low: Wrap, high: Wrap, step: Option) -> JsExpr { } #[napi] -pub fn pearson_corr(a: Wrap, b: Wrap) -> JsExpr { - polars::lazy::dsl::pearson_corr(a.0, b.0).into() +pub fn pearson_corr(a: Wrap, b: Wrap, ddof: Option) -> JsExpr { + let ddof = ddof.unwrap_or(1); + polars::lazy::dsl::pearson_corr(a.0, b.0, ddof).into() } #[napi] -pub fn spearman_rank_corr(a: Wrap, b: Wrap) -> JsExpr { - polars::lazy::dsl::spearman_rank_corr(a.0, b.0).into() +pub fn spearman_rank_corr(a: Wrap, b: Wrap, ddof: Option) -> JsExpr { + let ddof = ddof.unwrap_or(1); + polars::lazy::dsl::spearman_rank_corr(a.0, b.0, ddof).into() } #[napi]