π Highlights
- drop Python 3.7 support (#9679)
π Performance improvements
- optimize n_unique for integers (#9568)
- remove sort columns on multiple-key OOC sort (#9545)
- don't needlessly trigger bitcount (#9561)
- optimize
_datetime_to_pl_timestamp
(#9533)
β¨ Enhancements
- Improve cut and allow use in expressions (#9580)
- clearer message when stringcache-related errors occur (#9715)
- improve expression formatting (#9704)
- set string cache in window functions (#9705)
- raise on both sides of datetime/str comparison (#9692)
- support deserializing struct json into df (#9688)
- add tree formatter for expressions (#9684)
- streamline
adbc
connectivity, adding snowflake support (#9600)
- improve
selector
utility functions with better docstrings/examples (#9683)
- add
.list.any()
and .list.all()
(#9573)
- extend dtype/selector matching for
Datetime
with a "*" wildcard for timezones (#9641)
- add symmetric difference to list set operations (#9655)
- Pass through stdin/stderr buffer in to_csv (#9624)
- add dt.base_utc_offset (#9636)
- add dt.dst_offset feature (#9629)
- allow to specify index order in
to_numpy
(#9592)
- accept expressions in
repeat
(#9614)
- set operations for list (#9599)
- make LazyFrame.map pickle (#9597)
- add a new
rows_by_key
method, returning a keyed-dictionary of row data (#9567)
- implement apply object -> struct (#9578)
π Bug fixes
- don't clear rev_map when categorical series is cle⦠(#9720)
- fix(rust, python) improve glob pattern testing (#9721)
- don't run hstack checks when using cached names (#9709)
- fix result dtype in date_range(..., eager=True) if duration contains "1s1d" (#9670)
- increment seed between samples (#9694)
- fix cse_plan invalid projection removal (#9700)
- fix ne_missing for booleans vs lit (#9693)
- raise if to_datetime would have parsed input incorrectly (#9675)
- respect time_zone in lazy date_range (#8591)
- Align dependency versions (#9661)
- redo weighted rolling var (#9609)
- Correct weighted rolling quantile definition (#9608)
- clear hashes buffer in generic streaming joins (#9612)
- stable list namespace ouput when all elements are β¦ (#9610)
- address schema edge-case with scalar-expanded data that resolves to an empty frame (#9593)
- handle dictionary init with unsized iterators that also hits the scalar-expansion fast path (#9594)
- validate time zone in cast and from_arrow operations (#9598)
- ensure
from_dicts
drops columns explicitly omitted from schema (#9581)
- fix join suffix collision (#9579)
- fix sum consistency (#9576)
- fix take of array dtype (#9575)
- fix predicate pushdown case before sort (#9574)
- fix lazy schema of temporal_range functions when no alias is provided (#9543)
- fix join validation when swapped (#9534)
π οΈ Other improvements
- More cleanup for
arange
(#9681)
- Fix some more type hints (#9716)
- Added trivial examples for the aggregation of columns in groupby (#9708)
- Fix some type hints (#9695)
- additional ADBC examples and docstring information for
read_database
(inc snowflake) (#9686)
- drop Python 3.7 support (#9679)
- improve
selector
utility functions with better docstrings/examples (#9683)
- refactor
arange
and add int_range
/int_ranges
(#9666)
- Clarify Dataframe.corr operates on columns (#9678)
- remove false "eager=True" from date_range tests (#9663)
- Add examples to .merge_sorted (#9664)
- bump maturin from 1.0.1 to 1.1.0 in /py-polars (#9646)
- remove deprecation warning of already-enforced valid timezones change (#9639)
- fix failing ci test (#9638)
- fix inconsistency in
.list.difference()
example (#9615)
- Clean up doctests for rolling (#9626)
- fix faulty test of
to_numpy
(#9619)
- examples for
.list.union()
, .list.difference()
, .list.intersection()
(#9602)
- fix see also broken links (#9607)
- clarify sortedness condition of groupby_dynamic and groupby_rolling (#9606)
- clean up inconsistencies in duration string language (#9551)
- Adding examples to binary functions (#9553)
- Minor cleanup of
arange
(#9544)
- Remove outdated badges from README (#9532)
Thank you to all our contributors for making this release possible!
@MarcoGorelli, @alexander-beedie, @borchero, @datapythonista, @dependabot, @dependabot[bot], @eitsupi, @guanqun, @jeroenjanssens, @jorisSchaller, @kljensen, @magarick, @mcrumiller, @messense, @mishpat, @moritzwilksch, @ritchie46, @stinodego, @ttencate, @universalmind303 and @zundertj