Changes
- ci: downstream test for formulaic (#1817)
- docs: Removed class, added polars to the table, str.head and str.tail are a… (#1801)
✨ Enhancements
- feat: deprecate
maintain_orderinExpr.uniqueandLazyFrame.tail(but keep around instable.v1) (#1839) - feat: track whether expressions change length but don't aggregate, and only allow length-changing expressions if they're followed by aggregations in the lazy API (#1828)
- feat: add DuckDB: nw.nth, nw.sum_horizontal, nw.concat_str, group_by with drop_null_keys (#1832)
- feat: remove
eager_or_interchangefromfrom_nativein main namespace, switch Ibis' support from interchange to lazy in main namespace (but preserve status-quo in stable.v1) (#1829) - feat: add
is_nanandis_finitefor duckdb,is_nanfor pyspark (#1825) - chore: rename time zone tests (#1830)
- feat: Deprecate Expr.arg_true (but keep Series.arg_true, and keep both available in stable.v1) (#1827)
- feat: add
Expr.dtmethods toPySpark(#1835) - feat: add pyspark str namespace
to_datetime(#1826) - feat: add total duration methods for DuckDB (#1831)
- feat: add
.overmethod forSparkLikeExpr(#1808) - feat: pyspark group by
n_uniqueand no aggregation (#1819) - feat: Disallow order-dependent expressions from being passed to nw.LazyFrame (#1806)
- feat: add
SparkExpr.castfor basic types (#1812) - feat: pyspark and duckdb
Expr.namenamespace (#1809) - feat: add
AnonymousExprError(#1816) - feat: deprecate Expr.head, Expr.tail, Expr.sort, Expr.gather_every, Expr.sample (but keep them in stable.v1) (#1791)
- feat: add duckdb dataframe
drop_nulls(#1811) - feat: add
DataFrameandSeriesto_polars(#1803) - feat: add support for
SparkLikeNamespace.when(#1805)
🐞 Bug fixes
- fix: when/then/otherwise output name was not consistent across backends (#1833)
- fix: raise on shape mismatch in filter (#1814)
- patch: fix when-then double lit case (#1810)
🛠️ Other improvements
- chore: simplify imports (#1838)
- test: fixup test suite for cudf.pandas (#1837)
- test: decouple pyspark constructor from pandas (#1834)
- chore: refactor pandas-like
narwhals_to_native_dtype(#1824) - chore: refactor
isinstance_or_issubclassto allow tuples (#1820)
Thank you to all our contributors for making this release possible!
@Dhanunjaya-Elluri, @EdAbati, @FBruzzesi, @MarcoGorelli, @luke396, @marvinl803 and @raisadz