Skip to content

Commit 60b7c03

Browse files
simonjayhawkinsTLouf
authored andcommitted
[ArrowStringArray] REF: _str_startswith/_str_endswith (pandas-dev#41487)
1 parent aac640f commit 60b7c03

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

pandas/core/arrays/string_arrow.py

+9-12
Original file line numberDiff line numberDiff line change
@@ -820,29 +820,26 @@ def _str_contains(self, pat, case=True, flags=0, na=np.nan, regex: bool = True):
820820
result[isna(result)] = bool(na)
821821
return result
822822

823-
def _str_startswith(self, pat, na=None):
823+
def _str_startswith(self, pat: str, na=None):
824824
if pa_version_under4p0:
825825
return super()._str_startswith(pat, na)
826826

827-
result = pc.match_substring_regex(self._data, "^" + re.escape(pat))
828-
result = BooleanDtype().__from_arrow__(result)
829-
if not isna(na):
830-
result[isna(result)] = bool(na)
831-
return result
827+
pat = "^" + re.escape(pat)
828+
return self._str_contains(pat, na=na, regex=True)
832829

833-
def _str_endswith(self, pat, na=None):
830+
def _str_endswith(self, pat: str, na=None):
834831
if pa_version_under4p0:
835832
return super()._str_endswith(pat, na)
836833

837-
result = pc.match_substring_regex(self._data, re.escape(pat) + "$")
838-
result = BooleanDtype().__from_arrow__(result)
839-
if not isna(na):
840-
result[isna(result)] = bool(na)
841-
return result
834+
pat = re.escape(pat) + "$"
835+
return self._str_contains(pat, na=na, regex=True)
842836

843837
def _str_match(
844838
self, pat: str, case: bool = True, flags: int = 0, na: Scalar = None
845839
):
840+
if pa_version_under4p0:
841+
return super()._str_match(pat, case, flags, na)
842+
846843
if not pat.startswith("^"):
847844
pat = "^" + pat
848845
return self._str_contains(pat, case, flags, na, regex=True)

0 commit comments

Comments
 (0)