Skip to content

Commit 0a10eec

Browse files
committed
add whatsnew entry (#42618)
1 parent ff73cec commit 0a10eec

File tree

2 files changed

+15
-29
lines changed

2 files changed

+15
-29
lines changed

doc/source/whatsnew/v1.3.1.rst

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ Fixed regressions
2525
- Fixed regression in :meth:`DataFrame.isin` and :meth:`Series.isin` raising ``TypeError`` with nullable data containing at least one missing value (:issue:`42405`)
2626
- Regression in :func:`concat` between objects with bool dtype and integer dtype casting to object instead of to integer (:issue:`42092`)
2727
- Bug in :class:`Series` constructor not accepting a ``dask.Array`` (:issue:`38645`)
28+
- Fixed regression in :meth:`SeriesGroupBy.value_counts` that resulted in an ``IndexError`` when called on a Series with one row (:issue:`42618`)
2829

2930
.. ---------------------------------------------------------------------------
3031

pandas/tests/groupby/test_value_counts.py

+14-29
Original file line numberDiff line numberDiff line change
@@ -122,44 +122,29 @@ def test_series_groupby_value_counts_with_grouper():
122122
tm.assert_series_equal(result, expected)
123123

124124

125-
def test_series_groupby_value_counts_empty():
125+
@pytest.mark.parametrize("columns", [["A", "B"], ["A", "B", "C"]])
126+
def test_series_groupby_value_counts_empty(columns):
126127
# GH39172
127-
df = DataFrame(columns=["A", "B"])
128-
dfg = df.groupby("A")
128+
df = DataFrame(columns=columns)
129+
dfg = df.groupby(columns[:-1])
129130

130-
result = dfg["B"].value_counts()
131-
expected = Series([], name="B", dtype=result.dtype)
132-
expected.index = MultiIndex.from_arrays([[]] * 2, names=["A", "B"])
131+
result = dfg[columns[-1]].value_counts()
132+
expected = Series([], name=columns[-1], dtype=result.dtype)
133+
expected.index = MultiIndex.from_arrays([[]] * len(columns), names=columns)
133134

134135
tm.assert_series_equal(result, expected)
135136

136-
df = DataFrame(columns=["A", "B", "C"])
137-
dfg = df.groupby(["A", "B"])
138137

139-
result = dfg["C"].value_counts()
140-
expected = Series([], name="C", dtype=result.dtype)
141-
expected.index = MultiIndex.from_arrays([[]] * 3, names=["A", "B", "C"])
142-
143-
tm.assert_series_equal(result, expected)
144-
145-
146-
def test_series_groupby_value_counts_one_row():
138+
@pytest.mark.parametrize("columns", [["A", "B"], ["A", "B", "C"]])
139+
def test_series_groupby_value_counts_one_row(columns):
147140
# GH42618
148-
df = DataFrame([[1, 2]], columns=["A", "B"])
149-
dfg = df.groupby("A")
141+
df = DataFrame(data=[range(len(columns))], columns=columns)
142+
dfg = df.groupby(columns[:-1])
150143

151-
result = dfg["B"].value_counts()
152-
expected = df.value_counts()
144+
result = dfg[columns[-1]].value_counts()
145+
expected = df.value_counts().rename(columns[-1])
153146

154-
tm.assert_series_equal(result, expected, check_names=False)
155-
156-
df = DataFrame([[1, 2, 3]], columns=["A", "B", "C"])
157-
dfg = df.groupby(["A", "B"])
158-
159-
result = dfg["C"].value_counts()
160-
expected = df.value_counts()
161-
162-
tm.assert_series_equal(result, expected, check_names=False)
147+
tm.assert_series_equal(result, expected)
163148

164149

165150
def test_series_groupby_value_counts_on_categorical():

0 commit comments

Comments
 (0)