From a25de860c4f533100814fd98e69bf53de8753f02 Mon Sep 17 00:00:00 2001 From: Simon Hawkins Date: Sat, 15 May 2021 11:42:55 +0100 Subject: [PATCH] [ArrowStringArray] REF: _str_startswith/_str_endswith --- pandas/core/arrays/string_arrow.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/pandas/core/arrays/string_arrow.py b/pandas/core/arrays/string_arrow.py index 219a8c7ec0b82..252bc215869ac 100644 --- a/pandas/core/arrays/string_arrow.py +++ b/pandas/core/arrays/string_arrow.py @@ -820,29 +820,26 @@ def _str_contains(self, pat, case=True, flags=0, na=np.nan, regex: bool = True): result[isna(result)] = bool(na) return result - def _str_startswith(self, pat, na=None): + def _str_startswith(self, pat: str, na=None): if pa_version_under4p0: return super()._str_startswith(pat, na) - result = pc.match_substring_regex(self._data, "^" + re.escape(pat)) - result = BooleanDtype().__from_arrow__(result) - if not isna(na): - result[isna(result)] = bool(na) - return result + pat = "^" + re.escape(pat) + return self._str_contains(pat, na=na, regex=True) - def _str_endswith(self, pat, na=None): + def _str_endswith(self, pat: str, na=None): if pa_version_under4p0: return super()._str_endswith(pat, na) - result = pc.match_substring_regex(self._data, re.escape(pat) + "$") - result = BooleanDtype().__from_arrow__(result) - if not isna(na): - result[isna(result)] = bool(na) - return result + pat = re.escape(pat) + "$" + return self._str_contains(pat, na=na, regex=True) def _str_match( self, pat: str, case: bool = True, flags: int = 0, na: Scalar = None ): + if pa_version_under4p0: + return super()._str_match(pat, case, flags, na) + if not pat.startswith("^"): pat = "^" + pat return self._str_contains(pat, case, flags, na, regex=True)