zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
U
¬ý°dÇ6ã@s0ddlmZddlZddlmZmZddlZddlm    Z    m
Z ddl m Z mZmZddlmZddlmZmZmZmZmZmZmZddlmZdd    lmZdd
lmZdd l m!Z!dd l"m#Z#dd l$m%Z%m&Z&ddl'm(Z(esüddl)Z*ddl+m,Z-ddl.m/Z/ee0e j1fZ2ddœdd„Z3Gdd„de(ee%ƒZ4dS)é)Ú annotationsN)ÚCallableÚUnion)ÚlibÚmissing)ÚDtypeÚScalarÚnpt)Úpa_version_under7p0)Ú is_bool_dtypeÚis_dtype_equalÚis_integer_dtypeÚis_object_dtypeÚ    is_scalarÚis_string_dtypeÚ pandas_dtype)Úisna)ÚArrowExtensionArray)Ú BooleanDtype)Ú
Int64Dtype)Ú NumericDtype)ÚBaseStringArrayÚ StringDtype)ÚObjectStringArrayMixin)Úfallback_performancewarningÚNone©ÚreturncCstrd}t|ƒ‚dS)NzBpyarrow>=7.0.0 is required for PyArrow backed ArrowExtensionArray.)r
Ú ImportError)Úmsg©r úVd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/core/arrays/string_arrow.pyÚ_chk_pyarrow_available4sr"csÞeZdZUdZded<ddœ‡fdd„ Zddœd    d
„ZedZd ddœdd„ƒZed[d ddœdd„ƒZ    e
ddœdd„ƒZ dddœ‡fdd„ Z ‡fdd„Z ddœdd„Zd\ddœ‡fd d!„ ZejZd]d dd"œd#d$„Zdd%ejdfdddd&œ‡fd'd(„ Zd^d)d*œd+d,„Zd_d)d*œd-d.„Zd`d0d1ddddd2œ‡fd3d4„ Zdad)ddd5d6œd7d8„Zdbddd5d9œd:d;„Zd<d=„Zd>d?„Zd@dA„ZdBdC„ZdDdE„Z dFdG„Z!dHdI„Z"dJdK„Z#dLdM„Z$dNdO„Z%dPdQ„Z&dRdS„Z'dcdTdU„Z(dddVdW„Z)dedXdY„Z*‡Z+S)fÚArrowStringArraya³
    Extension array for string data in a ``pyarrow.ChunkedArray``.
 
    .. versionadded:: 1.2.0
 
    .. warning::
 
       ArrowStringArray is considered experimental. The implementation and
       parts of the API may change without warning.
 
    Parameters
    ----------
    values : pyarrow.Array or pyarrow.ChunkedArray
        The array of data.
 
    Attributes
    ----------
    None
 
    Methods
    -------
    None
 
    See Also
    --------
    :func:`pandas.array`
        The recommended function for creating a ArrowStringArray.
    Series.str
        The string methods are available on Series backed by
        a ArrowStringArray.
 
    Notes
    -----
    ArrowStringArray returns a BooleanArray for comparison methods.
 
    Examples
    --------
    >>> pd.array(['This is', 'some text', None, 'data.'], dtype="string[pyarrow]")
    <ArrowStringArray>
    ['This is', 'some text', <NA>, 'data.']
    Length: 4, dtype: string
    rÚ_dtyperrcs4tƒ |¡tdd|_tj |jj¡s0t    dƒ‚dS)NÚpyarrow)ÚstoragezBArrowStringArray requires a PyArrow (chunked) array of string type)
ÚsuperÚ__init__rr$ÚpaÚtypesÚ    is_stringÚ_dataÚtypeÚ
ValueError)ÚselfÚvalues©Ú    __class__r r!r(os   ÿzArrowStringArray.__init__ÚintcCs
t|jƒS)z]
        Length of this array.
 
        Returns
        -------
        length : int
        )Úlenr,©r/r r r!Ú__len__xszArrowStringArray.__len__NFz Dtype | NoneÚbool©ÚdtypeÚcopycCsÒddlm}tƒ|rHt|tƒr(|dksHt|ƒ}t|tƒrD|jdksHt‚t||ƒr†|j    }|j
}t j ||dd}|t j||t  ¡dƒSt|t jt jfƒr¬|t |t  ¡¡ƒSt j ||d}|t j|t  ¡d    d
ƒS) Nr)ÚBaseMaskedArrayÚstringr%F)r:Zconvert_na_value)Úmaskr-©r:T)r-Ú from_pandas)Zpandas.core.arrays.maskedr;r"Ú
isinstanceÚstrrrr&ÚAssertionErrorZ_maskr,rZensure_string_arrayr)Úarrayr<ÚArrayZ ChunkedArrayÚpcÚcast)ÚclsZscalarsr9r:r;Z    na_valuesÚresultr r r!Ú_from_sequence‚s 
zArrowStringArray._from_sequencecCs|j|||dS)Nr8)rI)rGÚstringsr9r:r r r!Ú_from_sequence_of_stringsšsz*ArrowStringArray._from_sequence_of_stringscCs|jS)z3
        An instance of 'string[pyarrow]'.
        )r$r5r r r!r9 szArrowStringArray.dtype)Úlocrcs*t|tƒs|tjk    rtdƒ‚tƒ ||¡S)NúScalar must be NA or str)r@rAÚ
libmissingÚNAÚ    TypeErrorr'Úinsert)r/rLÚitemr1r r!rQ§szArrowStringArray.insertcsvt|ƒr*t|ƒrd}qjt|tƒsjtdƒ‚n@tj|tdd}d|t|ƒ<|D]}|dksJt|tƒsJtdƒ‚qJtƒ     |¡S)z-Maybe convert value to be pyarrow compatible.NrMTr8)
rrr@rArPÚnprCÚobjectr'Ú_maybe_convert_setitem_value)r/ÚvalueÚvr1r r!rU¬s
 
 
z-ArrowStringArray._maybe_convert_setitem_valueznpt.NDArray[np.bool_]cCsXdd„dd„|DƒDƒ}t|ƒs2tjt|ƒtdStj|jt |¡d}tj|tj    dS)NcSs*g|]"}|jt ¡t ¡fkr| ¡‘qSr )r-r)r<ÚnullZas_py)Ú.0Z    pa_scalarr r r!Ú
<listcomp>¼sþz)ArrowStringArray.isin.<locals>.<listcomp>cSsg|]}tj|dd‘qS)T)r?)r)Zscalar)rYrVr r r!rZ¾s)r9)Ú    value_set)
r4rSÚzerosr7rEZis_inr,r)rCZbool_)r/r0r[rHr r r!Úisin»s þzArrowStringArray.isinTr>cs†t|ƒ}t||jƒr$|r | ¡S|St|tƒrL|j t     |j
¡¡}|  |¡St|t jƒrvt   |t j¡rv|j|t jdStƒj||dS)N)r9Úna_valuer>)rr r9r:r@rr,rFr)Zfrom_numpy_dtypeZ numpy_dtypeÚ__from_arrow__rSZ
issubdtypeZfloatingZto_numpyÚnanr'Úastype)r/r9r:Údatar1r r!raËs 
 
zArrowStringArray.astype)r9Úconvertc     Csddlm}m}|dkr|j}|dkr.|jj}t|ƒ}t |¡}t|ƒsPt    |ƒr®t|ƒr^|}    n|}    t|ƒ}
|
rrd}t
j |||  d¡d|t |¡d} |
s¤d|dd…<|    | |ƒSt |ƒrút|ƒsút
j |||  d¡d|d} tj| |t ¡dd    } t|ƒ| ƒSt
  |||  d¡¡SdS)
Nr)Ú BooleanArrayÚ IntegerArrayéZuint8F)rcr^r9)rcr^T)r=r-r?)Z pandas.arraysrdrer9r^rrSZasarrayr r rZmap_infer_maskÚviewrrr)rCr<r-) r/Úfr^r9rcrdrer=ZarrÚ constructorZna_value_is_narHr r r!Ú_str_mapásH
÷  
ÿ zArrowStringArray._str_mapr)ÚcaseÚflagsÚregexcs¨|rtƒtƒ |||||¡S|rT|dkrDtƒtƒ |||||¡St |j|¡}n,|rht |j|¡}nt t |j¡| ¡¡}t    ƒ 
|¡}t |ƒs¤t |ƒ|t |ƒ<|S)NF) rr'Ú _str_containsrEZmatch_substring_regexr,Zmatch_substringÚ
utf8_upperÚupperrr_rr7)r/ÚpatrkrlÚnarmrHr1r r!rns zArrowStringArray._str_containsrA)rqcCs dt |¡›}|j||ddS)Nú^T©rrrm©ÚreÚescapern©r/rqrrr r r!Ú_str_startswith4sz ArrowStringArray._str_startswithcCs t |¡›d}|j||ddS)Nú$Trtrurxr r r!Ú _str_endswith8szArrowStringArray._str_endswithéÿÿÿÿzstr | re.Patternzstr | Callable)rqÚreplÚnrkrlrmc    sft|tjƒst|ƒs|r|r8tƒtƒ ||||||¡S|rBtjntj    }||j
|||d}t |ƒ|ƒS)N)ÚpatternÚ replacementZmax_replacements) r@rvÚPatternÚcallablerr'Ú _str_replacerEZreplace_substring_regexZreplace_substringr,r-)    r/rqr}r~rkrlrmÚfuncrHr1r r!rƒ<s     zArrowStringArray._str_replacez Scalar | None)rqrkrlrrcCs(| d¡sd|›}|j||||ddS)NrsT)rm)Ú
startswithrn©r/rqrkrlrrr r r!Ú
_str_matchMs
 
zArrowStringArray._str_match)rkrlrrcCs.| d¡r| d¡r|›d}| ||||¡S)Nrzz//$)Úendswithr‡r†r r r!Ú_str_fullmatchTs
zArrowStringArray._str_fullmatchcCst |j¡}tƒ |¡S©N)rEZ utf8_is_alnumr,rr_©r/rHr r r!Ú _str_isalnum[s zArrowStringArray._str_isalnumcCst |j¡}tƒ |¡SrŠ)rEZ utf8_is_alphar,rr_r‹r r r!Ú _str_isalpha_s zArrowStringArray._str_isalphacCst |j¡}tƒ |¡SrŠ)rEZutf8_is_decimalr,rr_r‹r r r!Ú_str_isdecimalcs zArrowStringArray._str_isdecimalcCst |j¡}tƒ |¡SrŠ)rEZ utf8_is_digitr,rr_r‹r r r!Ú _str_isdigitgs zArrowStringArray._str_isdigitcCst |j¡}tƒ |¡SrŠ)rEZ utf8_is_lowerr,rr_r‹r r r!Ú _str_islowerks zArrowStringArray._str_islowercCst |j¡}tƒ |¡SrŠ)rEZutf8_is_numericr,rr_r‹r r r!Ú_str_isnumericos zArrowStringArray._str_isnumericcCst |j¡}tƒ |¡SrŠ)rEZ utf8_is_spacer,rr_r‹r r r!Ú _str_isspacess zArrowStringArray._str_isspacecCst |j¡}tƒ |¡SrŠ)rEZ utf8_is_titler,rr_r‹r r r!Ú _str_istitlews zArrowStringArray._str_istitlecCst |j¡}tƒ |¡SrŠ)rEZ utf8_is_upperr,rr_r‹r r r!Ú _str_isupper{s zArrowStringArray._str_isuppercCst |j¡}tƒ |¡SrŠ)rEZ utf8_lengthr,rr_r‹r r r!Ú_str_lens zArrowStringArray._str_lencCst|ƒt |j¡ƒSrŠ)r-rEZ
utf8_lowerr,r5r r r!Ú
_str_lowerƒszArrowStringArray._str_lowercCst|ƒt |j¡ƒSrŠ)r-rEror,r5r r r!Ú
_str_upper†szArrowStringArray._str_uppercCs2|dkrt |j¡}ntj|j|d}t|ƒ|ƒS©N)Ú
characters)rEZutf8_trim_whitespacer,Z    utf8_trimr-©r/Zto_striprHr r r!Ú
_str_strip‰szArrowStringArray._str_stripcCs2|dkrt |j¡}ntj|j|d}t|ƒ|ƒSr˜)rEZutf8_ltrim_whitespacer,Z
utf8_ltrimr-ršr r r!Ú _str_lstripszArrowStringArray._str_lstripcCs2|dkrt |j¡}ntj|j|d}t|ƒ|ƒSr˜)rEZutf8_rtrim_whitespacer,Z
utf8_rtrimr-ršr r r!Ú _str_rstrip—szArrowStringArray._str_rstrip)NF)NF)T)NNT)N)N)r|TrT)TrN)TrN)N)N)N),Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ú__annotations__r(r6Ú classmethodrIrKÚpropertyr9rQrUr]rarNrOZ _str_na_valuerjrSr`rnryr{rƒr‡r‰rŒrrŽrrr‘r’r“r”r•r–r—r›rœrÚ __classcell__r r r1r!r#?sp
-    
ÿ ÿ=ÿùÿÿ
 
r#)5Ú
__future__rrvÚtypingrrÚnumpyrSZ pandas._libsrrrNZpandas._typingrrr    Z pandas.compatr
Zpandas.core.dtypes.commonr r r rrrrZpandas.core.dtypes.missingrZpandas.core.arrays.arrowrZpandas.core.arrays.booleanrZpandas.core.arrays.integerrZpandas.core.arrays.numericrZpandas.core.arrays.string_rrZ pandas.core.strings.object_arrayrr%r)Zpyarrow.computeZcomputerEZ%pandas.core.arrays.arrow._arrow_utilsrrAZNATypeZArrowStringScalarOrNATr"r#r r r r!Ú<module>s*  $