From 4d29518eef44f3e8958dca43b6c8b7214a102847 Mon Sep 17 00:00:00 2001 From: mark-hammond Date: Fri, 5 Jun 2026 16:25:28 +0100 Subject: [PATCH] Fix enrich_locations string columns initialised as float64 The new string columns (gb_region, location_source, coordinate_quality, location_notes, ...) were initialised as np.nan (float64), so assigning a real string later raises 'TypeError: Invalid value for dtype float64' under strict pandas (>=2.x) on a fresh run. Initialise string columns as object dtype; numeric lat/lon columns stay float. --- scripts/interconnectors/enrich_locations.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/scripts/interconnectors/enrich_locations.py b/scripts/interconnectors/enrich_locations.py index 1dc8ddb0..2e8d0e71 100644 --- a/scripts/interconnectors/enrich_locations.py +++ b/scripts/interconnectors/enrich_locations.py @@ -320,10 +320,19 @@ def enrich_interconnector_locations(input_file: str, neso_register_file: str, ou 'international_latitude', 'international_longitude', 'international_location', 'location_source', 'coordinate_quality', 'location_notes' ] - + numeric_columns = { + 'gb_latitude', 'gb_longitude', 'international_latitude', 'international_longitude' + } + for col in new_columns: if col not in interconnectors.columns: - interconnectors[col] = np.nan + # String columns must be object dtype: a float64 NaN column raises + # "TypeError: Invalid value for dtype 'float64'" when a string is later + # assigned under strict pandas (>=2.x). + if col in numeric_columns: + interconnectors[col] = np.nan + else: + interconnectors[col] = pd.Series(np.nan, index=interconnectors.index, dtype=object) # Create NESO lookup by name (handle variations) neso_lookup = {}