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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
Ë
nñúh+™ãóH—ddlmZddlmZddlZddlmZddlmZm    Z    m
Z
m Z ddl Z ddl ZddlmZmZddlmZmZddlmZdd    lmZdd
lmZmZdd lmZdd l m!Z!dd l"m#Z#ddl$m%Z%m&Z&m'Z'ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.ddl/mZm0Z0m1Z1m2Z2ddl3m4Z4ddl5m6Z6ddl7m8Z8ddl9m:Z:m;Z;ddl<m=Z=m>Z>ddl?m@Z@ddlAmBZBddlCmDZDddlEmFZFddlGmHZHer(ddlImJZJddlKZKddlLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVddlWmXZXe'Gd„de&««ZYGd „d!e8«ZZGd"„d#eZe@«Z[Gd$„d%e[«Z\y)&é)Ú annotations)ÚpartialN)ÚPath)Ú TYPE_CHECKINGÚAnyÚLiteralÚcast)Ú
get_optionÚusing_string_dtype)ÚlibÚmissing)Ú NDArrayBacked)Úensure_string_array)Ú HAS_PYARROWÚpa_version_under10p1)Úfunction)Údoc)Úfind_stack_level)ÚExtensionDtypeÚStorageExtensionDtypeÚregister_extension_dtype)Ú is_array_likeÚ is_bool_dtypeÚis_integer_dtypeÚis_object_dtypeÚis_string_dtypeÚ pandas_dtype)r ÚnanopsÚopsÚ    roperator)Úisin)Úmasked_reductions)ÚExtensionArray)Ú FloatingArrayÚ FloatingDtype)Ú IntegerArrayÚ IntegerDtype)ÚNumpyExtensionArray)Ú extract_array)Úcheck_array_indexer)Úisna)Úprinting)ÚMutableMapping)
Ú    ArrayLikeÚAxisIntÚDtypeÚDtypeObjÚ NumpySorterÚNumpyValueArrayLikeÚScalarÚSelfÚnptÚtype_t)ÚSeriescóއ—eZdZdZedd„«Zedd„«ZdZdejf                    dd„Z
dd„Z dd„Z dd    „Z dˆfd
„ Zd „Zedd „«Zedd „«Z        dd„Zdd„Z                dd„ZˆxZS)Ú StringDtypeaŽ
    Extension dtype for string data.
 
    .. warning::
 
       StringDtype is considered experimental. The implementation and
       parts of the API may change without warning.
 
    Parameters
    ----------
    storage : {"python", "pyarrow"}, optional
        If not given, the value of ``pd.options.mode.string_storage``.
    na_value : {np.nan, pd.NA}, default pd.NA
        Whether the dtype follows NaN or NA missing value semantics.
 
    Attributes
    ----------
    None
 
    Methods
    -------
    None
 
    Examples
    --------
    >>> pd.StringDtype()
    string[python]
 
    >>> pd.StringDtype(storage="pyarrow")
    string[pyarrow]
    có>—|jtjuryy)NÚstringÚstr)Ú    _na_valueÚ
libmissingÚNA©Úselfs úMH:\Change_password\venv_build\Lib\site-packages\pandas/core/arrays/string_.pyÚnamezStringDtype.name€s€à >‰>œZŸ]™]Ñ *Øàócó—|jS©N)r>rAs rCÚna_valuezStringDtype.na_value‰s €à~‰~ÐrE)Ústorager>Ncó4—|€@|tjurtd«}|dk(rtrd}nd}ntd«}|dk(rd}|dk(r6t    j
dt t«¬«d}tj}|dvrtd    |›d
«‚|dk(rtr td «‚t|t«r&tj|«rtj}n |tjurtd |›«‚t!t"|«|_||_y) Nzmode.string_storageÚautoÚpyarrowÚpythonÚ pyarrow_numpya]The 'pyarrow_numpy' storage option name is deprecated and will be removed in pandas 3.0. Use 'pd.StringDtype(storage="pyarrow", na_value-np.nan)' to construct the same dtype.
Or enable the 'pd.options.future.infer_string = True' option globally and use the "str" alias as a shorthand notation to specify a dtype (instead of "string[pyarrow_numpy]").©Ú
stacklevel>rMrLz+Storage must be 'python' or 'pyarrow'. Got z     instead.z;pyarrow>=10.0.1 is required for PyArrow backed StringArray.z('na_value' must be np.nan or pd.NA, got )r?r@r
rÚwarningsÚwarnÚ FutureWarningrÚnpÚnanÚ
ValueErrorrÚ ImportErrorÚ
isinstanceÚfloatÚisnanr    r=rIr>)rBrIrHs   rCÚ__init__zStringDtype.__init__s€ð ˆ?ØœzŸ}™}Ñ,Ü$Ð%:Ó;Ø˜fÒ$Ý"Ø"+™à"*™ä$Ð%:Ó;Ø˜fÒ$Ø&Gà oÒ %Ü M‰Mð8ô Ü+Ó-õ     ð ˆGÜ—v‘vˆHð Ð/Ñ /ÜØ=¸g¸YÀiÐPóð ð iÒ Õ$8ÜØMóð ô h¤Ô &¬2¯8©8°HÔ+=ô—v‘v‰HØ œZŸ]™]Ñ *ÜÐGÈÀzÐRÓSÐ SäœC Ó)ˆŒ Ø!ˆrEcó¾—|jtjur|j›d|j›dS|jdk(rdnd}d|›d|j›dS)    Nú[ú]rLÚzstorage='python', z <StringDtype(z    na_value=z)>)r>r?r@rDrI)rBrIs  rCÚ__repr__zStringDtype.__repr__ÄsZ€Ø >‰>œZŸ]™]Ñ *Ø—i‘i[  $§,¡, ¨qÐ1Ð 1à ŸL™L¨IÒ5‘bÐ;OˆGØ" 7 )¨9°T·^±^Ð4DÀBÐGÐ GrEcó,—t|t«r'|dk(s||jk(ry    |j|«}t|t |««r3|j|jk(xr|j|juSy#tt
f$rYywxYw)Nr<TF)    rXr=rDÚconstruct_from_stringÚ    TypeErrorrWÚtyperIrH)rBÚothers  rCÚ__eq__zStringDtype.__eq__ËsŒ€ô eœSÔ !à˜Ò  E¨T¯Y©YÒ$6Øð Ø×2Ñ2°5Ó9ô
eœT $›ZÔ (Ø—<‘< 5§=¡=Ñ0ÒT°T·]±]ÀeÇnÁnÐ5TÐ TØøô œ{Ð+ò ñð ús§BÂBÂBcó|—|jdd«|_|jdtj«|_y)NrIrMr>)ÚpoprIr?r@r>)rBÚstates  rCÚ __setstate__zStringDtype.__setstate__Üs*€à—y‘y ¨HÓ5ˆŒ ØŸ™ ;´
· ± Ó>ˆrEcó •—t‰|«SrG)ÚsuperÚ__hash__)rBÚ    __class__s €rCrmzStringDtype.__hash__ásø€ä‰wÑÓ!Ð!rEcó>—t|j|jffSrG)r:rIrHrAs rCÚ
__reduce__zStringDtype.__reduce__ås€Ü˜TŸ\™\¨4¯=©=Ð9Ð9Ð9rEcó—tSrG)r=rAs rCrdzStringDtype.typeès€äˆ
rEcó@—t|t«stdt|«›«‚|dk(r|«S|dk(r!t    «r|t
j ¬«S|dk(r    |d¬«S|dk(r    |d    ¬«S|d
k(r    |d ¬«Std |j›d |›d«‚)a|
        Construct a StringDtype from a string.
 
        Parameters
        ----------
        string : str
            The type of the name. The storage type will be taking from `string`.
            Valid options and their storage types are
 
            ========================== ==============================================
            string                     result storage
            ========================== ==============================================
            ``'string'``               pd.options.mode.string_storage, default python
            ``'string[python]'``       python
            ``'string[pyarrow]'``      pyarrow
            ========================== ==============================================
 
        Returns
        -------
        StringDtype
 
        Raise
        -----
        TypeError
            If the string is not a valid option.
        z.'construct_from_string' expects a string, got r<r=©rHzstring[python]rM©rIzstring[pyarrow]rLzstring[pyarrow_numpy]rNzCannot construct a 'z' from 'ú')rXr=rcrdr rTrUÚ__name__)Úclsr<s  rCrbz!StringDtype.construct_from_stringìs²€ô8˜&¤#Ô&ÜØ@ÄÀfÃÀÐOóð ð XÒ Ù“5ˆLØ uŠ_Ô!3Ô!5Ù¤§¡Ô'Ð 'Ø Ð'Ò 'Ù˜xÔ(Ð (Ø Ð(Ò (Ù˜yÔ)Ð )Ø Ð.Ò .á˜Ô/Ð /äÐ2°3·<±<°.ÀÈÈÐPQÐRÓSÐ SrEcóü—ddlm}m}|jdk(r"|jt
j urtS|jdk(r|jt
j ur|S|jdk(rtS|S)zq
        Return the array type associated with this dtype.
 
        Returns
        -------
        type
        r)ÚArrowStringArrayÚArrowStringArrayNumpySemanticsrMrL)    Úpandas.core.arrays.string_arrowryrzrIr>r?r@Ú StringArrayÚStringArrayNumpySemantics)rBryrzs   rCÚconstruct_array_typez StringDtype.construct_array_typesc€÷    
ð
<‰<˜8Ò #¨¯©¼*¿-¹-Ñ(GÜÐ Ø \‰\˜YÒ &¨4¯>©>¼Z¿]¹]Ñ+JØ#Ð #Ø \‰\˜XÒ %Ü,Ð ,à1Ð 1rEcóä—t«}t«}|D]s}t|t«r7|j|j«|j|j
«ŒJt|t j«r|jdvrŒsyt|«dk(rd}ntt|««}t|«dk(rtj}ntt|««}t||¬«S)N)ÚUÚTérL©rIrH)ÚsetrXr:ÚaddrIrHrTÚdtypeÚkindÚlenÚnextÚiterr?r@)rBÚdtypesÚstoragesÚ    na_valuesr†rIrHs       rCÚ_get_common_dtypezStringDtype._get_common_dtype5s»€Ü“5ˆÜ“Eˆ    àò    ˆEܘ%¤Ô-Ø— ‘ ˜UŸ]™]Ô+Ø— ‘ ˜eŸn™nÕ-ܘE¤2§8¡8Ô,°·±¸zÑ1IØáð    ô ˆx‹=˜AÒ à‰Gäœ4 ›>Ó*ˆGô ˆy‹>˜QÒ ä!—}‘}‰HäœD ›OÓ,ˆHä 7°XÔ>Ð>rEcóL—|jdk(r8|jtjurddlm}||«Sddlm}||«Sddl}t||j«r|g}n |j}g}|D]<}|jd¬«}t||j¬«}|j|«Œ>t|«dk(rt!j"gt$¬    «}nt!j&|«}t(j+t(«}t-j.|||«|S)
zH
        Construct StringArray from pyarrow Array/ChunkedArray.
        rLr)ry)rzNF)Úzero_copy_onlyrs©r†)rIr>r?r@r{ryrzrLrXÚArrayÚchunksÚto_numpyrrHÚappendrˆrTÚarrayÚobjectÚ concatenater|Ú__new__rr[)    rBr–ryrzrLr“ÚresultsÚarrÚnew_string_arrays             rCÚ__from_arrow__zStringDtype.__from_arrow__Qsÿ€ð <‰<˜9Ò $؏~‰~¤§¡Ñ.ÝLá'¨Ó.Ð.õñ6°eÓ<Ð<ó ä˜% §¡Ô/ؘ‘🙐àˆGØò $ð—l‘l°%lÓ8Ü)¨#¸¿ ¹ ÔFØ—‘˜sÕ#ð  $ô ˆv‹;˜!Ò Ü—(‘(˜2¤VÔ,‰Cä—.‘. Ó)ˆCô'×.Ñ.¬{Ó;ÐÜ×ÑÐ/°°dÔ;ØÐrE)Úreturnr=)ržúlibmissing.NAType | float)rIz
str | NonerHrŸržÚNone)rer—ržÚbool)rizMutableMapping[str, Any]ržr )ržÚint)ržz    type[str])ržr5)ržztype_t[BaseStringArray])r‹zlist[DtypeObj]ržzDtypeObj | None)r–z$pyarrow.Array | pyarrow.ChunkedArrayržÚBaseStringArray)rvÚ
__module__Ú __qualname__Ú__doc__ÚpropertyrDrHÚ    _metadatar?r@r[r`rfrjrmrprdÚ classmethodrbr~rŽrÚ __classcell__©rns@rCr:r:^sÒø„ñð@òóððòóðð)€Ið#Ø.8¯m©mð3"àð3"ð,ð3"ð
ó    3"ójHóó"?õ
"ò:ðòóððò+Tóð+Tð`2à     ó2ó0?ð8+ Ø9ð+ à    ÷+ rEr:có臗eZdZUdZded<d„Zeej«d„«Ze    dd„«Z
ddd„Z e jdd    f            dd
„Z                dd „Ze jdd    f            dd „Zddˆfd „ ZˆxZS)r£z8
    Mixin class for StringArray, ArrowStringArray.
    r:r†có¨—|tjtjtjfvrœt    |t
j «r‚|jtk(ro|jddjd«}tjd|›d|j›dtt«¬«|||jt««St S)NéÚ_ruz'' operations between boolean dtype and z| are deprecated and will raise in a future version. Explicitly cast the strings to a boolean dtype before operating instead.rO)r Úror_Úrand_ÚrxorrXrTÚndarrayr†r¡rvÚstriprQrRÚDeprecationWarningrÚastypeÚNotImplemented)rBreÚopÚop_names    rCÚ_logical_methodzBaseStringArray._logical_methodˆs§€à ”9—>‘>¤9§?¡?´I·N±NÐCÑ Cܘ5¤"§*¡*Ô-Ø— ‘ œtÒ#ð—k‘k ! "o×+Ñ+¨CÓ0ˆGÜ M‰MؐG9ÐCÀDÇJÁJÀ<ðPPðPô#Ü+Ó-õ  ñe˜TŸ[™[¬Ó.Ó/Ð /ÜÐrEcó˜—|jdkDr|Dcgc]}|j«‘Œc}St|j««Scc}w)Nr®)ÚndimÚtolistÚlistr”)rBÚxs  rCr½zBaseStringArray.tolistšs:€à 9‰9qŠ=Ø(,Ö- 1A—H‘H•JÒ-Ð -ܐD—M‘M“OÓ$Ð$ùò.s”Acóf—tj|d¬«dvrt‚|j||¬«S)NT©Úskipna)r<Úemptyr‘)r Ú infer_dtyperVÚ_from_sequence)rwÚscalarsr†s   rCÚ _from_scalarszBaseStringArray._from_scalars s2€ä ?‰?˜7¨4Ô 0Ð8KÑ KäÐ Ø×!Ñ! '°Ð!Ó7Ð7rEcó@—ttjd| ¬«}|S)N)ú    ú ú
)Ú escape_charsÚ quote_strings)rr,Ú pprint_thing)rBÚboxedÚ    formatters   rCÚ
_formatterzBaseStringArray._formatter§s%€ÜÜ × !Ñ !Ø+Ø#˜)ô
ˆ    ð
ÐrENTc óÊ—|jjtjur|j    ||||¬«Sddlm}|€ |j}|tjur|jj}t|«}tj|«}t|«s t|«r¢t|«rt}n|}t|«}    |    rd}n#|tjd«k(r t|«}tj|||j!d«d|tjt#t$|««¬«}
|    sd|dd||
|«S|j'|||||«S)    N)rHr†Úconvertr)Ú BooleanArrayr®r¡Úuint8F©rÓrHr†)r†rHrTrUÚ_str_map_nan_semanticsÚ pandas.arraysrÔr Ú
no_defaultr+Úasarrayrrr&r¡Úmap_infer_maskÚviewr    rdÚ_str_map_str_or_object) rBÚfrHr†rÓrÔÚmaskr›Ú constructorÚna_value_is_naÚresults            rCÚ_str_mapzBaseStringArray._str_map¯s?€ð :‰:× Ñ ¤"§&¡&Ñ (Ø×.Ñ.ؘH¨E¸7ð/óð õ    /à ˆ=Ø—J‘JˆEØ ”s—~‘~Ñ %Ø—z‘z×*Ñ*ˆHäD‹zˆÜj‰j˜Óˆä ˜EÔ "¤m°EÔ&:ä Ô&Ü*‘ à* ä! (›^ˆNÙØ‘Øœ"Ÿ(™( 6Ó*Ò*ä ›>Ü×'Ñ'ØØØ—    ‘    ˜'Ó"ØØ!ô—h‘hœt¤D¨%Ó0Ó1ô
ˆFñ"ؐ‘Qá˜v tÓ,Ð ,ð×.Ñ.¨u°hÀÀQÈÓMÐ MrEcón—t|«r…t|«sztj|||j    d«d|¬«}|j
j dk(r'ddl}|j|||j«d¬«}t|«|«Stj|||j    d««S)NrÕF)rÓrHrLrT)rßrdÚ from_pandas) rrr rÛrÜr†rIrLr–Ú large_stringrd)rBr†rHr›rÞrßrâÚpas        rCrÝz&BaseStringArray._str_map_str_or_objectæs¤€ô ˜5Ô !¬/¸%Ô*@ä×'Ñ'ؐQ˜Ÿ    ™     'Ó*°EÀHôˆFðz‰z×!Ñ! YÒ.Û$àŸ™Ø ¨B¯O©OÓ,=È4ð"óð”4˜“:˜fÓ%Ð %ô×%Ñ% c¨1¨d¯i©i¸Ó.@ÓAÐ ArEc óv—|€ |j}|tjur$t|«rd}n|jj}t |«}t j|«}t|«s t|«r«t |«}|rt|«rd}nd}tj|||jd«d|t jtt|««¬«}|r?t|«r4|j«r$|jd«}t j||<|S|j!|||||«S)NFrrÕrÖÚfloat64)r†r rÙrrHr+rTrÚrrÛrÜr    rdÚanyr¶rUrÝ)    rBrÞrHr†rÓrßr›rárâs             rCr×z&BaseStringArray._str_map_nan_semanticss €ð ˆ=Ø—J‘JˆEØ ”s—~‘~Ñ %ܘUÔ#à ‘àŸ:™:×.Ñ.äD‹zˆÜj‰j˜Óˆä ˜EÔ "¤m°EÔ&:Ü! (›^ˆNÙÜ# EÔ*Ø ‘Hð %Hä×'Ñ'ØØØ—    ‘    ˜'Ó"ØØ!Ü—h‘hœt¤D¨%Ó0Ó1ô ˆFñÔ"2°5Ô"9¸d¿h¹h¼jð Ÿ™ yÓ1Ü!Ÿv™vt‘ àˆMð×.Ñ.¨u°hÀÀQÈÓMÐ MrEcó>•—| td«‚t‰|    |¬«S)Nz)Cannot change data-type for string array.r‘)rcrlrÜ)rBr†rns  €rCrÜzBaseStringArray.view4s&ø€Ø Ð ÜÐGÓHÐ H܉w‰| %ˆ|Ó(Ð(rE)r†r1ržr5©F)rÏr¡)r†ú Dtype | NonerÓr¡)r›z
np.ndarrayrßúnpt.NDArray[np.bool_]rG)r†ríržr.)rvr¤r¥r¦Ú__annotations__rºrr#r½r©rÇrÑr rÙrãrÝr×rÜrªr«s@rCr£r£sÌø…ñð Óòñ$    ˆ×    Ñ    Óñ%ó ð%ð
ò8óð8ô ð—‘Ø"Øð 5Nðð    5Nð
ó 5NðnBðð    Bð $ó BðB—‘Ø"Øð .Nðð    .Nð
ó .N÷`)ò)rEr£cóȇ—eZdZUdZdZdZejZde    d<d&d'ˆfd„ Z
d„Z d    „Z e d
dd œd(d „«Ze d
dd œ            d(d „«Ze d)d„«Zd*d„Zd+d„Zd„Zd,ˆfd„ Zd-d„Zd.d„Zd/d„Zd0d1ˆfd„ Zddddœ                            d2d„Zddœd3d„Zd4ˆfd„ Zd5d6d„Zd5d6d„Zd
ddd œ                            d7d!„Zd0d8d"„Zd&d9d#„Z e!e"jF«        d:                            d;ˆfd$„ «Z#d%„Z$e$Z%ˆxZ&S)<r|aY
    Extension array for string data.
 
    .. warning::
 
       StringArray is considered experimental. The implementation and
       parts of the API may change without warning.
 
    Parameters
    ----------
    values : array-like
        The array of data.
 
        .. warning::
 
           Currently, this expects an object-dtype ndarray
           where the elements are Python strings
           or nan-likes (``None``, ``np.nan``, ``NA``).
           This may change without warning in the future. Use
           :meth:`pandas.array` with ``dtype="string"`` for a stable way of
           creating a `StringArray` from any sequence.
 
        .. versionchanged:: 1.5.0
 
           StringArray now accepts array-likes containing
           nan-likes(``None``, ``np.nan``) for the ``values`` parameter
           in addition to strings and :attr:`pandas.NA`
 
    copy : bool, default False
        Whether to copy the array of data.
 
    Attributes
    ----------
    None
 
    Methods
    -------
    None
 
    See Also
    --------
    :func:`pandas.array`
        The recommended function for creating a StringArray.
    Series.str
        The string methods are available on Series backed by
        a StringArray.
 
    Notes
    -----
    StringArray returns a BooleanArray for comparison methods.
 
    Examples
    --------
    >>> pd.array(['This is', 'some text', None, 'data.'], dtype="string")
    <StringArray>
    ['This is', 'some text', <NA>, 'data.']
    Length: 4, dtype: string
 
    Unlike arrays instantiated with ``dtype="object"``, ``StringArray``
    will convert the values to strings.
 
    >>> pd.array(['1', 1], dtype="object")
    <NumpyExtensionArray>
    ['1', 1]
    Length: 2, dtype: object
    >>> pd.array(['1', 1], dtype="string")
    <StringArray>
    ['1', '1']
    Length: 2, dtype: string
 
    However, instantiating StringArrays directly with non-strings will raise an error.
 
    For comparison methods, `StringArray` returns a :class:`pandas.BooleanArray`:
 
    >>> pd.array(["a", None, "c"], dtype="string") == "a"
    <BooleanArray>
    [True, <NA>, False]
    Length: 3, dtype: boolean
    Ú    extensionrMrŸr>Fcó•—t|«}t‰|    ||¬«t|t    |««s|j «t j||jt|j|j¬««y)N©Úcopyrƒ) r)rlr[rXrdÚ    _validaterÚ_ndarrayr:Ú_storager>)rBÚvaluesrôrns   €rCr[zStringArray.__init__’saø€Ü˜vÓ&ˆä ‰Ñ˜ dÐÔ+ܘ&¤$ t£*Ô-Ø N‰NÔ Ü×ÑØ Ø M‰MÜ  § ¡ ¸¿¹Ô Gõ    
rEcóÌ—t|j«r,tj|jd¬«s t    d«‚|jj
dk7r#t    d|jj
›d«‚|jj dkDr/tj|jjd««y    tj|j«y    )
z*Validate that we only store NA or strings.TrÁz7StringArray requires a sequence of strings or pandas.NAr—z>StringArray requires a sequence of strings or pandas.NA. Got 'ú' dtype instead.r‚ÚKN)    rˆrör Úis_string_arrayrVr†r¼Úconvert_nans_to_NAÚravelrAs rCrõzStringArray._validatežs­€ä ˆt}‰}Ô ¤c×&9Ñ&9¸$¿-¹-ÐPTÕ&UÜÐVÓWÐ WØ =‰=× Ñ  (Ò *ÜðØ—M‘M×'Ñ'Ð(Ð(8ð:óð ð
=‰=× Ñ  Ò !ä × "Ñ " 4§=¡=×#6Ñ#6°sÓ#;Õ <ä × "Ñ " 4§=¡=Õ 1rEc
ó̗t|«r|jjSt|t«s2t d|›d|j›dt |«j›d«‚|S)NúInvalid value 'ú ' for dtype 'ú3'. Value should be a string or missing value, got 'ú
' instead.)r+r†rHrXr=rcrdrv©rBÚvalues  rCÚ_validate_scalarzStringArray._validate_scalar®sf€ä Œ;Ø—:‘:×&Ñ&Ð &ܘE¤3Ô'ÜØ! % ¨ °d·j±j°\ðB1Ü15°e³×1EÑ1EÐ0FÀjðRóð ðˆ rEN©r†rôcól—|rAt|t«r|dk(s,t|«}t|t«r|jdk(s4J‚t «rtdt j¬«}n td¬«}ddlm    }|j}t||«r6|j}|j}tj||d¬«}|||<nBtj|«rt j |«}tj|||¬    «}|j#|«}t%j&|||«|S)
Nr<rMrƒrtr)ÚBaseMaskedArrayF)rôÚconvert_na_value)rHrô)rXr=rr:rIr rTrUÚpandas.core.arrays.maskedr    rHÚ_maskÚ_datar rÚis_pyarrow_arrayr–r™rr[)    rwrÆr†rôr    rHrrârœs             rCrÅzStringArray._from_sequence¹sÿ€á œ* U¬CÔ0°U¸hÒ5FÜ  Ó'ˆEܘe¤[Ô1°e·m±mÀxÒ6OÐ OÐOä!Ô#Ü#¨H¼r¿v¹vÔF‘ä#¨HÔ5å=à—>‘>ˆÜ g˜Ô /àŸ ™ ˆIØ—]‘]ˆFÜ×,Ñ,¨V¸$ÐQVÔWˆFØ (ˆF9Ò ô×#Ñ# GÔ,ôŸ(™( 7Ó+ä×,Ñ,¨W¸xÈdÔSˆFðŸ;™; sÓ+ÐÜ×ÑÐ/°¸Ô?àÐrEcó*—|j|||¬«S)Nr)rÅ)rwÚstringsr†rôs    rCÚ_from_sequence_of_stringsz%StringArray._from_sequence_of_stringsÞs€ð×!Ñ! '°¸TÐ!ÓBÐBrEcó—tj|t¬«}tj|dd||«j |d¬«S)Nr‘Fró)rTrÃr—r?r@r¶)rwÚshaper†røs    rCÚ_emptyzStringArray._emptyäs9€ä—‘˜%¤vÔ.ˆÜ—M‘Mˆ‰qˆ    Ù6‹{×!Ñ! %¨eÐ!Ó4Ð4rEcó°—ddl}|€|j«}|jj«}d||j    «<|j ||d¬«S)z6
        Convert myself into a pyarrow Array.
        rNT)rdrå)rLr<rörôr+r–)rBrdrçrøs    rCÚ__arrow_array__zStringArray.__arrow_array__êsN€ó    à ˆ<Ø—9‘9“;ˆDà—‘×#Ñ#Ó%ˆØ"ˆˆty‰y‹{ÑØx‰x˜ T°tˆxÓ<Ð<rEcóf—|jj«}||jjfSrG)rörôr†rH)rBr›s  rCÚ_values_for_factorizez!StringArray._values_for_factorize÷s)€Øm‰m× Ñ Ó"ˆàD—J‘J×'Ñ'Ð'Ð'rEc
ó@—tj|«rgt|«r|jj}|St |t «s2td|›d|j›dt|«j›d«‚|St|d¬«}t|«stj|t¬«}n@t |jt|j««r|Stj|«}t|«r"tj |d¬«s td    «‚|S)
z-Maybe convert value to be pyarrow compatible.rrrrT)Ú extract_numpyr‘rÁz]Invalid value for dtype 'str'. Value should be a string or missing value (or array of those).)r Ú    is_scalarr+r†rHrXr=rcrdrvr)rrTrÚr—rˆrürs  rCÚ_maybe_convert_setitem_valuez(StringArray._maybe_convert_setitem_valueüsÿ€ä =‰=˜Ô ܐEŒ{ØŸ
™
×+Ñ+ð,ˆ ô+  ¤sÔ+ÜØ% e W¨M¸$¿*¹*¸ðF:Ü:>¸u»+×:NÑ:NÐ9OðPðóðð(ˆ ô" %°tÔ<ˆEÜ  Ô'ÜŸ
™
 5´Ô7‘ܘEŸK™K¬¨d¯j©jÓ)9Ô:ؐ ôŸ
™
 5Ó)Ü5Œz¤#×"5Ñ"5°eÀDÕ"IÜðCóððˆ rEcóæ•—|j|«}t||«}tj|«}tj|«}|r |s t    d«‚|sˆ|j
|j
k(r |j }nbtj|«}t|«}|j«r2|j«}|j
j|t|«<t‰|9||«y)Nz)setting an array element with a sequence.)rr*r rrVr†rörTrÚr+rêrôrHrlÚ __setitem__)rBÚkeyrÚ
scalar_keyÚ scalar_valuerßrns      €rCrzStringArray.__setitem__sºø€Ø×1Ñ1°%Ó8ˆä! $¨Ó,ˆÜ—]‘] 3Ó'ˆ
Ü—}‘} UÓ+ˆ Ù ™lÜÐHÓIÐ IáØ{‰{˜dŸj™jÒ(ØŸ™‘äŸ
™
 5Ó)Ü˜E“{Ø—8‘8”:Ø!ŸJ™J›LEØ)-¯©×)<Ñ)<Eœ$˜u›+Ñ&ä ‰Ñ˜C Õ'rEcó2—tj|||«yrG)r#Ú_putmask©rBrßrs   rCr#zStringArray._putmask-s€ô    ×Ñ  d¨EÕ2rEcó0—tj|||«SrG)r#Ú_wherer$s   rCr&zStringArray._where3s€ô×$Ñ$ T¨4°Ó7Ð7rEc    óŽ—t|t«s%t|t«r3t|j«r|j |jd¬«}n¼t jtj|«d¬«sutj|Dcgc] }t|t«s t|«sŒ|‘Œ"c}t¬«}t|«s%tj|j t"¬«S|j%||j¬«}t'tj|«tj|««Scc}w)NFróTrÁr‘)rXr£r#rr†r¶r rürTrÚr–r=r+r—rˆÚzerosrr¡rÅr!)rBrøÚvals   rCr!zStringArray.isin9sÚ€Ü fœoÔ .Ü vœ~Ô .´?À6Ç<Á<Ô3Pà—]‘] 4§:¡:°E]Ó:‰Fä×&Ñ&¤r§z¡z°&Ó'9À$ÕGÜŸ™Ø$*ÖP˜S¬j¸¼cÔ.BÄdÈ3Åi’SÒPÜ ôô˜6”{ÜŸ8™8 D§J¡J´dÔ;Ð;à×(Ñ(¨°t·z±zÐ(ÓBˆFä”B—J‘J˜tÓ$¤b§j¡j°Ó&8Ó9Ð9ùòQs  EÂ2ETcóL•—t|«}||jk(r|r|j«S|St|t«rX|j
j«}|j «}d||<|j|j«}t||d¬«St|t«rN|j«}|j «}d||<|j|j«}t||d¬«St|t«rtj|||«Stj|tj «rU|j
j«}|j «}d||<|j|«}tj"||<|St$‰|||«S)NrFróÚ0)rr†rôrXr'rör+r¶Ú numpy_dtyper&r%r$rr#rTÚ
issubdtypeÚfloatingrUrl)rBr†rôr›rßrørns      €rCr¶zStringArray.astypeKsTø€Ü˜UÓ#ˆà D—J‘JÒ ÙØ—y‘y“{Ð"؈Kä ˜œ|Ô ,Ø—-‘-×$Ñ$Ó&ˆCØ—9‘9“;ˆD؈C‰IØ—Z‘Z × 1Ñ 1Ó2ˆFÜ ¨°5Ô9Ð 9Ü ˜œ}Ô -Ø—)‘)“+ˆCØ—9‘9“;ˆD؈C‰IØ—Z‘Z × 1Ñ 1Ó2ˆFÜ  ¨°EÔ:Ð :Ü ˜œ~Ô .ä!×(Ñ(¨¨u°dÓ;Ð ;Ü ]‰]˜5¤"§+¡+Ô .Ø—-‘-×$Ñ$Ó&ˆCØ—9‘9“;ˆD؈C‰IØ—Z‘Z Ó&ˆFÜŸ6™6ˆF4‰L؈Mä‰w‰~˜e TÓ*Ð*rEr)rÂÚkeepdimsÚaxisc óx—|jjtjurK|dvrG|dk(r!t    j
|j |¬«St    j|j |¬«S|dvr7t||«d    ||dœ|¤Ž}|r|j|g|j¬«S|Std|›d«‚)
N)rêÚallrêrÁ)ÚminÚmaxÚargminÚargmaxÚsum)rÂr0r‘zCannot perform reduction 'z' with string dtype©) r†rHrTrUrÚnananyröÚnanallÚgetattrrÅrc)rBrDrÂr/r0Úkwargsrâs       rCÚ_reducezStringArray._reducels²€ð :‰:× Ñ ¤"§&¡&Ñ (¨T°^Ñ-CؐuŠ}Ü—}‘} T§]¡]¸6ÔBÐBä—}‘} T§]¡]¸6ÔBÐBà Ð<Ñ <Ø(”W˜T 4Ó(ÐL°¸TÑLÀVÑLˆFÙØ×*Ñ*¨F¨8¸4¿:¹:Ð*ÓFÐF؈MÜÐ4°T°FÐ:MÐNÓOÐOrErÁc ó´—|dk(rd|›d|j›d}t|«‚d}d}|j}tjtj
j tjj dœ|}|jrñtdt|««}tj|«rt|«|«S|r^|dk(rtj|d    |«}n—|j«}tj |d
d ¬ «tj |d d ¬ «nVtj"|«}    tj$t'|«|    z
d¬«}|jj(|dd|d|    }||«}
|tj*|
|f«}
n-|+tj||jj(|
«}
t|«|
«} | S)a¶
        Return an ExtensionArray performing an accumulation operation.
 
        The underlying data type might change.
 
        Parameters
        ----------
        name : str
            Name of the function, supported values are:
            - cummin
            - cummax
            - cumsum
            - cumprod
        skipna : bool, default True
            If True, skip NA values.
        **kwargs
            Additional keyword arguments passed to the accumulation function.
            Currently, there is no supported kwarg.
 
        Returns
        -------
        array
 
        Raises
        ------
        NotImplementedError : subclass does not define accumulations
        Úcumprodz operation 'z' not supported for dtype 'ruN)ÚcumsumÚcumminÚcummaxrîr@r_Úpadr)Úmethodr0Úbackfillr—r‘)r†rcrörTr@ÚminimumÚ
accumulateÚmaximumÚ_hasnar    r+r2rdÚwhererôr Úpad_or_backfill_inplacer6rÃrˆrHÚhstack) rBrDrÂr<ÚmsgÚtailÚna_maskr³Únp_funcÚidxÚ    np_resultrâs             rCÚ _accumulatezStringArray._accumulate‚s©€ð8 9Ò Ø ˜vÐ%@ÀÇÁÀ ÈAÐNˆCܘC“.Ð  ð#'ˆØ%)ˆØ—-‘-ˆä—i‘iÜ—j‘j×+Ñ+Ü—j‘j×+Ñ+ñ
ð ñ    ˆð ;Š;ÜÐ2´D¸³MÓBˆG܏v‰vgŒØ!”t˜D“z 'Ó*Ð*ÙØ˜8Ò#Ü Ÿh™h w°°GÓ<‘Gð&Ÿl™l›nGÜ×3Ñ3ØØ$Øõô
×3Ñ3ØØ)Øöô—i‘i Ó(Ü—x‘x¤ G£ ¨sÑ 2¸(ÔCØŸ*™*×-Ñ-‘QØ! $ 3˜-ñ˜GÓ$ˆ    à Ð ÜŸ    ™     9¨dÐ"3Ó4‰IØ Ð  äŸ™ ¨$¯*©*×*=Ñ*=¸yÓIˆIà”d“˜IÓ&ˆØˆ rEcó´•—|jjtjur"|tj
urtjSt ‰|||«SrG)r†rHrTrUr?r@rlÚ_wrap_reduction_result)rBr0rârns   €rCrUz"StringArray._wrap_reduction_resultÔs?ø€Ø :‰:× Ñ ¤"§&¡&Ñ (¨V´z·}±}Ñ-Dä—6‘6ˆM܉wÑ-¨d°FÓ;Ð;rEc óº—tjd|«tj|j    «|j «|¬«}|j ||«S©Nr8)rørßrÂ)ÚnvÚ validate_minr"r3r”r+rU©rBr0rÂr<râs     rCr3zStringArray.minÚóH€Ü
‰˜˜FÔ#Ü"×&Ñ&Ø—=‘=“?¨¯©«¸Vô
ˆð×*Ñ*¨4°Ó8Ð8rEc óº—tjd|«tj|j    «|j «|¬«}|j ||«SrW)rXÚ validate_maxr"r4r”r+rUrZs     rCr4zStringArray.maxár[rE)r0rÂÚ    min_countc ó²—tjd|«tj|j|j «|¬«}|j ||«SrW)rXÚ validate_sumr"r7rör+rU)rBr0rÂr^r<râs      rCr7zStringArray.sumèsH€ô     ‰˜˜FÔ#Ü"×&Ñ&Ø—=‘= t§y¡y£{¸6ô
ˆð×*Ñ*¨4°Ó8Ð8rEcóD—ddlm}||j|¬«jd«}||jd|¬«}|jj|j
«|_|j
j tjur|jd«}|S)Nr)Úvalue_counts_internal)ÚdropnaÚInt64F)Úsortrc)    Úpandas.core.algorithmsrbrör¶Úindexr†rHr?r@)rBrcÚ value_countsrâs    rCrhzStringArray.value_countsösu€ÝPá˜dŸm™m°FÔ;×BÑBÀ7ÓKˆÙ˜dŸm™m°%ÀÔGˆØ—|‘|×*Ñ*¨4¯:©:Ó6ˆŒ à :‰:× Ñ ¤*§-¡-Ñ /Ø—]‘] 7Ó+ˆF؈ rEcóz—|jj}|r"|tj|j«zS|SrG)röÚnbytesr Úmemory_usage_of_objects)rBÚdeeprâs   rCÚ memory_usagezStringArray.memory_usages3€Ø—‘×%Ñ%ˆÙ ØœC×7Ñ7¸¿ ¹ ÓFÑFÐ F؈ rEcóV•—|jr td«‚t‰| |||¬«S)NzOsearchsorted requires array to be sorted, which is impossible with NAs present.)rÚsideÚsorter)rIrVrlÚ searchsorted)rBrrorprns    €rCrqzStringArray.searchsorteds7ø€ð ;Š;Üð$óð ô‰wÑ#¨%°dÀ6Ð#ÓJÐJrEcóÈ—ddlm}m}t|t«rR|j
j tjur,|j
j tjurtSt||«rht|t«rR|j
j tjur&|j
j tjus tStSt|t«r |j}t|«t|«z}|}tj|«r_t|«t|«k7r#t!dt|«›dt|«›«‚t#|«st%j&|«}||}|j(t*j,vrvt%j.|jd¬«}|j
j ||<||j||«||<t|t0«r|S|j3|«St%j4t|j«d¬«}||j||«||<|||«}|j
j t$j6urU|t8j:k(r!|j=t$j>d¬    «S|j=t$j>d
¬    «S|S) Nr)ÚArrowExtensionArrayrÔz"Lengths of operands do not match: z != r—r‘r¡TrsF) rØrsrÔrXr£r†rHr?r@r·r|rör+r Ú is_list_likerˆrVrrTrÚrvrÚARITHMETIC_BINOPSÚ
empty_likerÚ_from_backing_datar(rUÚoperatorÚner”Úbool_)    rBrer¸rsrÔrßÚvalidrâÚres_arrs             rCÚ _cmp_methodzStringArray._cmp_methods3€÷    
ô uœoÔ .Ø—
‘
×#Ñ#¬:¯=©=Ñ8Ø— ‘ ×$Ñ$¬
¯ © Ñ5ô"Ð !ä eÐ0Ô 1ܘ%¤Ô1ð—J‘J×'Ñ'¬:¯=©=Ñ8ØŸ ™ ×,Ñ,´J·M±MÑAä)Ð)ä%Ð%ä eœ[Ô )Ø—N‘NˆEäD‹zœD ›KÑ'ˆØˆä × Ñ ˜EÔ "ܐ5‹zœS ›YÒ&ä Ø8¼¸T»¸ À4ÌÈEË
À|ÐTóðô
! Ô'ÜŸ
™
 5Ó)Ø˜%‘LˆEà ;‰;œ#×/Ñ/Ñ /Ü—]‘] 4§=¡=¸ÔAˆFØŸ:™:×.Ñ.ˆF4‰LÙ˜tŸ}™}¨UÑ3°UÓ;ˆF5‰Mܘ%¤Ô&à Ø×*Ñ*¨6Ó2Ð 2ô—X‘Xœc $§-¡-Ó0¸Ô?ˆFÙ˜tŸ}™}¨UÑ3°UÓ;ˆF5‰MÙ" 6¨4Ó0ˆG؏z‰z×"Ñ"¤b§f¡fÑ,ØœŸ™Ò$Ø"×+Ñ+¬B¯H©H¸tÐ+ÓDÐDà"×+Ñ+¬B¯H©H¸uÐ+ÓEÐE؈NrErì)rôr¡ržr )r†rírôr¡)ržr|rG)ržz,tuple[np.ndarray, libmissing.NAType | float]©ržr )rßrîržr )rßrîržr5)rør.ržrî)T)rôr¡)rDr=rÂr¡r/r¡r0úAxisInt | None)rDr=rÂr¡ržr|)r0rržr)NT)rÂr¡ržr4)r0rrÂr¡r^r¢ržr4)rcr¡ržr8)rlr¡ržr¢)ÚleftN)rz$NumpyValueArrayLike | ExtensionArrayrozLiteral['left', 'right']rpzNumpySorter | Noneržznpt.NDArray[np.intp] | np.intp)'rvr¤r¥r¦Ú_typr÷r?r@r>rïr[rõrr©rÅrrrrrrr#r&r!r¶r=rSrUr3r4r7rhrmrr#rqr}Ú _arith_methodrªr«s@rCr|r|<s±ø…ñNðb €DØ€HØ+5¯=©=€IÐ(Ó8ö
 
ò2ò     ðØ>BÐQVô" óð" ðHà/3À%ñCØ ,ðCØ;?òCóðCð
ò5óð5ó
=ó(ò
õ8(ó*3ó 8ó :ö$+ðJØØ ñ PàðPðð    Pð
ð Pð ó Pð,8<õPõd<ô 9ô9ð $ØØñ 9ðð 9ðð     9ð
ð 9ð
ó 9ô    ôñ     ˆ×    $Ñ    $Ó%ð*0Ø%)ð     Kà3ð Kð'ð Kð#ð     Kð
 
(ô Kó&ð Kò>ð@ „MrEr|có`‡—eZdZdZej
Zdd„Zedddœ                    dˆfd„«Z    ˆxZ
S)    r}rMcóþ—t|j«r,tj|jd¬«s t    d«‚|jj
dk7r#t    d|jj
›d«‚y)z+Validate that we only store NaN or strings.TrÁz?StringArrayNumpySemantics requires a sequence of strings or NaNr—zFStringArrayNumpySemantics requires a sequence of strings or NaN. Got 'rúN)rˆrör rürVr†rAs rCrõz#StringArrayNumpySemantics._validate\su€ä ˆt}‰}Ô ¤c×&9Ñ&9¸$¿-¹-ÐPTÕ&UÜØQóð ð =‰=× Ñ  (Ò *ÜðØ—M‘M×'Ñ'Ð(Ð(8ð:óð ð +rENFrcób•—|€tdtj¬«}t‰||||¬«S)NrMrƒr)r:rTrUrlrÅ)rwrÆr†rôrns    €rCrÅz(StringArrayNumpySemantics._from_sequenceis1ø€ð ˆ=ܨ¼2¿6¹6ÔBˆE܉wÑ% g°UÀÐ%ÓFÐFrEr~)r†rírôr¡ržr5) rvr¤r¥r÷rTrUr>rõr©rÅrªr«s@rCr}r}XsLø„Ø€HØ—‘€Ió
ðà/3À%ñGØ ,ðGØ;?ðGà     ôGóôGrEr})]Ú
__future__rÚ    functoolsrrxÚpathlibrÚtypingrrrr    rQÚnumpyrTÚpandas._configr
r Ú pandas._libsr r r?Úpandas._libs.arraysrÚpandas._libs.librÚ pandas.compatrrÚpandas.compat.numpyrrXÚpandas.util._decoratorsrÚpandas.util._exceptionsrÚpandas.core.dtypes.baserrrÚpandas.core.dtypes.commonrrrrrrÚ pandas.corerrr rfr!Úpandas.core.array_algosr"Úpandas.core.arrays.baser#Úpandas.core.arrays.floatingr$r%Úpandas.core.arrays.integerr&r'Úpandas.core.arrays.numpy_r(Úpandas.core.constructionr)Úpandas.core.indexersr*Úpandas.core.missingr+Úpandas.io.formatsr,Úcollections.abcr-rLÚpandas._typingr.r/r0r1r2r3r4r5r6r7Úpandasr8r:r£r|r}r8rErCú<module>r¢sõðÝ"åÛÝ÷óó ã÷÷
õ.Ý0÷õ/Ý'Ý4÷ñ÷
÷÷óõ (Ý5Ý2÷÷õ:Ý2Ý4Ý$å&áÝ.ã÷ ÷ ÷ õðô] Ð'ó] óð] ô@    x)nôx)ôzY /Ð#6ôY ôxG  õGrE