Skip to content

Commit c0917de

Browse files
fbrundujreback
authored andcommitted
ENH: validate for axis parameter on pandas.DataFrame.quantile() #9544
1 parent d142452 commit c0917de

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

doc/source/whatsnew/v0.16.2.txt

+5
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ Other API Changes
9797
^^^^^^^^^^^^^^^^^
9898

9999
- ``Holiday`` now raises ``NotImplementedError`` if both ``offset`` and ``observance`` are used in constructor instead of returning an incorrect result (:issue:`10217`).
100+
- ``axis`` parameter of ``DataFrame.quantile`` now accepts also ``index`` and``column``. (:issue:`9543`)
100101

101102
- Adding empty ``DataFrame``s results in a ``DataFrame`` that ``.equals`` an empty ``DataFrame`` (:issue:`10181`)
102103

@@ -116,7 +117,11 @@ Bug Fixes
116117
- Bug where read_hdf store.select modifies the passed columns list when
117118
multi-indexed (:issue:`7212`)
118119
- Bug in ``Categorical`` repr with ``display.width`` of ``None`` in Python 3 (:issue:`10087`)
120+
119121
- Bug where some of the nan funcs do not have consistent return dtypes (:issue:`10251`)
122+
123+
- Bug in ``DataFrame.quantile`` on checking that a valid axis was passed (:issue:`9543`)
124+
120125
- Bug in groupby.apply aggregation for Categorical not preserving categories (:issue:`10138`)
121126
- Bug in ``to_csv`` where ``date_format`` is ignored if the ``datetime`` is fractional (:issue:`10209`)
122127

pandas/core/frame.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -4477,8 +4477,9 @@ def quantile(self, q=0.5, axis=0, numeric_only=True):
44774477
----------
44784478
q : float or array-like, default 0.5 (50% quantile)
44794479
0 <= q <= 1, the quantile(s) to compute
4480-
axis : {0, 1}
4481-
0 for row-wise, 1 for column-wise
4480+
axis : {0, 1, 'index', 'columns'} (default 0)
4481+
0 or 'index' for row-wise, 1 or 'columns' for column-wise
4482+
44824483
44834484
Returns
44844485
-------
@@ -4524,6 +4525,9 @@ def f(arr, per):
45244525
return _quantile(values, per)
45254526

45264527
data = self._get_numeric_data() if numeric_only else self
4528+
4529+
axis = self._get_axis_number(axis)
4530+
45274531
if axis == 1:
45284532
data = data.T
45294533

pandas/tests/test_frame.py

+25
Original file line numberDiff line numberDiff line change
@@ -12101,6 +12101,31 @@ def test_quantile(self):
1210112101
expected = Series([3., 4.], index=[0, 1])
1210212102
assert_series_equal(result, expected)
1210312103

12104+
def test_quantile_axis_parameter(self):
12105+
# GH 9543/9544
12106+
from numpy import percentile
12107+
12108+
df = DataFrame({"A": [1, 2, 3], "B": [2, 3, 4]}, index=[1, 2, 3])
12109+
12110+
result = df.quantile(.5, axis=0)
12111+
12112+
expected = Series([2., 3.], index=["A", "B"])
12113+
assert_series_equal(result, expected)
12114+
12115+
expected = df.quantile(.5, axis="index")
12116+
assert_series_equal(result, expected)
12117+
12118+
result = df.quantile(.5, axis=1)
12119+
12120+
expected = Series([1.5, 2.5, 3.5], index=[1, 2, 3])
12121+
assert_series_equal(result, expected)
12122+
12123+
result = df.quantile(.5, axis="columns")
12124+
assert_series_equal(result, expected)
12125+
12126+
self.assertRaises(ValueError, df.quantile, 0.1, axis=-1)
12127+
self.assertRaises(ValueError, df.quantile, 0.1, axis="column")
12128+
1210412129
def test_quantile_multi(self):
1210512130
df = DataFrame([[1, 1, 1], [2, 2, 2], [3, 3, 3]],
1210612131
columns=['a', 'b', 'c'])

0 commit comments

Comments
 (0)