Skip to content

Commit 7660688

Browse files
yuanx749pmhatre1
authored andcommitted
BUG: fix Series.value_counts with sort=False returns result sorted on values for Series with string dtype (pandas-dev#57116)
1 parent 9c64f3d commit 7660688

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

doc/source/whatsnew/v3.0.0.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ Conversion
150150

151151
Strings
152152
^^^^^^^
153-
-
153+
- Bug in :meth:`Series.value_counts` would not respect ``sort=False`` for series having ``string`` dtype (:issue:`55224`)
154154
-
155155

156156
Interval

pandas/core/arrays/string_.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ def max(self, axis=None, skipna: bool = True, **kwargs) -> Scalar:
542542
def value_counts(self, dropna: bool = True) -> Series:
543543
from pandas.core.algorithms import value_counts_internal as value_counts
544544

545-
result = value_counts(self._ndarray, dropna=dropna).astype("Int64")
545+
result = value_counts(self._ndarray, sort=False, dropna=dropna).astype("Int64")
546546
result.index = result.index.astype(self.dtype)
547547
return result
548548

pandas/tests/arrays/string_/test_string.py

+13
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,19 @@ def test_value_counts_with_normalize(dtype):
584584
tm.assert_series_equal(result, expected)
585585

586586

587+
def test_value_counts_sort_false(dtype):
588+
if getattr(dtype, "storage", "") == "pyarrow":
589+
exp_dtype = "int64[pyarrow]"
590+
elif getattr(dtype, "storage", "") == "pyarrow_numpy":
591+
exp_dtype = "int64"
592+
else:
593+
exp_dtype = "Int64"
594+
ser = pd.Series(["a", "b", "c", "b"], dtype=dtype)
595+
result = ser.value_counts(sort=False)
596+
expected = pd.Series([1, 2, 1], index=ser[:3], dtype=exp_dtype, name="count")
597+
tm.assert_series_equal(result, expected)
598+
599+
587600
@pytest.mark.parametrize(
588601
"values, expected",
589602
[

0 commit comments

Comments
 (0)