meteostat-python icon indicating copy to clipboard operation
meteostat-python copied to clipboard

TypeError: Invalid comparison between dtype=datetime64[ns] and datetime

Open somedude72 opened this issue 7 months ago • 0 comments

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

somedude72 avatar Jun 17 '25 04:06 somedude72