Skip to content

Commit de52d0b

Browse files
jorisvandenbosschejreback
authored andcommitted
Suppress incorrect warning in nargsort for timezone-aware DatetimeIndex (#25629)
1 parent 3dfb6d4 commit de52d0b

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

pandas/core/sorting.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
""" miscellaneous sorting / groupby utilities """
2+
import warnings
23

34
import numpy as np
45

@@ -254,7 +255,13 @@ def nargsort(items, kind='quicksort', ascending=True, na_position='last'):
254255
sorted_idx = np.roll(sorted_idx, cnt_null)
255256
return sorted_idx
256257

257-
items = np.asanyarray(items)
258+
with warnings.catch_warnings():
259+
# https://github.com/pandas-dev/pandas/issues/25439
260+
# can be removed once ExtensionArrays are properly handled by nargsort
261+
warnings.filterwarnings(
262+
"ignore", category=FutureWarning,
263+
message="Converting timezone-aware DatetimeArray to")
264+
items = np.asanyarray(items)
258265
idx = np.arange(len(items))
259266
mask = isna(items)
260267
non_nans = items[~mask]

pandas/tests/test_sorting.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99

1010
from pandas.compat import PY2
1111

12-
from pandas import DataFrame, MultiIndex, Series, compat, concat, merge
12+
from pandas import (
13+
DataFrame, MultiIndex, Series, compat, concat, merge, to_datetime)
1314
from pandas.core import common as com
1415
from pandas.core.sorting import (
1516
decons_group_index, get_group_index, is_int64_overflow_possible,
@@ -183,6 +184,13 @@ def test_nargsort(self):
183184
exp = list(range(5)) + list(range(105, 110)) + list(range(104, 4, -1))
184185
tm.assert_numpy_array_equal(result, np.array(exp), check_dtype=False)
185186

187+
def test_nargsort_datetimearray_warning(self):
188+
# https://github.com/pandas-dev/pandas/issues/25439
189+
# can be removed once the FutureWarning for np.array(DTA) is removed
190+
data = to_datetime([0, 2, 0, 1]).tz_localize('Europe/Brussels')
191+
with tm.assert_produces_warning(None):
192+
nargsort(data)
193+
186194

187195
class TestMerge(object):
188196

0 commit comments

Comments
 (0)