🚀 Performance improvements
- use streaming instead of partitioned groupby (#7907)
- don't auto-stream groupby (#7906)
- rechunk before aggs (#7903)
- don't re-allocate groups in sorted to_dummies (#7897)
- fix hashing regression (#7833)
- rechunk dataframe before unique computation (#7814)
- improve hash quality (#7813)
- always take sorted fast path group_tuples (#7787)
✨ Enhancements
- auto-infer detecting time-zone-awareness of fmt argument in strptime; deprecate tz_aware argument (#7886)
- Add
Series.pow()
(#7898) - deal with null values in cut/qcut (#7878)
- allow list/tuple
lit
values (#7879) - Support writing dynamic/live formula columns via
write_excel
(#7871) - support datetime/date subclasses (e.g. FreezeGun) (#7819)
- support mode for floats and categoricals (#7827)
- allow Series init with
Unknown
dtype to proceed as if dtype isNone
, to allow inference (#7830) - support sort by 'struct' type (#7822)
- add
to_repr
methods to DataFrame and Series (#7802) - thousand separators in shape of repr
DataFrame
(#7775) - Improve automatic output dtype setting for
map_dict
. (#7797) - new utility
from_repr
function that reconstructs a DataFrame from its table repr (#7781) - deprecate default value of
aggregation_function
being'first'
inpivot
. In a future version, it will default toNone
(#7784)
🐞 Bug fixes
- fix lit agg (#7904)
- disable ooc groupby (#7901)
- Use
check_exact
for temporal types inassert_series_equal
(#7896) - fix abs logical type (#7895)
- fix boolean min/max output type and null handling (#7894)
- Cast compound types to their simple string representation on export to Excel (#7887)
- ensure
_repr_html_
escapes column names in addition to data/body elements (#7877) - validate groupby_dynamic inputs (#7876)
- correct for chunks in arg_where (#7873)
- fix nested logical/physical list (#7872)
- fix arbitrary nested logical types (#7869)
- Relax type hints for when/then (#7857)
- don't use fxhash in sink_sorted fast path (#7849)
- parquet stats & all kernel (#7846)
- Add missing type hint for
is_between
(#7835) - fill null list (#7836)
- fix explode list[null] (#7832)
- fix unicode lower/uppercase (#7826)
- raise error on invalid series concat strategy (#7823)
- don't use naive name in partitioned agg (#7810)
- Ensure CsvReader always respects the n_rows parameter (#7789)
🛠️ Other improvements
- Fix read_csv docstring formatting (#7875)
- update concat docstring for how parameter (#7834)
- don't run hash stability test on arm64 (#7825)
- Improve pl.when documentation (#7793)
- add description of ddof (#7811)
- Rename
venv
folder to.venv
(#7790) - add a
make requirements
option to install/refresh dependencies without having to recreate thevenv
(#7792) - fixup stacklevels (#7796)
- Drop
ruff
target version (#7791)
Thank you to all our contributors for making this release possible!
@LdRoW, @MarcoGorelli, @Newtoniano, @advoet, @alexander-beedie, @duskmoon314, @foxcroftjn, @ghuls, @jonashaag, @ritchie46, @stinodego and @zundertj