Skip to content

Commit b05b96e

Browse files
meeseeksmachineTomAugspurger
authored andcommitted
Backport PR #31018: BUG: Preserve string dtype in extract (#31030)
Co-authored-by: Tom Augspurger <[email protected]>
1 parent 3b5f7d4 commit b05b96e

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

pandas/core/strings.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -884,11 +884,12 @@ def _str_extract_noexpand(arr, pat, flags=0):
884884
if arr.empty:
885885
result = DataFrame(columns=columns, dtype=object)
886886
else:
887+
dtype = _result_dtype(arr)
887888
result = DataFrame(
888889
[groups_or_na(val) for val in arr],
889890
columns=columns,
890891
index=arr.index,
891-
dtype=object,
892+
dtype=dtype,
892893
)
893894
return result, name
894895

pandas/tests/test_strings.py

+15
Original file line numberDiff line numberDiff line change
@@ -3573,3 +3573,18 @@ def test_string_array_boolean_array(method, expected):
35733573
result = getattr(s.str, method)()
35743574
expected = Series(expected, dtype="boolean")
35753575
tm.assert_series_equal(result, expected)
3576+
3577+
3578+
def test_string_array_extract():
3579+
# https://github.com/pandas-dev/pandas/issues/30969
3580+
# Only expand=False & multiple groups was failing
3581+
a = Series(["a1", "b2", "cc"], dtype="string")
3582+
b = Series(["a1", "b2", "cc"], dtype="object")
3583+
pat = r"(\w)(\d)"
3584+
3585+
result = a.str.extract(pat, expand=False)
3586+
expected = b.str.extract(pat, expand=False)
3587+
assert all(result.dtypes == "string")
3588+
3589+
result = result.astype(object)
3590+
tm.assert_equal(result, expected)

0 commit comments

Comments
 (0)