pypi / geopandas
geopandas
What changed in geopandas 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-30.
9 breaking2 security1 deprecations13 new APIs and options6 behavior and defaults13 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initgeopandas 144 changes
Breaking changes 9
The internal figure representation and composition of collections have changed, which may break code relying on collection composition.
The minimum required NumPy version is now 2.0.
The minimum required pandas version is now 2.2.
The minimum required pyproj version is now 3.7.
Python 3.11 or greater is now required.
The expired seed keyword in sample_points is removed; use rng instead.
The minimum required Shapely version is now 2.1.
The expired use_pygeos option, which had no functionality, is no longer available.
Points generated by sample_points are no longer sorted along the x-axis.
Security 2
Further hardens to_postgis against SQL injection.
geopandas SQL Injection Vulnerability in to_postgis() Allows Information Disclosure
Deprecations 1
The resolution keyword is deprecated in favor of quad_segs to align with Shapely's convention.
New APIs and options 13
Adds a grid_size parameter.
Generates square or hexagonal grids covering the input geometry.
Exposes information about file layers, including layer metadata, as an alias for pyogrio.read_info.
Generates square or hexagonal grids covering the input geometry.
Adds a grid_size parameter.
Axes are labeled using CRS unit information, and this behavior can be controlled with add_labels.
When plotting continuous variables with a classification scheme, setting colorbar=True within legend_kwds produces a colorbar instead of a categorical legend.
The value "greedy" enables greedy topological coloring so adjacent polygons do not share a color; it requires mapclassify and libpysal.
Static plots can include a basemap through contextily.add_basemap; the contextily package is required.
With the pyogrio engine, fid_as_index=True accesses the feature ID as the index.
Adds a grid_size parameter.
Adds a grid_size parameter.
Random states in pointpats methods can now be fixed with rng.
Behavior and default changes 6
Writes attrs to Parquet files.
Legends are created automatically by matplotlib, allowing a single legend for a layered map with ax.legend().
Static plotting has been re-implemented with enhancements to categorical styling, legends, colorbars, classification, and basemaps.
Supports reading the upcoming GeoParquet 2.0 specification.
Reads attrs from Parquet files and supports direct reading from HTTP/HTTPS protocols.
Improved compatibility with pandas 3.0 Copy-on-Write by using deferred copies where possible.
Fixes and other changes 13
Passing multiple non-geometry columns now falls back to pandas multi-column explode instead of raising a cryptic error.
An empty feature list with a CRS now returns an empty GeoDataFrame with a geometry column instead of raising ValueError.
Zero-area polygons no longer cause an endless loop; they now return an empty MultiPoint.
Index levels produced by explode and get_coordinates with index_parts=True are int64 rather than int32 on 32-bit platforms.
read_parquet no longer ignores partitioning when auto-detecting columns, so partitioning=None no longer raises.
vmin and vmax are now supported when scheme is defined instead of being ignored.
vmin and vmax are now supported when scheme is defined instead of being ignored.
Custom legend_kwds labels are no longer ignored for categorical and boolean columns.
Handles keep_geom_type more gracefully when the input is empty.
Correctly handles missing values with pandas 3 when the new str dtype is used.
Accepts list-like size when generating points using pointpaterns.
Assigning column values to a new row index now preserves the column CRS and geometry dtype on pandas 3.1.
Correctly handles missing values with pandas 3 when the new str dtype is used.