Narwhals v1.23.0
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_order
inExpr.unique
andLazyFrame.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_interchange
fromfrom_native
in main namespace, switch Ibis' support from interchange to lazy in main namespace (but preserve status-quo in stable.v1) (#1829) - feat: add
is_nan
andis_finite
for duckdb,is_nan
for 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.dt
methods toPySpark
(#1835) - feat: add pyspark str namespace
to_datetime
(#1826) - feat: add total duration methods for DuckDB (#1831)
- feat: add
.over
method forSparkLikeExpr
(#1808) - feat: pyspark group by
n_unique
and no aggregation (#1819) - feat: Disallow order-dependent expressions from being passed to nw.LazyFrame (#1806)
- feat: add
SparkExpr.cast
for basic types (#1812) - feat: pyspark and duckdb
Expr.name
namespace (#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
DataFrame
andSeries
to_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_issubclass
to allow tuples (#1820)
Thank you to all our contributors for making this release possible!
@Dhanunjaya-Elluri, @EdAbati, @FBruzzesi, @MarcoGorelli, @luke396, @marvinl803 and @raisadz