nebius/SWE-bench-extra huggingface dataset:
Repository: Unidata/MetPy

Issue:
add_station_lat_lon yields columns with object dtype
```python
df = pd.DataFrame({'station': ['KOUN', 'KVPZ', 'KDEN', 'PAAA']})
df = add_station_lat_lon(df, 'station')
df.info()
```
gives
```
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 3 columns):
 #   Column     Non-Null Count  Dtype 
---  ------     --------------  ----- 
 0   station    4 non-null      object
 1   latitude   3 non-null      object
 2   longitude  3 non-null      object
dtypes: object(3)
memory usage: 224.0+ bytes
```

Apparently it's good enough to pass e.g. `assert_almost_equal(df.loc[df.station == 'KOUN'].latitude.values[0], 35.25)`, but it's painful to pass to e.g. `tricontour()`.

Comments:

Patch:
diff --git a/src/metpy/io/station_data.py b/src/metpy/io/station_data.py
index 4db0f2ec5e..df7e153b5b 100644
--- a/src/metpy/io/station_data.py
+++ b/src/metpy/io/station_data.py
@@ -191,8 +191,9 @@ def add_station_lat_lon(df, stn_var=None):
         raise KeyError('Second argument not provided to add_station_lat_lon, but none of '
                        f'{names_to_try} were found.')
 
-    df['latitude'] = None
-    df['longitude'] = None
+    df['latitude'] = np.nan
+    df['longitude'] = np.nan
+
     if stn_var is None:
         stn_var = key_finder(df)
     for stn in df[stn_var].unique():


Test patch:
diff --git a/tests/io/test_station_data.py b/tests/io/test_station_data.py
index 7e0e9b0d70..a281ad830d 100644
--- a/tests/io/test_station_data.py
+++ b/tests/io/test_station_data.py
@@ -23,6 +23,7 @@ def test_add_lat_lon_station_data():
     assert_almost_equal(df.loc[df.station == 'KDEN'].longitude.values[0], -104.65)
     assert_almost_equal(df.loc[df.station == 'PAAA'].latitude.values[0], np.nan)
     assert_almost_equal(df.loc[df.station == 'PAAA'].longitude.values[0], np.nan)
+    assert df['longitude'].dtype == np.float64
 
 
 def test_add_lat_lon_station_data_optional():