Dataframes powered by a multithreaded, vectorized query engine, written in Rust
sql
method for DataFrame and LazyFrame (#15783)to_datetime
(#15826)slope
in interpolate
(#15819)dt.round
(#15861)is_not_nan
(#15889)read_excel
when using "calamine" engine (#15827)storage_options
dict (take a shallow-copy) (#15859)shrink_dtype
as non-streaming (#15828)ruff
version and improve make clean
on the Python side (#15858)rust-toolchain.toml
from wheels (#15840)import_optional
utility function (#15906)Thank you to all our contributors for making this release possible! @JulianCologne, @MarcoGorelli, @NedJWestern, @NexVeridian, @alexander-beedie, @deanm0000, @dependabot, @dependabot[bot], @ion-elgreco, @itamarst, @jr200, @nameexhaustion, @orlp, @reswqa, @ritchie46 and @stinodego
read_excel
and read_ods
, use calamine engine for read_ods
(#15808)read_database
(#15809)read_excel
and read_ods
, use calamine engine for read_ods
(#15808)dt.truncate
supports broadcasting lhs (#15768)str.json_path_match
(#15764)storage_options
is passed to read_csv but fsspec
isnt available (#15778)LazyFrame
conversion errors (#15761)lit
(#15718)read_parquet
(#15770)is_between
pushdown to scan_pyarrow_dataset
(#15769)ewm_mean_by
(#15687)prepare_expression_for_context
shouldn't panic if exceptions raised from optimizer (#15681)Config.set_tbl_width_chars
(#15566)Series/Expr.dt.truncate/round
(#15698)json_path_match
expr non-anonymous (#15682)Thank you to all our contributors for making this release possible! @MarcoGorelli, @NedJWestern, @Robinsane, @TobiasDummschat, @alexander-beedie, @c-peters, @dependabot, @dependabot[bot], @gasmith, @henryharbeck, @itamarst, @kszlim, @mbuhidar, @nameexhaustion, @orlp, @reswqa, @ritchie46, @stinodego and @wsyxbcl
ewm_mean_by
(#15687)prepare_expression_for_context
shouldn't panic if exceptions raised from optimizer (#15681)json_path_match
expr non-anonymous (#15682)Thank you to all our contributors for making this release possible! @henryharbeck, @kszlim, @orlp, @reswqa and @ritchie46
ewm_mean_by
(#15687)prepare_expression_for_context
shouldn't panic if exceptions raised from optimizer (#15681)json_path_match
expr non-anonymous (#15682)Thank you to all our contributors for making this release possible! @henryharbeck, @reswqa and @ritchie46
group_by
multiple null columns produce phantom row (#15659)arr.min/max
(#15654)list.mean
fast path shouldn't produce NaN (#15652)numpy
crate APIs (#15668)Thank you to all our contributors for making this release possible! @MarcoGorelli, @Priyansh4444, @StevenMia, @itamarst, @mcrumiller, @orlp, @reswqa, @ritchie46 and @stinodego
group_by
multiple null columns produce phantom row (#15659)arr.min/max
(#15654)list.mean
fast path shouldn't produce NaN (#15652)DataFrame.replace
(#15612)offset
deprecation in upsample
(#15636)Thank you to all our contributors for making this release possible! @MarcoGorelli, @Priyansh4444, @StevenMia, @eitsupi, @itamarst, @mcrumiller, @orlp, @reswqa, @ritchie46 and @stinodego
memmap
-> memory_map
as like Python (#15642)sort
with SortOptions
and SortMultipleOptions
(#15590)dims
to dimensions
in reshape
(#15561)read/scan_parquet
(#15434)schema_overrides
contains nonexistent column name (#15290)Chunk
to RecordBatch
(#15298)group_by_rolling
to rolling
and improve related error messages (#14765)ChunkedArray.try_apply
to try_apply_values
(#14947)by
to group_by
in DataFrame.upsample/group_by_dynamic/rolling
(#14840)Filter
,Select
,WithColumns
(#15608)AnyValue
(#15576)str.head
and str.tail
(#14425)BytecodeParser
to handle additional math functions, and imports from the global namespace (#15627)is_between
expressions to Arrow (#15180)to_integer
(#15604)null_on_oob
parameter to expr.array.get
(#15426)is_first/last_distinct
for not nested non-numeric list (#15552)MEDIAN
aggfunc (#15519)string
, boolean
and binary
dtype in top_k
(#15488)TRUNCATE TABLE
command (#15513)GREATEST
and LEAST
(#15511)read/scan_parquet
(#15434)agg_list
for NullChunked
(#15439)explode_by_offsets
for decimal (#15417)null_on_oob
parameter to expr.list.get
(#15395)arr.n_unique
(#15296)map_elements
is called without return_dtype
specified (#15188)group_by_rolling
to rolling
and improve related error messages (#14765)ChunkedArray.try_apply
to try_apply_values
(#14947)mean
and median
(#14471)write_excel
that could lead to incorrect spanning range determination (#15631)mean_horizontal
on a single column (#15118)AggregatedScalar
(#15606)GROUP BY
clauses that use position ordinals (#15584)list.get
should take validity into account (#15516)group_by
partitioned with literal Series
panic (#15487)GroupsProxy::Slice
windows (#15509)pow
return type evaluation (#15506).filter()
(#15445)n_unique()
in group-by context when group is empty (#15289)to_any_value
should supports all LiteralValue type (#15387)sort
for series with unsupported dtype should raise instead of panic (#15385)s.clear()
when dtype is Object
(#15315)schema_overrides
contains nonexistent column name (#15290)strict
flag when constructing a Struct Series from any values (#15302)eq
for BinaryViewArray
checks all elements (#15268)check_sorted
in some cases (#15227)rle
expression (#15248)outer_coalesce
join strategy in the user guide (#15405)Series::new
with AnyValue
input (#15306)Series::from_any_values_and_dtype
docs (#15244)lz4
compression in polars-parquet
(#15565)memmap
-> memory_map
as like Python (#15642)offset
deprecation in upsample
(#15636)sort
with SortOptions
and SortMultipleOptions
(#15590)dims
to dimensions
in reshape
(#15561)Cache[count]
to Cache[cache_hits]
(#15300)Chunk
to RecordBatch
(#15298)wrapping_abs
to arithmetic kernel (#15210)RUST_BACKTRACE=1
in the CI test suite (#15204)by
to group_by
in DataFrame.upsample/group_by_dynamic/rolling
(#14840)polars-arrow
and polars-parquet
(#15173)Thank you to all our contributors for making this release possible! @CanglongCl, @ChayimFriedman2, @Fokko, @JamesCE2001, @MarcoGorelli, @NedJWestern, @Sol-Hee, @TrevorWinstral, @alexander-beedie, @braaannigan, @c-peters, @cmdlineluser, @cojmeister, @deanm0000, @dependabot, @dependabot[bot], @douglas-raillard-arm, @eitsupi, @filabrazilska, @henryharbeck, @i-aki-y, @itamarst, @kszlim, @leoforney, @mbuhidar, @mcrumiller, @mickvangelderen, @nameexhaustion, @orlp, @ozgrakkurt, @petrosbar, @reswqa, @ritchie46, @rob-sil, @sportfloh, @stinodego, @thomaslin2020 and @yutannihilation
Filter
,Select
,WithColumns
(#15608)AnyValue
(#15576)str.head
and str.tail
(#14425)union
/or
operator for pl.Enum
(#14965)BytecodeParser
to handle additional math functions, and imports from the global namespace (#15627)is_between
expressions to Arrow (#15180)to_integer
(#15604)null_on_oob
parameter to expr.array.get
(#15426)is_first/last_distinct
for not nested non-numeric list (#15552)mean
and median
(#14471)write_excel
that could lead to incorrect spanning range determination (#15631)mean_horizontal
on a single column (#15118)AggregatedScalar
(#15606)GROUP BY
clauses that use position ordinals (#15584)sort
with SortOptions
and SortMultipleOptions
(#15590)Thank you to all our contributors for making this release possible! @CanglongCl, @ChayimFriedman2, @Fokko, @JamesCE2001, @MarcoGorelli, @NedJWestern, @TrevorWinstral, @alexander-beedie, @deanm0000, @douglas-raillard-arm, @eitsupi, @filabrazilska, @i-aki-y, @itamarst, @leoforney, @mcrumiller, @nameexhaustion, @orlp, @ozgrakkurt, @reswqa, @ritchie46 and @stinodego
MEDIAN
aggfunc (#15519)string
, boolean
and binary
dtype in top_k
(#15488)TRUNCATE TABLE
command (#15513)GREATEST
and LEAST
(#15511)read/scan_parquet
(#15434)agg_list
for NullChunked
(#15439)skip_rows_after_header
to pyarrow csv reader (#15533)schema_overrides
contains nonexistent columns (#15528)list.get
should take validity into account (#15516)group_by
partitioned with literal Series
panic (#15487)GroupsProxy::Slice
windows (#15509)pow
return type evaluation (#15506)read_database
draining iter_batches early (#15504).filter()
(#15445)n
into clear
(#15432)by
parameter to group_by
in DataFrame/LazyFrame.upsample/group_by_dynamic/rolling
(#15527)make docs
command, DataType docs/layout tweak, minor README updates (#15386)Series.list.median
. (#15451)read_parquet
(#15532)DataFrame._read
classmethods (#15521)io.database
executor module (#15526)hive_schema
functionality (#15508)Thank you to all our contributors for making this release possible! @CanglongCl, @ChayimFriedman2, @MarcoGorelli, @alexander-beedie, @cmdlineluser, @dependabot, @dependabot[bot], @henryharbeck, @mbuhidar, @nameexhaustion, @reswqa, @ritchie46, @rob-sil and @stinodego
explode_by_offsets
for decimal (#15417)read_clipboard
and DataFrame.write_clipboard
(#15272)null_on_oob
parameter to expr.list.get
(#15395)n_unique()
in group-by context when group is empty (#15289)to_any_value
should supports all LiteralValue type (#15387)sort
for series with unsupported dtype should raise instead of panic (#15385)explode
mapping strategy in pl.Expr.over
(#15402)outer_coalesce
join strategy in the user guide (#15405)series/array.py
(#15383)arg_sort
and arg_sort_by
(#15348)Thank you to all our contributors for making this release possible! @CanglongCl, @JamesCE2001, @MarcoGorelli, @Sol-Hee, @alexander-beedie, @dependabot, @dependabot[bot], @itamarst, @kszlim, @mcrumiller, @nameexhaustion, @orlp, @reswqa, @ritchie46, @rob-sil and @thomaslin2020