Skip to content

Commit f4605a4

Browse files
committed
Added quantile method to Resampler
1 parent 98e77e9 commit f4605a4

File tree

4 files changed

+22
-1
lines changed

4 files changed

+22
-1
lines changed

doc/source/api.rst

+1
Original file line numberDiff line numberDiff line change
@@ -2352,6 +2352,7 @@ Computations / Descriptive Stats
23522352
Resampler.std
23532353
Resampler.sum
23542354
Resampler.var
2355+
Resampler.quantile
23552356

23562357
Style
23572358
-----

doc/source/whatsnew/v0.24.0.txt

+1
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ Other Enhancements
183183
- :class:`Series` and :class:`DataFrame` now support :class:`Iterable` in constructor (:issue:`2193`)
184184
- :class:`DatetimeIndex` gained :attr:`DatetimeIndex.timetz` attribute. Returns local time with timezone information. (:issue:`21358`)
185185
- :class:`Resampler` now is iterable like :class:`GroupBy` (:issue:`15314`).
186+
- Added :meth:`Resampler.quantile` (:issue:`15023`).
186187

187188
.. _whatsnew_0240.api_breaking:
188189

pandas/core/resample.py

+12
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,18 @@ def size(self):
766766
result = pd.Series([], index=result.index, dtype='int64')
767767
return result
768768

769+
def quantile(self, q=0.5, **kwargs):
770+
"""
771+
Return value at the given quantile.
772+
773+
Parameters
774+
----------
775+
q : float or array-like, default 0.5 (50% quantile)
776+
777+
.. versionadded:: 0.24.0
778+
"""
779+
return self._downsample('quantile', q=q, **kwargs)
780+
769781

770782
# downsample methods
771783
for method in ['sum', 'prod']:

pandas/tests/test_resample.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141

4242
# The various methods we support
4343
downsample_methods = ['min', 'max', 'first', 'last', 'sum', 'mean', 'sem',
44-
'median', 'prod', 'var', 'ohlc']
44+
'median', 'prod', 'var', 'ohlc', 'quantile']
4545
upsample_methods = ['count', 'size']
4646
series_methods = ['nunique']
4747
resample_methods = downsample_methods + upsample_methods + series_methods
@@ -2176,6 +2176,13 @@ def test_resample_datetime_values(self):
21762176
res = df['timestamp'].resample('2D').first()
21772177
tm.assert_series_equal(res, exp)
21782178

2179+
def test_resample_quantile(self):
2180+
# GH 15023
2181+
s = pd.Series(range(20), index=date_range('2016-01-01', periods=20))
2182+
result = s.resample('W').quantile(0.75)
2183+
expected = s.resample('W').agg(lambda x: x.quantile(0.75))
2184+
tm.assert_series_equal(result, expected)
2185+
21792186

21802187
class TestPeriodIndex(Base):
21812188
_index_factory = lambda x: period_range

0 commit comments

Comments
 (0)