@@ -820,29 +820,26 @@ def _str_contains(self, pat, case=True, flags=0, na=np.nan, regex: bool = True):
820
820
result [isna (result )] = bool (na )
821
821
return result
822
822
823
- def _str_startswith (self , pat , na = None ):
823
+ def _str_startswith (self , pat : str , na = None ):
824
824
if pa_version_under4p0 :
825
825
return super ()._str_startswith (pat , na )
826
826
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 )
832
829
833
- def _str_endswith (self , pat , na = None ):
830
+ def _str_endswith (self , pat : str , na = None ):
834
831
if pa_version_under4p0 :
835
832
return super ()._str_endswith (pat , na )
836
833
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 )
842
836
843
837
def _str_match (
844
838
self , pat : str , case : bool = True , flags : int = 0 , na : Scalar = None
845
839
):
840
+ if pa_version_under4p0 :
841
+ return super ()._str_match (pat , case , flags , na )
842
+
846
843
if not pat .startswith ("^" ):
847
844
pat = "^" + pat
848
845
return self ._str_contains (pat , case , flags , na , regex = True )
0 commit comments