meteostat-python
meteostat-python copied to clipboard
TypeError: Invalid comparison between dtype=datetime64[ns] and datetime
This error occurs when requesting hourly weather point data for Hong Kong and having any time zone specified. This error does not occur for other locations such as San Francisco. This may be due to meteostat's internal handling of timezone aware/naive objects?
Example:
from meteostat import Point, Hourly
from datetime import datetime, timedelta
end_time = datetime.now()
beg_time = end_time - datetime.timedelta(days=10)
point = Point(22.2783, 114.1747)
hourly = Hourly(point, beg_time, end_time, timezone="Asia/Hong_Kong") # Error
# hourly = Hourly(point, beg_time, end_time) # No error
Traceback:
Traceback (most recent call last):
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/arrays/datetimelike.py", line 536, in _validate_comparison_value
self._check_compatible_with(other)
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/arrays/datetimes.py", line 540, in _check_compatible_with
self._assert_tzawareness_compat(other)
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/arrays/datetimes.py", line 782, in _assert_tzawareness_compat
raise TypeError(
TypeError: Cannot compare tz-naive and tz-aware datetime-like objects.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/arrays/datetimelike.py", line 983, in _cmp_method
other = self._validate_comparison_value(other)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/arrays/datetimelike.py", line 539, in _validate_comparison_value
raise InvalidComparison(other) from err
pandas.errors.InvalidComparison: 2025-06-05 16:00:00+00:00
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/meteostat/interface/hourly.py", line 147, in __init__
self._init_time_series(loc, start, end, model, flags)
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/meteostat/interface/timeseries.py", line 190, in _init_time_series
self._data = self._get_data()
^^^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/meteostat/interface/meteodata.py", line 116, in _get_data
return processing_handler(
^^^^^^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/meteostat/core/loader.py", line 57, in processing_handler
output.append(load(*dataset))
^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/meteostat/interface/timeseries.py", line 137, in _load_data
df = filter_time(df, self._start, self._end)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/meteostat/utilities/mutations.py", line 38, in filter_time
return df.loc[(time >= start) & (time <= end)] if start and end else df
^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/ops/common.py", line 76, in new_method
return method(self, other)
^^^^^^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/arraylike.py", line 60, in __ge__
return self._cmp_method(other, operator.ge)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/indexes/base.py", line 7197, in _cmp_method
result = op(self._values, other)
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/ops/common.py", line 76, in new_method
return method(self, other)
^^^^^^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/arraylike.py", line 60, in __ge__
return self._cmp_method(other, operator.ge)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/arrays/datetimelike.py", line 985, in _cmp_method
return invalid_comparison(self, other, op)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/*/.pyenv/versions/3.12.7/lib/python3.12/site-packages/pandas/core/ops/invalid.py", line 40, in invalid_comparison
raise TypeError(f"Invalid comparison between dtype={left.dtype} and {typ}")
TypeError: Invalid comparison between dtype=datetime64[ns] and datetime
System and package versions:
- CPython 3.12.7
- Meteostat 1.7.1
- NumPy 2.2.6
- Pandas 2.3.0
- Pytz 2025.2
- macOS Sequoia 15.5, arm64