Changes
🚀 Performance improvements
- perf: Avoid getting columns to read dtypes, route bare selectors through
simple_select(#3875) - perf: Speedup pandas-like
is_finite,sqrt,kurtosisandskew(#3874)
✨ Enhancements
- feat: Improve error message on unsupported length-changing methods (#3903)
🐞 Bug fixes
- fix(pyarrow):
strip_charswith empty characters no longer strips whitespace (#3925) - ci: fix downstream pins for pointblank (#3922)
- fix: use
dtype.categoriesforpl.Enuminget_categories(#3924) - fix(typing): Stableify selectors (#3904)
- fix(typing): Stableify
concatwith the stable frame classes (#3908) - fix(pyarrow):
shiftpreserves length whennexceeds the series length (#3920) - fix(pyarrow): keep nulls through clip instead of replacing them with a bound (#3906)
- fix: Deprecate
cat.get_categoriesand stop relying on Polars' removed method (#3902) - fix: inplace deprecation warning from pandas in
hist(#3907) - fix(test): xfail polars v2 for
is_inand__contains__tests (#3901) - fix(test): Fix interchange and concat tests (#3896)
- fix:
str.slice(..., length=0)returns empty string on pandas and dask (#3891)
📖 Documentation
🛠️ Other improvements
- chore: prek autoupdate (#3928)
- chore: prek autoupdate (#3894)
- chore(typing): Remove redundant
{cast,bool,str}calls (#3905) - test: xfail
test_unique_exprfor duckdb 1.6+ (#3899) - chore: remove unnecessary import (#3881)
- refactor(typing): use
closed=Truein someTypedDicts (#3800) - test: add simple test to measure Narwhals vs pandas overhead (#3873)
- chore: prek autoupdate (#3876)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @heyilingran, @MarcoGorelli, @ptimizeroracle, @winklemad, @github-actions[bot], @dangotbanned, @EdAbati and ptimizeroracle