Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
randolf-scholz committed Apr 24, 2024
1 parent e9b0a3c commit 27fdbfd
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 16 deletions.
23 changes: 23 additions & 0 deletions pandas/tests/tseries/frequencies/test_inference.py
Expand Up @@ -554,3 +554,26 @@ def test_infer_freq_non_nano_tzaware(tz_aware_fixture):

res = frequencies.infer_freq(dta)
assert res == "B"


@pytest.mark.parametrize(
("data", "expected"),
[
(["2022-01-01T10:00:00", "2022-01-01T10:00:30", "2022-01-01T10:01:00"], "30s"),
(["2022-01-01T10:00:00", "2022-01-01T10:00:37", "2022-01-01T10:01:00"], None),
(["2022-01-01T10:00:00", "2022-01-01T10:00:01", "2022-01-01T10:00:02"], "s"),
(
[
"2022-01-01T10:00:00",
"2022-01-01T10:00:01",
"2022-01-01T10:00:02",
"2022-01-01T10:00:04",
],
None,
),
],
)
@pytest.mark.parametrize("cls", [Index, Series])
def test_infer_freq_pyarrow(data, expected, cls):
obj = cls(data).astype("timestamp[s][pyarrow]")
assert frequencies.infer_freq(obj) == expected
25 changes: 9 additions & 16 deletions pandas/tseries/frequencies.py
Expand Up @@ -33,10 +33,7 @@
from pandas.util._decorators import cache_readonly

from pandas.core.dtypes.common import is_numeric_dtype
from pandas.core.dtypes.dtypes import (
DatetimeTZDtype,
PeriodDtype,
)
from pandas.core.dtypes.dtypes import PeriodDtype
from pandas.core.dtypes.generic import (
ABCIndex,
ABCSeries,
Expand Down Expand Up @@ -112,20 +109,16 @@ def infer_freq(
>>> pd.infer_freq(idx)
'D'
"""
from pandas.api.types import is_datetime64_any_dtype
from pandas.core.api import DatetimeIndex

if isinstance(index, ABCSeries):
values = index._values
if not (
lib.is_np_dtype(values.dtype, "mM")
or isinstance(values.dtype, DatetimeTZDtype)
or values.dtype == object
):
raise TypeError(
"cannot infer freq from a non-convertible dtype "
f"on a Series of {index.dtype}"
)
index = values
if isinstance(index, ABCSeries) and not (
is_datetime64_any_dtype(index) or index.dtype == object
):
raise TypeError(
"cannot infer freq from a non-convertible dtype "
f"on a Series of {index.dtype}"
)

inferer: _FrequencyInferer

Expand Down

0 comments on commit 27fdbfd

Please sign in to comment.