diff --git a/ci/requirements.txt b/ci/requirements.txt index eec115e45..e14408dd6 100644 --- a/ci/requirements.txt +++ b/ci/requirements.txt @@ -1,5 +1,5 @@ beautifulsoup4==4.14.3 numpy==2.4.2 -pandas==2.3.3 +pandas==3.0.1 protobuf==6.33.5 requests==2.32.5 diff --git a/src/siphon/simplewebservice/ndbc.py b/src/siphon/simplewebservice/ndbc.py index 24de935b8..f359371ec 100644 --- a/src/siphon/simplewebservice/ndbc.py +++ b/src/siphon/simplewebservice/ndbc.py @@ -187,12 +187,11 @@ def _parse_cwind(content): df['gust_direction'] = df['gust_direction'].replace(999, np.nan) df['wind_gust'] = df['wind_gust'].replace(99.0, np.nan) df['time'] = pd.to_datetime(df[['year', 'month', 'day', 'hour', 'minute']], utc=True) - df['hours'] = np.floor(df['gust_time'] / 100) + df['hours'] = df['gust_time'] // 100 df['minutes'] = df['gust_time'] - df['hours'] * 100 - df['hours'] = df['hours'].replace(99, np.nan) - df['minutes'] = df['minutes'].replace(99, np.nan) df['gust_time'] = pd.to_datetime(df[['year', 'month', 'day', 'hours', 'minutes']], utc=True) + df['gust_time'] = df['gust_time'].where(df['hours'] != 99, pd.NaT) df = df.drop(columns=['year', 'month', 'day', 'hour', 'minute', 'hours', 'minutes']) with warnings.catch_warnings(): diff --git a/tests/test_ndbc.py b/tests/test_ndbc.py index f42d7384b..82f6401e9 100644 --- a/tests/test_ndbc.py +++ b/tests/test_ndbc.py @@ -7,6 +7,7 @@ import numpy as np from numpy.testing import assert_almost_equal, assert_equal +import pandas as pd import pytest from siphon.http_util import utc @@ -93,6 +94,7 @@ def test_ndbc_realtime_cwind(): assert_almost_equal(df['wind_gust'][0], 9.0, 1) assert df['gust_time'][0] == datetime(2018, 8, 1, 14, 49, 0, tzinfo=utc) assert df['time'][0] == datetime(2018, 8, 1, 14, 50, 0, tzinfo=utc) + assert pd.isna(df['gust_time'][1]) assert df.units['wind_direction'] == 'degrees' assert df.units['wind_speed'] == 'meters/second'