diff --git a/pandas/core/arrays/arrow/array.py b/pandas/core/arrays/arrow/array.py index fcec562279248..42d85935efe95 100644 --- a/pandas/core/arrays/arrow/array.py +++ b/pandas/core/arrays/arrow/array.py @@ -528,8 +528,12 @@ def _argmin_max(self, skipna: bool, method: str) -> int: f"arg{method} only implemented for pyarrow version >= 6.0" ) - value = getattr(pc, method)(self._data, skip_nulls=skipna) - return pc.index(self._data, value).as_py() + data = self._data + if pa.types.is_duration(data.type): + data = data.cast(pa.int64()) + + value = getattr(pc, method)(data, skip_nulls=skipna) + return pc.index(data, value).as_py() def argmin(self, skipna: bool = True) -> int: return self._argmin_max(skipna, "min") diff --git a/pandas/tests/extension/test_arrow.py b/pandas/tests/extension/test_arrow.py index f7517e1a3ab7f..c798a3d91f816 100644 --- a/pandas/tests/extension/test_arrow.py +++ b/pandas/tests/extension/test_arrow.py @@ -869,13 +869,6 @@ def test_argmin_argmax( reason=f"{pa_dtype} only has 2 unique possible values", ) ) - elif pa.types.is_duration(pa_dtype): - request.node.add_marker( - pytest.mark.xfail( - raises=pa.ArrowNotImplementedError, - reason=f"min_max not supported in pyarrow for {pa_dtype}", - ) - ) super().test_argmin_argmax(data_for_sorting, data_missing_for_sorting, na_value) @pytest.mark.parametrize( @@ -894,7 +887,6 @@ def test_argmin_argmax( def test_argreduce_series( self, data_missing_for_sorting, op_name, skipna, expected, request ): - pa_dtype = data_missing_for_sorting.dtype.pyarrow_dtype if pa_version_under6p0 and skipna: request.node.add_marker( pytest.mark.xfail( @@ -902,13 +894,6 @@ def test_argreduce_series( reason="min_max not supported in pyarrow", ) ) - elif not pa_version_under6p0 and pa.types.is_duration(pa_dtype) and skipna: - request.node.add_marker( - pytest.mark.xfail( - raises=pa.ArrowNotImplementedError, - reason=f"min_max not supported in pyarrow for {pa_dtype}", - ) - ) super().test_argreduce_series( data_missing_for_sorting, op_name, skipna, expected )