Skip to content

Commit 37c31af

Browse files
authored
REGR: groupby.value_counts with all NA values (#59999)
* REGR: groupby.value_counts with all NA values * Better implementation
1 parent 02267e5 commit 37c31af

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

pandas/core/groupby/ops.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -867,7 +867,7 @@ def _ob_index_and_ids(
867867
names=names,
868868
verify_integrity=False,
869869
)
870-
if not consistent_sorting:
870+
if not consistent_sorting and len(ob_index) > 0:
871871
# Sort by the levels where the corresponding sort argument is True
872872
n_levels = len(sorts)
873873
drop_levels = [

pandas/tests/groupby/methods/test_value_counts.py

+22
Original file line numberDiff line numberDiff line change
@@ -1219,3 +1219,25 @@ def test_value_counts_sort_categorical(sort, vc_sort, normalize):
12191219
expected = expected.take(taker)
12201220

12211221
tm.assert_series_equal(result, expected)
1222+
1223+
1224+
@pytest.mark.parametrize("groupby_sort", [True, False])
1225+
def test_value_counts_all_na(sort, dropna, groupby_sort):
1226+
# GH#59989
1227+
df = DataFrame({"a": [2, 1, 1], "b": np.nan})
1228+
gb = df.groupby("a", sort=groupby_sort)
1229+
result = gb.value_counts(sort=sort, dropna=dropna)
1230+
1231+
kwargs = {"levels": [[1, 2], [np.nan]], "names": ["a", "b"]}
1232+
if dropna:
1233+
data = []
1234+
index = MultiIndex(codes=[[], []], **kwargs)
1235+
elif not groupby_sort and not sort:
1236+
data = [1, 2]
1237+
index = MultiIndex(codes=[[1, 0], [0, 0]], **kwargs)
1238+
else:
1239+
data = [2, 1]
1240+
index = MultiIndex(codes=[[0, 1], [0, 0]], **kwargs)
1241+
expected = Series(data, index=index, dtype="int64", name="count")
1242+
1243+
tm.assert_series_equal(result, expected)

0 commit comments

Comments
 (0)