# Polars 1.16.0 — Python Polars 1.16.0 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2024-11-29 - Version: 1.16.0 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.16.0 - Permalink: https://whatsnew.fyi/product/polars/releases/1.16.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'. --- - **removed** — Remove note about guaranteed left join order - **changed** — Expand more filters - **changed** — Cache the DataFrame schema in get_column_index - **added** — Enable creation of independently reusable Config instances - **changed** — Improved error message on invalid Python Enum init - **changed** — Improve Polars Enum dtype init from standard Python enums - **added** — Add optimized row encoding for Decimals - **added** — Add drop_nans method to DataFrame and LazyFrame - **fixed** — Improve hist binning around breakpoints - **fixed** — Fix invalid len due to projection pushdown selection of scalar - **fixed** — Fix empty scalar agg type - **fixed** — Improve binning in Series.hist with bin_count when all values are the same - **fixed** — Less intrusive forking warnings - **fixed** — Reading nullable sliced / masked Categoricals from Parquet - **fixed** — Regression in hist panicking on out of bounds index - **fixed** — Fix starts_with out of bounds - **fixed** — Fix incorrect column order for parquet scan with hive columns in file - **fixed** — Incorrectly gave list.len() for masked-out rows - **fixed** — Bug fix in existing fast path for sorted series - **fixed** — Incorrect collect_schema() for fill_null() after an aggregation expression in group-by context ##### 💥 Breaking changes - Remove note about guaranteed left join order (#20048) ##### 🚀 Performance improvements - Expand more filters (#20022) - Cache the DataFrame schema in get\_column\_index (#20021) ##### ✨ Enhancements - Enable creation of independently reusable `Config` instances (#20053) - Improved error message on invalid Python `Enum` init (#20060) - Improve Polars `Enum` dtype init from standard Python enums (#19997) - Add optimized row encoding for Decimals (#20050) - Add `drop_nans` method to DataFrame and LazyFrame (#20029) ##### 🐞 Bug fixes - Improve `hist` binning around breakpoints (#20054) - Fix invalid len due to projection pushdown selection of scalar (#20049) - Fix empty scalar agg type (#20051) - Improve binning in `Series.hist` with `bin_count` when all values are the same (#20034) - Less intrusive forking warnings (#20032) - Reading nullable sliced / masked Categoricals from Parquet (#20024) - Regression in `hist` panicking on out of bounds index (#20016) - Fix starts\_with out of bounds (#20006) - Fix incorrect column order for parquet scan with hive columns in file (#19996) - Incorrectly gave `list.len()` for masked-out rows (#19999) - Bug fix in existing fast path for sorted series (#20004) - Incorrect `collect_schema()` for `fill_null()` after an aggregation expression in group-by context (#19993) - Fix `row_by_key` typing (#19888) ##### 📖 Documentation - Remove note about guaranteed left join order (#20048) - Fix broken links to user guide (#19989) ##### 📦 Build system - Pin maturin (#20063) Thank you to all our contributors for making this release possible! @alexander-beedie, @coastalwhite, @gab23r, @lukemanley, @mcrumiller, @nameexhaustion, @ritchie46, @siddharth-vi, @stijnherfst and @stinodego