# Polars 1.18.0 — Python Polars 1.18.0 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2024-12-24 - Version: 1.18.0 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.18.0 - Permalink: https://whatsnew.fyi/product/polars/releases/1.18.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add new Int128Type - **added** — Support loading data from multiple Excel/ODS workbooks - **added** — Add drop_empty_cols parameter for read_excel and read_ods - **added** — Add FirstArgLossless supertype - **added** — Add dt.replace - **added** — Polars build for Pyodide - **added** — Add Azure credential provider using DefaultAzureCredential() - **added** — Add env var to ignore file cache allocate error - **added** — Add bin.reinterpret - **added** — Add cat.len_chars and cat.len_bytes - **added** — Add skip_lines for CSV - **changed** — Always resolve dynamic types in schema - **changed** — Enable joins between compatible differing numeric key columns - **changed** — Cache dtype on ExprIR - **changed** — Serialize DataFrame/Series using IPC in serde - **changed** — Allow subtraction of time dtype columns - **changed** — Allow decoding of non-Polars arrow dictionaries in Arrow and Parquet - **changed** — Expose AexprArena - **changed** — Update pyo3 and numpy crates to version 0.23 - **fixed** — Fix nullable object in map_elements - **fixed** — Properly handle to_physical_repr of nested types ##### 🏆 Highlights - Add new `Int128Type` (#20232) ##### 🚀 Performance improvements - Order observability optimizations (#20396) - Purge ChunkedArray Metadata (#20371) - Explicit transpose in new-streaming equi-join finalize (#20363) - Cache dtype on ExprIR (#20331) - Lower overhead for `BytecodeParser` on introspection of incompatible UDFs (#20280) ##### ✨ Enhancements - Always resolve dynamic types in schema (#20406) - Support loading data from multiple Excel/ODS workbooks (#20404) - Add "drop_empty_cols" parameter for `read_excel` and `read_ods` (#20430) - Order observability optimizations (#20396) - Add FirstArgLossless supertype (#20394) - Add `dt.replace` (#19708) - Polars build for Pyodide (#20383) - Add Azure credential provider using `DefaultAzureCredential()` (#20384) - Add env var to ignore file cache allocate error (#20356) - Enable joins between compatible differing numeric key columns (#20332) - Cache dtype on ExprIR (#20331) - Serialize DataFrame/Series using IPC in serde (#20266) - Improve error message on SchemaError (#20326) - Use better error messages when opening files (#20307) - Add 'skip\_lines' for CSV (#20301) - Allow subtraction of time dtype columns (#20300) - Add `bin.reinterpret` (#20263) - Allow decoding of non-Polars arrow dictionaries in Arrow and Parquet (#20248) - Streamline creation of empty frame from `Schema` (#20267) - Add `cat.len_chars` and `cat.len_bytes` (#20211) - Expose AexprArena (#20230) ##### 🐞 Bug fixes - Fix nullable object in map\_elements (#20422) - Properly handle `to_physical_repr` of nested types (#20413) - Properly raise UDF errors (#20417) - Workaround for `mmap` crash under Emscripten (#20418) - Fix using `new_columns` in `scan_csv` with compressed file (#20412) - Fix return type of `Series.dt.add_business_days` (#20402) - Fix decimal series dispatch (#20400) - Fix decimal arithmetic schema (#20398) - Raise on categorical search\_sorted (#20395) - Fix plotting f-strings and docstrings (#20399) - Don't try to load non-existend List/FSL statistics (#20388) - Propagate nulls for float methods on all numeric types (#20386) - Add env var to ignore file cache allocate error (#20356) - Flip order on right join (#20358) - Correctly parse special float values in `from_repr` (#20351) - Fix incorrect object store caching for ADLS URI (#20357) - Use the same encoding for nullable as non-nullable arrays (#20323) - Improve error message on SchemaError (#20326) - Boolean optional slice pushdown (#20315) - Properly handle `from_physical` for List/Array (#20311) - Ignore quotes in csv comments (#20306) - Ensure pl.datetime returns empty column when input columns are empty (#20278) - Ensure output height does not change on lazy projection pushdown with aggregations (#20223) - Fix error writing on Windows to locations outside of C drive (#20245) - Incorrect comparison in some cases with filtered list/array columns (#20243) - Ensure height is maintained in SQL `SELECT 1 FROM` (#20241) - Properly account for updated Categorical in .unique() kernel (#20235) ##### 📖 Documentation - Improve docstring clarity (#20416) - Update GPU engine installation instructions to remove `--extra-index-url` from CUDA 12 packages (#20381) - Remove Plugins overview page without information (#20348) - Small fixes/clarifications in user guide (#20335) - Improve docs about NaN (#20310) - Fix substr function param definition (#19054) - Include parquet options in BigQuery I/O write sample (#20292) - Fix typo in `fork` warning (#20258) ##### 📦 Build system - Add `project.dynamic = ["version"]` to pyproject.toml (#20345) - Update `pyo3` and `numpy` crates to version `0.23` (#20111) - Build wheels for ARM Windows in Python release workflow (#20247) ##### 🛠️ Other improvements - Enable masked out list, struct and array elements in parametric tests (#20365) - Move hive partitioning/multi-file handling outside of reader _[Truncated at 4000 characters — full notes: https://github.com/pola-rs/polars/releases/tag/py-1.18.0]_