⚠️ Deprecations
- Rename
dtypes
parameter toschema_overrides
forread_csv
/scan_csv
/read_csv_batched
(#16628) - Deprecate
nulls_last
/maintain_order
/multithreaded
parameters fortop_k
methods (#16597) - Rename
SQLContext
"eager_execution" param to "eager" (#16595) - Rename
Series.equals
parameterstrict
tocheck_dtypes
and rename assertion utils parametercheck_dtype
tocheck_dtypes
(#16573) - Add
DataFrame.serialize/deserialize
(#16545) - Deprecate
str.explode
in favor ofstr.split("").explode()
(#16508) - Deprecate default coalesce behavior of left join (#16532)
🚀 Performance improvements
- make truncate 4x faster in simple cases (#16615)
- Cache arena's (and conversion) in SQL context (#16566)
- Partial schema cache. (#16549)
✨ Enhancements
- Support per-column
nulls_last
on sort operations (#16639) - Initial support for SQL
ARRAY
literals and theUNNEST
table function (#16330) - Don't allow
struct.with_fields
in grouping (#16629) - improve support for user-defined functions that return scalars (#16556)
- Add SQL support for
TRY_CAST
function (#16589) - Add top-level
pl.sql
function (#16528) - Expose temporal function expression ops to expr ir (#16546)
- Add
DataFrame.serialize/deserialize
(#16545) - check if by column is sorted, rather than just checking sorted flag, in
group_by_dynamic
,upsample
, androlling
(#16494)
🐞 Bug fixes
- Potentially deal with empty range (#16650)
- Use of SQL
ORDER BY
should not cause reordering ofSELECT
cols (#16579) - ensure df in empty parquet (#16621)
- Fix Array constructor when inner type is another Array (#16622)
- Fix parsing of
shape
inArray
constructor and deprecatewidth
parameter (#16567) - Crash using empty
Series
inLazyFrame.select()
(#16592) - improve support for user-defined functions that return scalars (#16556)
- Resolve multiple SQL
JOIN
issues (#16507) - Project last column if count query (#16569)
- Properly split struct columns (#16563)
- Ensure strict chunking in chunked partitioned group by (#16561)
- Error selecting columns after non-coalesced join (multiple join keys) (#16559)
- Don't panic on hashing nested list types (#16555)
- Crash selecting columns after non-coalesced join (#16541)
- Fix group gather of single literal (#16539)
- throw an invalid operation exception on performing a
sum
over alist
ofstr
s (#16521) - Fix
DataFrame.__getitem__
for empty list input -df[[]]
(#16520) - Fix issue in
DataFrame.__getitem__
with 2 column inputs (#16517)
📖 Documentation
- Overview of available SQL functions (#16268)
- Update filter description to clarify that null evaluations are removed (#16632)
- Include warning in docstrings that accessing
LazyFrame
properties may be expensive (#16618) - Add a few
versionadded
tags, and addis_column_selection
to the Expr meta docs (#16590) - Fix bullet points not rendering correctly in
DataFrame.join
docstring (#16576) - Remove erroneous
implode
reference from the user guide section on window functions (#16544)
📦 Build system
- Run
cargo update
(#16574)
🛠️ Other improvements
- Add test for 16642 (#16646)
- Remove duplicate tag in CODEOWNERS (#16625)
- Update dprint hook versions and enable JSON linting (#16611)
- Fewer
typing.no_type_check
(#16497)
Thank you to all our contributors for making this release possible!
@MarcoGorelli, @alexander-beedie, @coastalwhite, @hattajr, @itamarst, @mcrumiller, @nameexhaustion, @r-brink, @ritchie46, @stinodego, @twoertwein and @wence-