Skip to content

Commit 9d89f51

Browse files
committed
CLN/TST: return Timestamp for .quantile on datetime[ns] series
1 parent 6be8784 commit 9d89f51

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

doc/source/release.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,10 @@ API Changes
172172
(and numpy defaults)
173173
- add ``inplace`` keyword to ``Series.order/sort`` to make them inverses (:issue:`6859`)
174174

175+
- Replace ``pandas.compat.scipy.scoreatpercentile`` with ``numpy.percentile`` (:issue:`6810`)
176+
- ``.quantile`` on a ``datetime[ns]`` series now returns ``Timestamp`` instead
177+
of ``np.datetime64`` objects (:issue:`6810`)
178+
175179
Deprecations
176180
~~~~~~~~~~~~
177181

pandas/core/series.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1235,10 +1235,11 @@ def quantile(self, q=0.5):
12351235
valid_values = self.dropna().values
12361236
if len(valid_values) == 0:
12371237
return pa.NA
1238-
result = _quantile(valid_values, q * 100)
1239-
if not np.isscalar and com.is_timedelta64_dtype(result):
1240-
from pandas.tseries.timedeltas import to_timedelta
1241-
return to_timedelta(result)
1238+
if com.is_datetime64_dtype(self):
1239+
values = _values_from_object(self).view('i8')
1240+
result = lib.Timestamp(_quantile(values, q * 100))
1241+
else:
1242+
result = _quantile(valid_values, q * 100)
12421243

12431244
return result
12441245

pandas/tests/test_series.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2149,6 +2149,17 @@ def test_quantile(self):
21492149
q = Series(self.ts,dtype=object).quantile(0.9)
21502150
self.assertEqual(q, percentile(self.ts.valid(), 90))
21512151

2152+
# datetime64[ns] dtype
2153+
dts = self.ts.index.to_series()
2154+
q = dts.quantile(.2)
2155+
self.assertEqual(q, Timestamp('2000-01-10 19:12:00'))
2156+
2157+
if not _np_version_under1p7:
2158+
# timedelta64[ns] dtype
2159+
tds = dts.diff()
2160+
q = tds.quantile(.25)
2161+
self.assertEqual(q, pd.to_timedelta('24:00:00'))
2162+
21522163
def test_describe(self):
21532164
_ = self.series.describe()
21542165
_ = self.ts.describe()

0 commit comments

Comments
 (0)