hyb
2025-11-18 7539e6f48c75dcaeb808359cccfd1c0d0d182ce8
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
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
Ë
nñúh©Bãóþ—ddlmZddlmZmZddlZddlmZmZm    Z    m
Z
ddl Z ddl Z ddlmZmZddlmZmZddlmZmZddlmZdd    lmZdd
lmZdd lmZdd l m!Z!dd l"m#Z#m$Z$m%Z%ddl&m'Z'm(Z(ddl)m*Z*m+Z+ddl,m-Z-m.Z.ddl/m0cm1Z2ddl3m4Z4m5Z5m6Z6ddl7m8Z8ddl9m:Z:m;Z;ddl<m=Z=ddl>m?Z?m@Z@ddlAmBZBmCZCmDZDmEZEddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPddlQmRZRmSZSerddlTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[ddl\m]Z]Gd„deB«Z^Gd„dej¾e^«Z_Gd„d e^eC«Z`        d-                                    d.d!„Za                                        d/d"„Zb    d0                            d1d#„Zcd2d$„Zdd3d%„Zed4d&„Zfd5d'„Zgd6d(„Zh                                d7d)„Zid8d*„Zj                        d9d+„Zkd:d,„Zly);é)Ú annotations)ÚHashableÚSequenceN)Ú TYPE_CHECKINGÚCallableÚLiteralÚcast)Úusing_copy_on_writeÚwarn_copy_on_write)Ú    internalsÚlib)ÚBlockPlacementÚBlockValuesRefs)Ú    Timestamp)ÚPerformanceWarning)Úcache_readonly)Úfind_stack_level)Úinfer_dtype_from_scalar)Úensure_platform_intÚis_1d_only_ea_dtypeÚ is_list_like)ÚDatetimeTZDtypeÚExtensionDtype)Ú ABCDataFrameÚ    ABCSeries)Ú array_equalsÚisna)ÚArrowExtensionArrayÚArrowStringArrayÚ DatetimeArray)ÚNDArrayBackedExtensionArray)Úensure_wrapped_if_datetimelikeÚ extract_array)Úmaybe_convert_indices)ÚIndexÚ ensure_index)Ú DataManagerÚSingleDataManagerÚensure_np_dtypeÚinterleaved_dtype)
ÚCOW_WARNING_GENERAL_MSGÚCOW_WARNING_SETITEM_MSGÚBlockÚ
NumpyBlockÚensure_block_shapeÚ extend_blocksÚget_block_typeÚmaybe_coerce_valuesÚ    new_blockÚ new_block_2d)Ú blockwise_allÚoperate_blockwise)Ú    ArrayLikeÚAxisIntÚDtypeObjÚQuantileInterpolationÚSelfÚShapeÚnpt)ÚExtensionArraycó”—eZdZUdZdZded<ded<ded<ded    <ed9d
„«Zd ed <d ed <d:d;d„Ze    d<d„«Z
ed=d„«Z ed=d„«Z d>d?d„Z d@d„ZeZdAd„ZdBd„Zed@d„«ZedCd„«ZdDd„ZdEd„ZdFd„ZdGd„ZdHd„ZedId„«ZdJd„Z    d>            dKd „ZeZd:dLd!„ZdMd"„ZdNdOd$„ZdPd%„Z d&„Z!d'dd(œ            dQd)„Z"ed@d*„«Z#ed@d+„«Z$dRd,„Z%d?d-„Z&d?d.„Z'd>dSd/„Z(ed9d0„«Z)d:dTd1„Z*d?d2„Z+                dUd#d3œ                                                            dVd4„Z,e-j\d#fd#d#d5œ                                    dWd6„Z/    dX                    dYd7„Z0        dZ                            d[d8„Z1y)\ÚBaseBlockManagera¡
    Core internal data structure to implement DataFrame, Series, etc.
 
    Manage a bunch of labeled 2D mixed-type ndarrays. Essentially it's a
    lightweight blocked set of labeled data to be manipulated by the DataFrame
    public API class
 
    Attributes
    ----------
    shape
    ndim
    axes
    values
    items
 
    Methods
    -------
    set_axis(axis, new_labels)
    copy(deep=True)
 
    get_dtypes
 
    apply(func, axes, block_filter_fn)
 
    get_bool_data
    get_numeric_data
 
    get_slice(slice_like, axis)
    get(label)
    iget(loc)
 
    take(indexer, axis)
    reindex_axis(new_labels, axis)
    reindex_indexer(new_labels, indexer, axis)
 
    delete(label)
    insert(loc, label, value)
    set(label, value)
 
    Parameters
    ----------
    blocks: Sequence of Block
    axes: Sequence of Index
    verify_integrity: bool, default True
 
    Notes
    -----
    This is *not* a public API class
    ©únpt.NDArray[np.intp]Ú_blknosÚ_blklocsútuple[Block, ...]Úblocksú list[Index]Úaxescó—t‚©N©ÚNotImplementedError©Úselfs úQH:\Change_password\venv_build\Lib\site-packages\pandas/core/internals/managers.pyÚndimzBaseBlockManager.ndim¦ó€ä!Ð!óÚboolÚ_known_consolidatedÚ_is_consolidatedcó—t‚rJrK)rNrFrHÚverify_integritys    rOÚ__init__zBaseBlockManager.__init__­s€Ü!Ð!rRcó—t‚rJrK©ÚclsrFrHs   rOÚ from_blockszBaseBlockManager.from_blocks°rQrRcóR—|j€|j«|jS)a
 
        Suppose we want to find the array corresponding to our i'th column.
 
        blknos[i] identifies the block from self.blocks that contains this column.
 
        blklocs[i] identifies the column of interest within
        self.blocks[self.blknos[i]]
        )rCÚ_rebuild_blknos_and_blklocsrMs rOÚblknoszBaseBlockManager.blknos´s$€ð <‰<Ð à × ,Ñ ,Ô .à|‰|ÐrRcóR—|j€|j«|jS)z$
        See blknos.__doc__
        )rDr^rMs rOÚblklocszBaseBlockManager.blklocsÄs$€ð
=‰=Ð  à × ,Ñ ,Ô .à}‰}ÐrRNcóN—|€tg«g|jddz}|jdk(r\t|t«sJ‚|j
d}|j dd}ttdd««}|j||¬«}|g}ng}t|«j||«S)z9return an empty BlockManager with the items axis of len 0Nér©Ú    placement) r%rHrPÚ
isinstanceÚSingleBlockManagerrFÚvaluesrÚsliceÚmake_block_same_classÚtyper\)rNrHÚblkÚarrÚbpÚnbrFs       rOÚ
make_emptyzBaseBlockManager.make_emptyÏs£€à ˆ<ܘ"“I; §¡¨1¨2 Ñ.ˆDð 9‰9˜Š>ܘdÔ$6Ô7Ð 7Ð7Ø—+‘+˜a‘.ˆCØ—*‘*˜R˜a.ˆCܤ a¨£ Ó,ˆBØ×*Ñ*¨3¸"Ð*Ó=ˆBؐT‰FàˆFܐD‹z×%Ñ% f¨dÓ3Ð3rRcó—y©NTrArMs rOÚ __nonzero__zBaseBlockManager.__nonzero__às€ØrRcó6—|jdk(r    |dk(rdnd}|S)Nérrc©rP)rNÚaxiss  rOÚ_normalize_axisz BaseBlockManager._normalize_axisæs€à 9‰9˜Š>Ø š    ‘1 qˆD؈ rRcóF—|j||«||j|<yrJ)Ú_validate_set_axisrH)rNrwÚ
new_labelss   rOÚset_axiszBaseBlockManager.set_axisìs€à ×Ñ  jÔ1Ø$ˆ    ‰    $ŠrRcó2—t|j«dk(S©Nrc©ÚlenrFrMs rOÚis_single_blockz BaseBlockManager.is_single_blockñs€ô4—;‘;Ó 1Ñ$Ð$rRcó —|jdS©Nr©rHrMs rOÚitemszBaseBlockManager.itemsöó€ày‰y˜‰|ÐrRcóB—|j|}|j|«S)ú¾
        Check for column `i` if it has references.
        (whether it references another array or is itself being referenced)
        Returns True if the column has no references.
        )r_Ú_has_no_reference_block)rNÚiÚblknos   rOÚ_has_no_referencez"BaseBlockManager._has_no_referenceús"€ð — ‘ ˜A‘ˆØ×+Ñ+¨EÓ2Ð2rRcóR—|j|jj« S)z¼
        Check for block `i` if it has references.
        (whether it references another array or is itself being referenced)
        Returns True if the block has no references.
        ©rFÚrefsÚ has_reference)rNr‹s  rOr‰z(BaseBlockManager._has_no_reference_blocks%€ð —;‘;˜uÑ%×*Ñ*×8Ñ8Ó:Ð:Ð:rRcó—t|j«t|j«k7ryt|j«D]>\}}|j|j|_|jj    |«Œ@y)z†
        Adds the references from one manager to another. We assume that both
        managers have the same block structure.
        N)r€rFÚ    enumeraterÚ add_reference)rNÚmgrrŠrls    rOÚadd_referenceszBaseBlockManager.add_references sc€ô
ˆt{‰{Ó œs 3§:¡:›Ò .à Ü § ¡ Ó,ò    (‰FˆAˆsØ—z‘z !‘}×)Ñ)ˆCŒHØ H‰H× "Ñ " 3Õ 'ñ    (rRc󌇗|j|Štˆfd„|j|jjD««S)zv
        Checks if two blocks from two different block managers reference the
        same underlying values.
        c3ó0•K—|] }‰|«u–—Œy­wrJrA)Ú.0Úrefrls  €rOú    <genexpr>z:BaseBlockManager.references_same_values.<locals>.<genexpr>søèø€ÒT C3™#›%”<ÑTùsƒ)rFÚanyrÚreferenced_blocks)rNr”r‹rls   @rOÚreferences_same_valuesz'BaseBlockManager.references_same_valuess9ø€ð
k‰k˜%Ñ ˆÜÓT¨3¯:©:°eÑ+<×+AÑ+A×+SÑ+SÔTÓTÐTrRcó¼—tj|jDcgc]}|j‘Œc}t¬«}|j |j «Scc}w©N©Údtype)ÚnpÚarrayrFr¡ÚobjectÚtaker_©rNrlÚdtypess   rOÚ
get_dtypeszBaseBlockManager.get_dtypess=€Ü—‘°· ± Ö<¨˜3Ÿ9›9Ò<ÄFÔKˆØ{‰{˜4Ÿ;™;Ó'Ð'ùò=sžAcóT—|jDcgc]}|j‘Œc}Scc}w)aµ
        Quick access to the backing arrays of the Blocks.
 
        Only for compatibility with ArrayManager for testing convenience.
        Not to be used in actual code, and return value is not the same as the
        ArrayManager method (list of 1D arrays vs iterator of 2D ndarrays / 1D EAs).
 
        Warning! The returned arrays don't handle Copy-on-Write, so this should
        be used with caution (only in read-mode).
        )rFrh)rNrls  rOÚarrayszBaseBlockManager.arrays#s €ð'+§k¡kÖ2˜s—
“
Ò2Ð2ùÒ2s%cóΗt|«j}t|j«D]\}}|dk(r    |d|›z }Œ|d|›d|›z }Œ |jD]
}|d|›z }Œ |S)Nrz
Items: z
Axis z: ú
)rkÚ__name__r’rHrF)rNÚoutputrŠÚaxÚblocks     rOÚ__repr__zBaseBlockManager.__repr__1s†€Üd“×$Ñ$ˆÜ˜tŸy™yÓ)ò    .‰EˆAˆrؐAŠvؘI b TÐ*Ñ*‘à˜G A 3 b¨¨Ð-Ñ-‘ð        .ð —[‘[ò    #ˆEØ ˜˜5˜'lÑ "‰Fð    #àˆ rRc ó¾—d|vsJ‚|xsg}g}|Dcic]}|||“Œ
}}|jD]}|r¿|j«D]¬\}}t|ttf«ru|j
dk(r1|j |jjj||<Œ\|j dd…|jjfj||<Œ‘||jj||<Œ®t|«r|j|fi|¤Ž}    nt||«di|¤Ž}    t|    |«}Œt|«j||j «}
|
Scc}w)ab
        Iterate over the blocks, collect and create a new BlockManager.
 
        Parameters
        ----------
        f : str or callable
            Name of the Block method to apply.
        align_keys: List[str] or None, default None
        **kwargs
            Keywords to pass to `f`
 
        Returns
        -------
        BlockManager
        ÚfilterrcNrA)rFr…rfrrrPÚilocÚmgr_locsÚindexerÚ_valuesÚcallableÚapplyÚgetattrr0rkr\rH) rNÚfÚ
align_keysÚkwargsÚ result_blocksÚkÚ aligned_argsÚbÚobjÚappliedÚouts            rOr¹zBaseBlockManager.apply=sV€ð*˜vÑ%Ð%Ð%àÒ% 2ˆ
Ø%'ˆ ð/9Ö9¨˜˜6 !™9™ Ð9ˆ Ð9à—‘ó    BˆAÙØ*×0Ñ0Ó2ò
<‘FAsÜ! #¬    ´<Ð'@ÔAðŸ8™8 qš=Ø(+¯©°·±×1CÑ1CÑ(D×(LÑ(L˜F 1šIà(+¯©²°A·J±J×4FÑ4FÐ1FÑ(G×(OÑ(O˜F 1šIð%(¨¯
©
×(:Ñ(:Ñ$;˜˜qš    ð
<ô˜Œ{Ø!˜!Ÿ'™' !Ñ. vÑ.‘à'œ' ! Q›-Ñ1¨&Ñ1Ü)¨'°=ÓAŠMð%    Bô(4‹j×$Ñ$ ]°D·I±IÓ>ˆØˆ
ùò/:s“ EcóR—t|tj«r1|j|jkDrt    d|j›«‚|rEt «r;|j d«s*tjttt«¬«nt«r÷|j d«så|jdk(rÅt|t«r´|j|d}t|«r'|jdk(rtj |d¬«}nt|«s|g}t#|«dk(r|j%d¬«S|j&dj(}|jdk(r||}|j+d||«t-|«}t/j0|d«rd}n8t#|«dkDr t3d    «}ntj4t#|««}||d<|d}t|tj«r&|jdk(rtj |d¬«}t|tj«rt#|«dk(r|S||d<|j&dj7t|«|«|S|j%«}|j9d
||¬ «S) zi
        Set values with indexer.
 
        For SingleBlockManager, this backs s[indexer] = value
        zCannot set values with ndim > r©Ú
stacklevelrurc©rwF©ÚdeepNÚsetitem)r¶Úvalue)rfr¢ÚndarrayrPÚ
ValueErrorr rŒÚwarningsÚwarnr+Ú FutureWarningrr
ÚtuplerarÚsqueezer€ÚcopyrFrhÚ_iset_split_blockÚlistr Ú
is_integerriÚarangerËr¹)rNr¶rÌrÐÚblk_locrhÚ col_indexerÚ row_indexers        rOrËzBaseBlockManager.setitemts"€ô gœrŸz™zÔ *¨w¯|©|¸d¿i¹iÒ/GÜÐ=¸d¿i¹i¸[ÐIÓJÐ Já Ô&Ô(°×1GÑ1GÈÔ1JÜ M‰MÜ'ÜÜ+Ó-÷ ô !Õ "¨4×+AÑ+AÀ!Õ+Dðy‰y˜A‹~¤*¨W´eÕ"<ØŸ,™, w¨q¡zÑ2Ü Ô(¨W¯\©\¸QÒ->Ü Ÿj™j¨°qÔ9‘GÜ% gÔ.à&˜iGܐw“< 1Ò$ØŸ9™9¨%˜9Ó0Ð0àŸ™ Q™×.Ñ.Ø—;‘; !Ó#Ø# G™_Fà×*Ñ*ؘ7 Fôô# 7›mGä—~‘~ g¨a¡jÔ1Ø&'™ ܘW›¨Ò)Ü&+¨D£k™ ä&(§i¡i´°G³ Ó&=˜ Ø!,G˜A‘Jà")¨!¡*KÜ! +¬r¯z©zÔ:¸{×?OÑ?OÐSTÒ?Tä&(§j¡j°À1Ô&E˜ Ü! +¬r¯z©zÔ:¼sÀ;Ó?OÐSTÒ?Tð $˜ Ø!,G˜A‘JØ—K‘K ‘N×*Ñ*¬5°«>¸5ÔAؐKð—9‘9“;ˆDàz‰z˜)¨W¸EˆzÓBÐBrRcó(—|jd|¬«S)NÚdiff)Ún©r¹)rNrÞs  rOrÝzBaseBlockManager.diff´s€àz‰z˜& AˆzÓ&Ð&rRFcóz—|€t«rd}nd}n t«rd}|jd|||t«¬«S)NFTÚastype)r¡rÔÚerrorsÚ    using_cow©r
r¹)rNr¡rÔrâs    rOrázBaseBlockManager.astype¸sJ€Ø ˆ<Ü"Ô$Ø‘à‘Ü  Ô "؈Dàz‰zØ ØØØÜ)Ó+ð ó
ð    
rRcóv—|€t«rd}nd}n t«rd}|jd|t«¬«S)NFTÚconvert©rÔrãrä)rNrÔs  rOræzBaseBlockManager.convertÉs;€Ø ˆ<Ü"Ô$Ø‘à‘Ü  Ô "؈Dàz‰z˜)¨$Ô:MÓ:OˆzÓPÐPrRc ó\—t«rd}nd}|j    d|t«dœ|¤ŽS)NFTrç)Úconvert_dtypesrä)rNr½rÔs   rOrézBaseBlockManager.convert_dtypesÔs>€Ü Ô  Ø‰DàˆDàˆtz‰zØ ð
Ø#'Ô3FÓ3Hñ
ØLRñ
ð    
rRÚnan)Úna_repÚquotingcó0—|jd|||||¬«S)z}
        Convert values to native types (strings / python objects) that are used
        in formatting (repr / csv).
        Úget_values_for_csv)rërìÚ float_formatÚ date_formatÚdecimalrß)rNrïrðrñrërìs      rOrîz#BaseBlockManager.get_values_for_csvÞs,€ðz‰zØ  ØØØ%Ø#Øð ó
ð    
rRcó:—td„|jD««S)z>Whether any of the blocks in this manager are extension blocksc3ó4K—|]}|j–—Œy­wrJ©Ú is_extension©r˜r°s  rOršz7BaseBlockManager.any_extension_types.<locals>.<genexpr>ñsèø€Ò?¨%5×%Õ%Ñ?ùs‚)r›rFrMs rOÚany_extension_typesz$BaseBlockManager.any_extension_typesîs€ôÑ?°4·;±;Ô?Ó?Ð?rRcóf—t|j«dk(r|jdjSy)z8return a boolean if we are a single block and are a viewrcrF)r€rFÚis_viewrMs rOrùzBaseBlockManager.is_viewós.€ô ˆt{‰{Ó ˜qÒ  Ø—;‘;˜q‘>×)Ñ)Ð )ðrRcó†—|jDcgc]}||j«sŒ|‘Œ}}|j|«Scc}wrJ)rFrhÚ_combine)rNÚ    predicaterlrFs    rOÚ_get_data_subsetz!BaseBlockManager._get_data_subsets9€Ø!%§¡ÖF˜#±    ¸#¿*¹*Õ0E’#ÐFˆÐF؏}‰}˜VÓ$Ð$ùòGs>§>cóþ—g}|jD]\}|jtk(r|j|«Œ(|jsŒ5|j «}|j d„|D««Œ^|j|«S)zs
        Select blocks that are bool-dtype and columns from object-dtype blocks
        that are all-bool.
        c3ó:K—|]}|jsŒ|–—Œy­wrJ)Úis_bool©r˜ros  rOršz1BaseBlockManager.get_bool_data.<locals>.<genexpr>sèø€Ò!A¨°b·j³j¤"Ñ!Aùs‚”)rFr¡rSÚappendÚ    is_objectÚ_splitÚextendrû)rNÚ
new_blocksrlÚnbss    rOÚ get_bool_datazBaseBlockManager.get_bool_dataso€ð ˆ
à—;‘;ò    BˆC؏y‰yœDÒ Ø×!Ñ! #Õ&à—“Ø—j‘j“lØ×!Ñ!Ñ!A¨sÔ!AÕAð     Bð}‰}˜ZÓ(Ð(rRcóÀ—|jDcgc]}|jsŒ|‘Œ}}t|«t|j«k(r|S|j|«Scc}wrJ)rFÚ
is_numericr€rû)rNrlÚnumeric_blockss   rOÚget_numeric_dataz!BaseBlockManager.get_numeric_datasO€Ø)-¯©ÖG #¸¿»š#ÐGˆÐGÜ ˆ~Ó ¤# d§k¡kÓ"2Ò 2àˆK؏}‰}˜^Ó,Ð,ùò    Hs
A¡Acó—t|«dk(rd|jdk(rE||jdd|g}n |jddg|jddz}|j    |«S|j    «St j t j|Dcgc]}|jj‘Œc}««}tj||jd«}g}|D]L}|jd¬«}t||jj«|_|j!|«ŒNt#|j«}|||d<|jj%|«|d<t'|«j)||«Scc}w)z$return a new manager with the blocksrruNrcFrÉéÿÿÿÿ)r€rPr…rHrpr¢ÚsortÚ concatenaterµÚas_arrayr Úget_reverse_indexerÚshaperÔrr¶rrÖr¥rkr\)    rNrFÚindexrHrÁr¶Ú inv_indexerrros             rOrûzBaseBlockManager._combinesV€ä ˆv‹;˜!Ò Øy‰y˜AŠ~àÐ$Ø ŸJ™J r¨˜N¨EÐ2‘Dà ŸJ™J r¨˜NÐ+¨d¯i©i¸¸¨mÑ;DØ—‘ tÓ,Ð,Ø—?‘?Ó$Ð $ô—'‘'œ"Ÿ.™.ÀvÖ)NÀ!¨!¯*©*×*=Ó*=Ò)NÓOÓPˆÜ×-Ñ-¨g°t·z±zÀ!±}ÓEˆ à"$ˆ
Øò    "ˆAØ—‘˜UÓ#ˆBÜ(¨°R·[±[×5HÑ5HÑ)IÓJˆBŒKØ × Ñ ˜bÕ !ð    "ô
D—I‘I‹ˆØ Р؈D‰HØ—*‘*—/‘/ 'Ó*ˆˆQ‰äD‹z×%Ñ% j°$Ó7Ð7ùò*OsÂF có,—t|j«SrJrrMs rOÚnblockszBaseBlockManager.nblocks<s€ä4—;‘;ÓÐrRcó‡—‰€t«rdŠndЉr%ˆfd„}|jDcgc]
}||«‘Œ }}nGt«r(|jDcgc]}|j«‘Œ}}nt|j«}|j    d‰¬«}||_|j
dkDrB|j }|4|j«|_|jj«|_‰r|j«|Scc}wcc}w)aN
        Make deep or shallow copy of BlockManager
 
        Parameters
        ----------
        deep : bool, string or None, default True
            If False or None, return a shallow copy (do not copy data)
            If 'all', copy data and a deep copy of the index
 
        Returns
        -------
        BlockManager
        FTcóR•—‰dk(r|jd¬«S|j«S)NÚallTrÉ)rÔÚview)r¯rÊs €rOÚ    copy_funcz(BaseBlockManager.copy.<locals>.copy_funcZs%ø€Ø-1°Uª]r—w‘w DwÓ)ÐIÀÇÁà   ÐIrRrÔrÉrc)
r
rHrrÖr¹rPrCrÔrDÚ_consolidate_inplace)rNrÊrr¯Únew_axesÚresr_s `     rOrÔzBaseBlockManager.copy@sæø€ð ˆ<Ü"Ô$à‘ðñ ô Jð15·    ±    Ö:¨"™     " Ð:ˆHÑ:ä"Ô$Ø04·    ±    Ö:¨"˜BŸG™GIÐ:Ñ:ä §    ¡    ›?àj‰j˜ dˆjÓ+ˆØˆŒà 9‰9qŠ=à—\‘\ˆFØÐ!Ø$Ÿk™k›m” Ø#Ÿ}™}×1Ñ1Ó3” á Ø × $Ñ $Ô &؈
ùò';ùò;s ¨DÁDcó¨—|j«r|St|«|j|jd¬«}d|_|j «|S)zr
        Join together blocks having same dtype
 
        Returns
        -------
        y : BlockManager
        F©rW)Úis_consolidatedrkrFrHrUr)rNÚbms  rOÚ consolidatezBaseBlockManager.consolidatersJ€ð × Ñ Ô !؈Kà ŒT$‹Z˜Ÿ ™  T§Y¡YÀÔ GˆØ#ˆÔØ
×ÑÔ!؈    rR)Ú use_na_proxycó—|€t«rd}nd}|€R||j|ur|s|S|j|¬«}    t|j«|    _||    j|<|    St    |t
j «sJ‚|s|j|j|«||jk\r td«‚|dk(r|j||||¬«}
n9|jD cgc]$} | j|d||n | j¬«‘Œ&}
} t|j«} || |<t|«j|
| «} |dk(r>|j j«| _|j$j«| _| Scc} w)    a?
        Parameters
        ----------
        new_axis : Index
        indexer : ndarray[intp] or None
        axis : int
        fill_value : object, default None
        allow_dups : bool, default False
        copy : bool or None, default True
            If None, regard as False to get shallow copy.
        only_slice : bool, default False
            Whether to take views, not copies, along columns.
        use_na_proxy : bool, default False
            Whether to use a np.void ndarray for newly introduced columns.
 
        pandas-indexer with -1's only.
        FTrÉú#Requested axis not found in managerr)Ú
fill_valueÚ
only_slicer%rc)rwr()r
rHrÔrÖrfr¢rÍÚ_validate_can_reindexrPÚ
IndexErrorÚ_slice_take_blocks_ax0rFÚtake_ndr(rkr\r_rCrarD)rNÚnew_axisr¶rwr(Ú
allow_dupsrÔr)r%ÚresultrrlrÚnew_mgrs              rOÚreindex_indexerz BaseBlockManager.reindex_indexer‚s‰€ð: ˆ<Ü"Ô$à‘ðà ˆ?ؘ4Ÿ9™9 T™?Ñ*±4ؐ à—Y‘Y DYÓ)ˆFܘtŸy™y›/ˆFŒKØ (ˆFK‰K˜Ñ ؈Mô˜'¤2§:¡:Ô.Ð.Ð.ñØ I‰Id‰O× 1Ñ 1°'Ô :à 4—9‘9Ò ÜÐBÓCÐ Cà 1Š9Ø×4Ñ4ØØ%Ø%Ø)ð    5ó‰Jð Ÿ;™;ö    ðð— ‘ ØØà&0Ð&<™
À#Ç.Á.ð    õð    ˆJð    ô˜Ÿ    ™    “?ˆØ!ˆ‰ät“*×(Ñ(¨°XÓ>ˆØ 1Š9à"Ÿk™k×.Ñ.Ó0ˆGŒOØ#Ÿ|™|×0Ñ0Ó2ˆGÔ Øˆùò'    sÃ%)F
)r%Úref_inplace_opc óÀ—|tju}t||jd|¬«\}}}    |jrÛ|j
d}
|dk(r0|    dk(rgSt td|    ««} |
j|| ¬«gS|r|jdk(r†|r|€ |
j}|sI|rGt|«D  cgc]/\} } |
jt| | dz«t | «|¬«‘Œ1}} } |St td|    ««} |
j|d| |¬«gS|dk(r|j|}|j|}nFtj|j|d|¬    «}tj|j|d|¬    «}g}| }t!j"||¬
«D]µ\}}|dk(r$|j%|j'|||¬ ««Œ0|j
|}
|
j(sc|
j*sW|xs
t-« }|D]B}|
j/|¬ «}t t||dz««|_|j%|«ŒDŒ®||j2}t5t7|«|j5«dz«}|s
t-«rtj8||«}t;|t«r&|
j||¬«}|j%|«Œ;|rTt=||«D]C\} } t| | dz«}t | «} |
j|| ¬«}|j%|«ŒEŒ‘|
j|d|¬ «}|j%|«Œ¸|Scc} } w)aÎ
        Slice/take blocks along axis=0.
 
        Overloaded for SingleBlock
 
        Parameters
        ----------
        slice_or_indexer : slice or np.ndarray[int64]
        fill_value : scalar, default lib.no_default
        only_slice : bool, default False
            If True, we always return views on existing arrays, never copies.
            This is used when called from ops.blockwise.operate_blockwise.
        use_na_proxy : bool, default False
            Whether to use a np.void ndarray for newly introduced columns.
        ref_inplace_op: bool, default False
            Don't track refs if True because we operate inplace
 
        Returns
        -------
        new_blocks : list of Block
        r)Ú
allow_fillri)Ú new_mgr_locsrc)r6r3)rwr6r(r)r(r5©Úgroup)rer(r%rÉ)rwr6)r Ú
no_defaultÚ_preprocess_slice_or_indexerrrrFrriÚgetitem_block_columnsrPr(r’r-r_raÚalgosÚ libinternalsÚget_blkno_placementsrÚ_make_na_blockÚ_can_consolidateÚ_validate_ndimr
rÔrµr¶Úmaxr€Úmaybe_indices_to_slicerfÚzip)rNÚslice_or_indexerr(r)r%r3r5Úsl_typeÚslobjÚsllenrlrnrŠÚmlrFr_rar8r‹rµrÊÚmgr_locÚnewblkÚtakerÚmax_lenroÚslcs                           rOr,z'BaseBlockManager._slice_take_blocks_ax0×so€ð< ¤s§~¡~Ð5ˆ
ä <Ø ˜dŸj™j¨™m¸
ô!
ш˜ð × Ò Ø—+‘+˜a‘.ˆCà˜'Ò!ð˜A’:ؐIÜ#¤E¨!¨U£OÓ4Ø×1Ñ1°%ÀbÐ1ÓIÐJÐJÙ 4§9¡9°¢>Ù *Ð"4Ø!$§¡Já!¡jô&/¨uÓ%5÷ ñ "˜A˜rð ×1Ñ1Ü! " b¨1¡fÓ-Ü)7¸Ó):Ø+9ð2õðFñð"Mä'¬¨a°«Ó8BàŸ ™ Ø!Ø!"Ø)+Ø'1ð    $óððð gÒ Ø—[‘[ Ñ'ˆFØ—l‘l 5Ñ)‰Gä—]‘]Ø— ‘ ˜U¨r¸jôˆFô—m‘mØ— ‘ ˜e°¸zôˆGð ˆØˆÜ+×@Ñ@ÀÈuÔUó0    *‰OˆE8ؘŠ{ð— ‘ Ø×'Ñ'Ø"*Ø#-Ø%1ð(óõð—k‘k %Ñ(ð×+Ò+°C×4FÒ4Fð
!+Ò CÔ.AÓ.CÐDDØ#+ò.˜Ø!$§¡¨t Ó!4˜Ü*8¼¸wÈÐRSÉ Ó9TÓ*U˜œØŸ ™  fÕ-ñ.ð$ H×$4Ñ$4Ñ5EÜ!¤# h£-°·±³¸q±ÓAGÙ!Ô%8Ô%:Ü #× :Ñ :¸5À'Ó J˜ä! %¬Ô/Ø ×6Ñ6°uÈ8Ð6ÓT˜ØŸ ™  bÖ)Ù#ô&)¨°Ó%9ò.™E˜A˜rÜ"'¨¨1¨q©5£/˜CÜ!/°Ó!3˜BØ!$×!:Ñ!:¸3ÈRÐ!:Ó!P˜Bà"ŸM™M¨"Õ-ò .ð!Ÿ[™[¨°QÀX˜[ÓN˜ØŸ ™  bÖ)ða0    *ðdˆ ùóksÂ54McóT—|rS|J‚t|«|jdf}tj|tj¬«}t ||d¬«}|S|€tj }t|«|jdf}t|«\}}t|||«}t||¬«S)Nrcr rurvrd)
r€rr¢ÚemptyÚvoidr.rêrÚ make_na_arrayr4)    rNrer(r%rÚvalsror¡Ú block_valuess             rOr?zBaseBlockManager._make_na_blockcsŸ€ñ
ØÐ%Ð %Ð%ܘ“^ T§Z¡Z°¡]Ð3ˆEÜ—8‘8˜E¬¯©Ô1ˆDܘD )°!Ô4ˆB؈Ià Ð ÜŸ™ˆJäY“ §¡¨A¡Ð/ˆä3°JÓ?шˆzÜ$ U¨E°:Ó>ˆ ܘL°IÔ>Ð>rRcó¤—|j|}t|||¬«}|j|j|«}|j    |||dd¬«S)ac
        Take items along any axis.
 
        indexer : np.ndarray[np.intp]
        axis : int, default 1
        verify : bool, default True
            Check that all entries are between 0 and len(self) - 1, inclusive.
            Pass verify=False if this check has been done by the caller.
 
        Returns
        -------
        BlockManager
        )ÚverifyTN)r.r¶rwr/rÔ)rr$rHr¥r2)rNr¶rwrVrÞr{s      rOr¥zBaseBlockManager.takexs_€ð* J‰JtÑ ˆÜ'¨°¸6ÔBˆà—Y‘Y˜t‘_×)Ñ)¨'Ó2ˆ
Ø×#Ñ#ØØØØØð $ó
ð    
rR)ÚreturnÚint©T)rWrSrWÚNone©rFú list[Block]rHrGrWr;)rWrBrJ©rWr;©rWrS)rwr8rWrX)rwr8r{r%rWrZ©rWr%©rŠrXrWrS)r‹rXrWrS)r”r@rWrZ)r”r@r‹rXrWrS©rWznpt.NDArray[np.object_])rWúlist[ArrayLike])rWÚstr)r¼zlist[str] | NonerWr;)rÐrSrWr;)rÞrXrWr;)FÚraise)rÔú bool | NonerârcrWr;)rÔrerWr;)rërcrWr;)rürrWr;)rFr\rz Index | NonerWr;)rÊzbool | None | Literal['all']rWr;)NFTF)r.r%r¶znpt.NDArray[np.intp] | Nonerwr8r/rSrÔrer)rSr%rSrWr;)
rEúslice | np.ndarrayr)rSr%rSr3rSrWr\)NF)rerr%rSrWr-)rcT)r¶rBrwr8rVrSrWr;)2r­Ú
__module__Ú __qualname__Ú__doc__Ú    __slots__Ú__annotations__ÚpropertyrPrXÚ classmethodr\r_rarprsÚ__bool__rxr|rr…rŒr‰r•rr¨rªr±r¹Úapply_with_blockrËrÝrárærérîr÷rùrýrr rûrrÔr$r2r r9r,r?r¥rArRrOr@r@lsà…ñ0ðd€Ià !Ó!Ø"Ó"Ø ÓØ
Óà ò"óð"ðÓØÓô"ðò"óð"ðò óð ðòóðô4ó"ð€Hóó %ð
ò%óð%ðòóðó3ó;ó
(óUó(ðò 3óð 3ó
ð(,ð2ð%ð2ð
 
ó 2ðjÐô>Có@'ô
ó"    Qò
ðDIÐRVñ
Ø=@ð
à     ó
ð ò@óð@ðò óð ó%ó)ó$-ô8ð:ò óð ô0ódð*ؠؠؠðSð#ñSàðSð-ðSðð    Sð ð SððSððSððSð
óSðp—>‘>Ø ð    Jð #Ø$ñJà,ðJðð    Jð ð JððJð
óJðZPUð?Ø'ð?ØHLð?à    ó?ð0Øð    
à%ð
ðð
ðð    
ð
 
ô 
rRr@cóø—eZdZdZdZ    d$                            d%d„Zd&d„Zed'd„«Zd(d„Z    d$d)d„Z
d*d„Z e d+d    „«Z         d,                                    d-d „Z        d.                                    d/d „Z    d0                                                    d1d„Z    d2                            d3d„Zd0d4d„Zd&d„Zd&d„Zd5d„Zd6d„Zd6d„Zd7d„Zd8d„Zddœ                    d9d„Zd5d„Zd:d„Zd d
ej<f                            d;d„Zd ej<f                    d<d„Z d=d„Z!d&d „Z"d&d!„Z#ed>d"„«Z$ed>d#„«Z%y )?Ú BlockManagerz0
    BaseBlockManager that holds 2D blocks.
    rucó¶—|rW|D]A}|j|jk7sŒtd|j›d|j›d«‚|j«yy)NzNumber of Block dimensions (z) must equal number of axes (ú))rPÚAssertionErrorÚ_verify_integrity)rNrFrHrWr°s     rOrXzBlockManager.__init__¤si€ñ ð ò Ø—9‘9 §
¡
Ó*Ü(Ø6°u·z±z°lðC+Ø+/¯9©9¨+°Qð8óðð ð × "Ñ "Õ $ð rRcób—|j}td„|jD««}|jD]<}|jdd|ddk7sŒt||jdd|j«Œ>t |j «|k7r$tdt |j «›d|›«‚y)Nc3óFK—|]}t|j«–—Œy­wrJ)r€rµ)r˜Úxs  rOršz1BlockManager._verify_integrity.<locals>.<genexpr>¼sèø€Ò=¨Aœ˜AŸJ™JŸÑ=ùó‚!rczINumber of manager items must equal union of block items
# manager items: z, # tot_items: )rÚsumrFÚraise_construction_errorrHr€r…rt)rNÚ    mgr_shapeÚ    tot_itemsr°s    rOruzBlockManager._verify_integrityºs­€Ø—J‘Jˆ    ÜÑ=°·±Ô=Ó=ˆ    Ø—[‘[ò    PˆE؏{‰{˜1˜2ˆ )¨A¨B -Ó/Ü(¨°E·K±KÀÀ°OÀTÇYÁYÕOð    Pô ˆtz‰z‹?˜iÒ 'Ü ð1Ü14°T·Z±Z³Ð0AðBØ'˜[ð*óð ð (rRcó—|||d¬«S)úZ
        Constructor for BlockManager and SingleBlockManager with same signature.
        Fr!rArZs   rOr\zBlockManager.from_blocksÇs€ñ
6˜4°%Ô8Ð8rRcóÌ—t|j«dk(r†|jdjtd«|f«}t    tdt|«««}t ||d|jdj ¬«}t||jd«St|jDcgc]}|j‘Œc}«}t|«}t|t«rtj|t¬«}n"tj||¬«}t!|«}|jD]5}t#|j$«D]\}}    |j||f«||    <ŒŒ7t|t«r#|j'«}
|
j)||¬«}t    tdt|«««}t ||d¬«}t||jd«Scc}w)zÅ
        Return the array corresponding to `frame.iloc[loc]`.
 
        Parameters
        ----------
        loc : int
 
        Returns
        -------
        np.ndarray or ExtensionArray
        rcrN©rerPrr ©rerP)r€rFÚigetrirr3rrgrHr*r¡rfrr¢rPr¤r"r’rµÚconstruct_array_typeÚ_from_sequence) rNÚlocr0rnr°rlr¡rÞrŠÚrlr[s            rOÚfast_xszBlockManager.fast_xsÑs˜€ô ˆt{‰{Ó ˜qÒ  ð—[‘[ ‘^×(Ñ(¬%°«+°sÐ);Ó<ˆF䤠a¬¨V«Ó 5Ó6ˆBÜØØØØ—[‘[ ‘^×(Ñ(ô    ˆEô & e¨T¯Y©Y°q©\Ó:Ð :ä!¸¿ ¹ Ö"D° 3§9£9Ò"DÓEˆä ‹Iˆä eœ^Ô ,ô
—X‘X˜a¤vÔ.‰Fä—X‘X˜a uÔ-ˆFÜ3°FÓ;ˆFà—;‘;ò    0ˆCô# 3§<¡<Ó0ò 0‘2Ø ŸX™X q¨# hÓ/r’
ñ 0ð    0ô eœ^Ô ,Ø×,Ñ,Ó.ˆCØ×'Ñ'¨°eÐ'Ó<ˆFä œE !¤S¨£[Ó1Ó 2ˆÜ˜&¨B°QÔ7ˆÜ! %¨¯©°1©Ó6Ð6ùò5#EsÂ2G!có*—|j|j|}|j|j|«}t    t dt |«««}t|«||d|r |jnd¬«}t||jd«S)z:
        Return the data as a SingleBlockManager.
        rrcNr) rFr_rƒrarrir€rkrrgrH)rNrŠÚ    track_refr°rhrnros       rOrƒzBlockManager.igets€ð— ‘ ˜DŸK™K¨™NÑ+ˆØ—‘˜DŸL™L¨™OÓ,ˆôœE !¤S¨£[Ó1Ó 2ˆØ ŒT%‹[Ø ˜b q¹Y¨u¯zªzÈDô
ˆô" " d§i¡i°¡lÓ3Ð3rRcóz—|j|j|}|j|j|«}|S)z×
        Return the data for column i as the values (ndarray or ExtensionArray).
 
        Warning! The returned array is a view but doesn't handle Copy-on-Write,
        so this should be used with caution.
        )rFr_rƒra)rNrŠr°rhs    rOÚ iget_valueszBlockManager.iget_valuess5€ð— ‘ ˜DŸK™K¨™NÑ+ˆØ—‘˜DŸL™L¨™OÓ,ˆØˆ rRcó —dgt|j«z}|jD][}|j}|jj «}|j dk(r    |||d<ŒAt|«D] \}}||||<ŒŒ]|S)a'
        Used in the JSON C code to access column arrays.
        This optimizes compared to using `iget_values` by converting each
 
        Warning! This doesn't handle Copy-on-Write, so should be used with
        caution (current use case of consuming this in the JSON code is fine).
        Nrcr)r€r…rFÚ    _mgr_locsÚ array_valuesÚ_values_for_jsonrPr’)rNr0rlrµrhrŠr†s       rOÚ column_arrayszBlockManager.column_arrays!s€ð,0¨&´3°t·z±z³?Ñ*Bˆà—;‘;ò        ,ˆCØ—}‘}ˆHØ×%Ñ%×6Ñ6Ó8ˆF؏{‰{˜aÒà&,x ‘{Ò#ô(¨Ó1ò,‘FAsØ"(¨¡)F˜3’Kñ,ð        ,ðˆ rRFNcó*    ‡‡‡—|j€|jdkDr|j«t‰j«}|sS‰jdk(r ‰j
Šn t ‰d¬«Š‰jdd|jddk7r td«‚tj|«r`tt|«}|j|}|j|}t|j «dk(r|j#|‰|||‰¬«S|g}|rˆfd„}nˆfd„}|j|}    |j$|j'«}
g} g} gŠt)j*|    d    ¬
«D]\} }|j| }|
|j,}|ra|j/‰«rPt1«r-|j3| «s|j5| |||«‰¬ «Œo|j7|||««Œˆ| j9|j:j<|«| j9|«t|«t|j:«k(r‰j9| «Œô|j5| |‰¬ «Œ
t‰«rãt?j@|jBt>jD¬ «}d    |‰<t?jF|jBt>jH¬ «}|jKd «t?jL|jBt‰«z
«||<||jN|_'tQˆfd„tS|j«D««|_| r4t?jT| «}t|«}g}|rc|jWˆˆfd„|D««t?jL|«t|j«z|jN|<d|j|<n‡| dj9| dd«}|j9tY||«t[|«‰¬««t|j«|jN|<t?jL|«|j|<|xjtQ|«z c_d|_.yy)z‚
        Set new item in-place. Does not consolidate. Adds new Block if not
        contained in the current set of items
        Nrcrurvz9Shape of new values must be compatible with manager shape)Úinplacer‹rlrcó•—‰SrJrA©rerÌs €rOÚ value_getitemz(BlockManager.iset.<locals>.value_getitemvsø€Ø rRcó"•—‰|jSrJ)r¶r•s €rOr–z(BlockManager.iset.<locals>.value_getitem{sø€Ø˜Y×.Ñ.Ñ/Ð/rRTr7©rr rc3óD•K—|]\}}|t‰«vsŒ|–—Œy­wrJ)Úset)r˜rŠrlÚremoved_blknoss   €rOršz$BlockManager.iset.<locals>.<genexpr>¦s&øèø€ò Ù˜˜3¸AÄSÈÓEXÒ<X”ñ ùsƒ ™ c 3óf•K—|](}t‰tt||dz««‰¬«–—Œ*y­w)rc©rhrerN)r4rri)r˜rJrrÌs  €€rOršz$BlockManager.iset.<locals>.<genexpr>³s>øèø€ò"ð  ô !Ø$Ü"0´°wÀÈ!Á Ó1LÓ"MØ!÷ðñ"ùsƒ.1rrF)/rDrPr^rr¡ÚTr/rrtr r×r    rXr_rFr€rŽÚ _iset_singlerarÔr=r>r¶Ú should_storer
r‰rÕÚ set_inplacerrµrr¢ÚzerosrÚbool_rPÚintpÚfillrØrCrÒr’rrr4rrT)rNr†rÌr“rÚvalue_is_extension_typer‹rlr–r_raÚunfit_mgr_locsÚunfit_val_locsÚblkno_lÚval_locsÚblk_locsÚ
is_deletedÚ
new_blknosÚ
unfit_idxrÚ unfit_countrÚunfit_val_itemsr›s  ` `                 @rOÚisetzBlockManager.iset=sú€ð =‰=Ð   T§Y¡Y°¢]Ø × ,Ñ ,Ô .ô#6°e·k±kÓ"BÐÙ&؏z‰z˜QŠØŸ™‘ä*¨5°qÔ9à{‰{˜1˜2ˆ $§*¡*¨Q¨R .Ò0Ü$ØOóðô >‰>˜#Ô ô ”s˜C“.ˆCØ—K‘K Ñ$ˆEØ—+‘+˜eÑ$ˆCܐ3—=‘=Ó! QÒ&Ø×(Ñ(ØØØ#ØØØð )óðð%ˆCñ #õ ô
 0𗑘SÑ!ˆØ—,‘,˜sÑ#×(Ñ(Ó*ˆàˆØˆØˆÜ!-×!BÑ!BÀ6ÐQUÔ!Vó    IÑ ˆGXØ—+‘+˜gÑ&ˆCؘx×/Ñ/Ñ0ˆHÙ˜3×+Ñ+¨EÔ2ä&Ô(°×1MÑ1MÈgÔ1VØ×*Ñ*Ø ©=¸Ó+BÈð+õð—O‘O H©m¸HÓ.EÔFØà×%Ñ% c§l¡l×&;Ñ&;¸HÑ&EÔFØ×%Ñ% hÔ/ôx“=¤C¨¯ © Ó$5Ò5Ø"×)Ñ)¨'Ô2Øð×*Ñ*¨7°HÀ4Ð*ÖHð-    Iô0 ˆ~Ô äŸ™ $§,¡,´b·h±hÔ?ˆJØ)-ˆJ~Ñ &䟙 $§,¡,´b·g±gÔ>ˆJØ O‰O˜BÔ Ü&(§i¡i°· ± ¼sÀ>Ó?RÑ0RÓ&SˆJ˜
{Ñ #Ø% d§l¡lÑ3ˆDŒLÜó Ü"+¨D¯K©KÓ"8ô óˆDŒKò ÜŸ™¨Ó7ˆJܘj›/ˆKà&(ˆJÙ&ð×!Ñ!ô"ð $.ô "ôô,.¯9©9°[Ó+AÄCÈÏ É ÓDTÑ+T— ‘ ˜ZÑ(Ø,-— ‘ ˜jÒ)ð#1°Ñ"3×":Ñ":¸>È!È"Ð;MÓ"Nà×!Ñ!Ü Ù,¨_Ó=Ü"0°Ó"<Ø!ôôô,/¨t¯{©{Ó+;— ‘ ˜ZÑ(Ü,.¯I©I°kÓ,B— ‘ ˜jÑ)à KŠKœ5 Ó,Ñ ,Kð(-ˆDÕ $ðO rRcó—|j|}|j€|j«t|j    |««}|1|j
j |}t|t|«|¬«}n|d}t|dd«}t|j«}    |jd||fz|j|dzdz|z}
|
|_|s|ytjt|««|j|j
j<t|«D]j\} } tjt| ««|j| j
j<| |    z|j| j
j<Œly)a?Removes columns from a block by splitting the block.
 
        Avoids copying the whole block through slicing and updates the manager
        after determinint the new block structure. Optionally adds a new block,
        otherwise has to be done by the caller.
 
        Parameters
        ----------
        blkno_l: The block number to operate on, relevant for updating the manager
        blk_locs: The locations of our block that should be deleted.
        value: The value to set as a replacement.
        refs: The reference tracking object of the value to set.
        Nr˜rrc)rFrDr^rÒÚdeleterµrr4rr€r¢rØr¶r’rC) rNr©r«rÌrrlÚnbs_tupÚlocsÚfirst_nbÚ    nr_blocksÚ
blocks_tuprŠros              rOrÕzBlockManager._iset_split_blockÓsV€ð(k‰k˜'Ñ"ˆà =‰=Ð  Ø × ,Ñ ,Ô .䘟
™
 8Ó,Ó-ˆØ Ð Ø—<‘<×(Ñ(¨Ñ2ˆDÜ# E¬>¸$Ó+?ÀdÔK‰Hà˜q‘zˆHܘG A B˜KÓ(ˆG䘟 ™ Ó$ˆ    à K‰K˜˜Ð ! X KÑ /°$·+±+¸gȹk¸mÐ2LÑ LÈwÑ Vð    ð!ˆŒ á˜5Ð,à ä35·9±9¼SÀ»]Ó3Kˆ ‰ h×'Ñ'×/Ñ/Ñ0ä˜wÓ'ò    >‰EˆAˆrÜ13·±¼3¸r»7Ó1CˆDM‰M˜"Ÿ+™+×-Ñ-Ñ .Ø01°I± ˆDL‰L˜Ÿ™×,Ñ,Ò -ñ    >rRcóD—|ra|j|«rPd}t«r|j|«sd}|j|}|j    t ||dz«||¬«yt ||j|¬«}    |j}
|
d||    fz|
|dzdz} | |_y)zþ
        Fastpath for iset when we are only setting a single position and
        the Block currently in that position is itself single-column.
 
        In this case we can swap out the entire Block and blklocs and blknos
        are unaffected.
        FTrc)rÔN©rer)    r r
r‰rar¡rir4rŽrF) rNr†rÌr“r‹rlrrÔr´roÚ
old_blocksrs             rOrŸzBlockManager._iset_singles§€ñ$ s×'Ñ'¨Ô.؈DÜ"Ô$¨T×-IÑ-IÈ%Ô-PàØ—<‘< Ñ$ˆDØ O‰OœE $¨¨q©Ó1°5¸tˆOÔ DØ ä ˜%¨3¯=©=¸tÔ DˆØ—[‘[ˆ
Ø  Ð'¨2¨%Ñ/°*¸UÀQ¹Y¸[Ð2IÑIˆ
Ø ˆŒ ØrRcóì—d}t«rN|j|«s=t|j|j|j
t tf«sd}nŒt«r‚|j|«sq|j|}|j|}|j|j
}|jdk(r|j«}n||g}|j||g|«|j|d¬«}    |r|    j||«n;|    j|f|«}
|j!||
j"j
d¬«|r)t%j&t(t*t-«¬«yy)zù
        Set values ("setitem") into a single column (not setting the full column).
 
        This is a method on the BlockManager level, to avoid creating an
        intermediate Series at the DataFrame level (`s = df[loc]; s[idx] = value`)
        FTrc)rŠ)r“rÆN)r rŒrfrFr_rhrrr
rarPrÔrÕrƒÚsetitem_inplacerËr±Ú_blockrÏrÐr+rÑr) rNr†ÚidxrÌÚ inplace_onlyÚ needs_to_warnr‹rÙrhÚcol_mgrr1s            rOÚcolumn_setitemzBlockManager.column_setitem%s@€ðˆ Ü Ô ¨×(>Ñ(>¸sÔ(CÜØ— ‘ ˜DŸK™K¨Ñ,Ñ-×4Ñ4Ü$Ô&6Ð7ôð !%‘ ä  Ô "¨4×+AÑ+AÀ#Ô+FØ—K‘K Ñ$ˆEà—l‘l 3Ñ'ˆGà—[‘[ Ñ'×.Ñ.ˆF؏{‰{˜aÒØŸ™›‘ð       Ñ*Ø × "Ñ " 5¨7¨)°VÔ <ð—)‘)˜C¨5)Ó1ˆÙ Ø × #Ñ # C¨Õ /à—o‘o s f¨eÓ4ˆGØ I‰Ic˜7Ÿ>™>×0Ñ0¸$ˆIÔ ?á Ü M‰MÜ'ÜÜ+Ó-ö ð rRcóÔ—tj«5tjddt¬«|jj ||«}ddd«|j dk(r<|j}t|«dkDr9td|jj›«‚t||j ¬«}tt||dz««}t|||¬    «}t|j«sWt!j"d
gt j$¬ «|_t!j"d
gt j$¬ «|_n"|j+|«|j-|«|j.d
<|xj|fz c_d |_t3d „|jD««dkDr%tj4dt6t9«¬«yy#1swYŒ‘xYw)zó
        Insert item at selected position.
 
        Parameters
        ----------
        loc : int
        item : hashable
        value : np.ndarray or ExtensionArray
        refs : The reference tracking object of the value to set.
        Úignorez<The behavior of Index.insert with object-dtype is deprecated)ÚcategoryNrurcz-Expected a 1D array, got an array with shape rvrrr Fc3ó6K—|]}|j –—Œy­wrJrôrös  rOršz&BlockManager.insert.<locals>.<genexpr>ƒsèø€Ò?¨%5×%Ñ%Ô%Ñ?ùs‚édaDataFrame is highly fragmented.  This is usually the result of calling `frame.insert` many times, which has poor performance.  Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`rÆ)rÏÚcatch_warningsÚfilterwarningsrÑr…ÚinsertrPržr€rÎrr/rrir4rFr¢r£r¤rDrCÚ_insert_update_mgr_locsÚ!_insert_update_blklocs_and_blknosrHrTrzrÐrr)rNr†ÚitemrÌrr.rnr°s        rOrËzBlockManager.insertVs€ô× $Ñ $Ó &ñ    4ä × #Ñ #ØØNÜ&õ ð
—z‘z×(Ñ(¨¨dÓ3ˆH÷    4ð :‰:˜Š?Ø—G‘GˆEܐ5‹z˜AŠ~Ü ØCÀEÇGÁGÇMÁMÀ?ÐSóðô' u°4·9±9Ô=ˆEä œE # s¨Q¡wÓ/Ó 0ˆÜ E°R¸dÔCˆä4—;‘;ÔäŸH™H a S´·±Ô8ˆDŒMÜŸ8™8 Q C¬r¯w©wÔ7ˆDLà × (Ñ (¨Ô -Ø × 2Ñ 2°3Ô 7àˆ    ‰    !‰ Ø  Š ˜xэ à#(ˆÔ ä Ñ?°4·;±;Ô?Ó ?À#Ò EÜ M‰MðWô#Ü+Ó-ö  ð F÷E    4ñ    4ús •9GÇG'có¢—t|j|d«D]4\}}|j|}|jj    |«|_Œ6y)z…
        When inserting a new Block at location 'loc', we increment
        all of the mgr_locs of blocks above that by one.
        N)Ú_fast_count_smallintsr_rFrŽÚincrement_above)rNr†r‹Úcountrls     rOrÌz$BlockManager._insert_update_mgr_locssK€ô
2°$·+±+¸c¸dÐ2CÓDò    ?‰LˆE5à—+‘+˜eÑ$ˆCØŸM™M×9Ñ9¸#Ó>ˆCMñ    ?rRcóŽ—||jjdk(r^tj|jd«|_tj|j
t |j««|_y|dk(rvtj|jddd…d«ddd…|_tj|j
ddd…t |j««ddd…|_ytj|j|j|t |j««\}}||_||_y)zk
        When inserting a new Block at location 'loc', we update our
        _blklocs and _blknos.
        rNr) rarr¢rrDrCr€rFr=Úupdate_blklocs_and_blknosr_)rNr†Ú new_blklocsr­s    rOrÍz.BlockManager._insert_update_blklocs_and_blknos—sï€ð $—,‘,×$Ñ$ QÑ'Ò 'äŸI™I d§m¡m°QÓ7ˆDŒMÜŸ9™9 T§\¡\´3°t·{±{Ó3CÓDˆDLØ AŠXäŸI™I d§m¡m±D°b°DÑ&9¸1Ó=¹dÀ¸dÑCˆDŒMÜŸ9™9 T§\¡\±$°B°$Ñ%7¼¸T¿[¹[Ó9IÓJÉ4ÈRÈ4ÑPˆDLä&2×&LÑ&LØ— ‘ ˜dŸk™k¨3´°D·K±KÓ0@ó'Ñ #ˆK˜ð(ˆDŒMØ%ˆDLrRcó<—tj|jdtj¬«}d||<|j    «d}|j |dd¬«}|j |}||jdg}t|«t|«|d¬«S)zJ
        Delete selected locations, returning a new BlockManager.
        rr T)r)r3rcFr!)
r¢r¢rr£Únonzeror,r…rHrkrÒ)rNr¶r¬rLrÚ new_columnsrHs       rOÚideletezBlockManager.idelete­s’€ô—X‘X˜dŸj™j¨™m´2·8±8Ô<ˆ
Ø"ˆ
7ÑØ×%Ñ%Ó'¨Ñ*ˆà×)Ñ)¨%¸DÐQUÐ)ÓVˆØ—j‘j * Ñ-ˆ ؘTŸY™Y q™\Ð*ˆØŒtD‹zœ% ›* d¸UÔCÐCrRcó¶—g}|jD]^}|jr3|j«D]}|j|«}t    ||«}Œ!ŒB|j|«}t    ||«}Œ`t |«dk(rd}n|dj jd}tt|««}t|«j||jd|g«S)zâ
        Apply grouped reduction function blockwise, returning a new BlockManager.
 
        Parameters
        ----------
        func : grouped reduction function
 
        Returns
        -------
        BlockManager
        rr) rFrrr¹r0r€rhrr%Úrangerkr\rH)rNÚfuncr¾rlÚsbrÃÚnrowsrs        rOÚgrouped_reducezBlockManager.grouped_reduce½sӀð&(ˆ à—;‘;ò        FˆC؏}Š}ðŸ*™*›,òJBØ Ÿh™h t›nGÜ$1°'¸=Ó$I‘MñJðŸ)™) D›/Ü -¨g°}Ó E‘ ð        Fô ˆ}Ó  Ò "؉Eà! !Ñ$×+Ñ+×1Ñ1°"Ñ5ˆEÜ”e˜E“lÓ#ˆäD‹z×%Ñ% m°d·i±iÀ±lÀEÐ5JÓKÐKrRcóø—|jdk(sJ‚g}|jD]$}|j|«}|j|«Œ&t    dg«}t |«j ||j|g«}|S)zÙ
        Apply reduction function blockwise, returning a single-row BlockManager.
 
        Parameters
        ----------
        func : reduction function
 
        Returns
        -------
        BlockManager
        ruN)rPrFÚreducerr%rkr\r…)rNrÜÚ
res_blocksrlrrr1s       rOrázBlockManager.reduceÞsy€ðy‰y˜AŠ~Ј~à"$ˆ
Ø—;‘;ò    #ˆCØ—*‘*˜TÓ"ˆCØ × Ñ ˜cÕ "ð    #ôtf“ ˆÜt“*×(Ñ(¨°d·j±jÀ%Ð5HÓIˆØˆrRcó—t|||«S)zO
        Apply array_op blockwise with another (aligned) BlockManager.
        )r6)rNÚotherÚarray_ops   rOr6zBlockManager.operate_blockwiseös€ô!  u¨hÓ7Ð7rRcó$—t||t«S)ú“
        Used in .equals defined in base class. Only check the column values
        assuming shape and indexes have already been checked.
        )r5r)rNräs  rOÚ _equal_valueszBlockManager._equal_valuesüs€ô
˜T 5¬,Ó7Ð7rRÚlinear)Ú interpolationcó&—|jdk\sJ‚t|«sJ‚t|j«}t    |t
j ¬«|d<|jDcgc]}|j||¬«‘Œ}}t|«||«Scc}w)a‡
        Iterate over blocks applying quantile reduction.
        This routine is intended for reduction type operations and
        will do inference on the generated blocks.
 
        Parameters
        ----------
        interpolation : type of interpolation, default 'linear'
        qs : list of the quantiles to be computed
 
        Returns
        -------
        BlockManager
        rur rc)Úqsrê)
rPrrÖrHr%r¢Úfloat64rFÚquantilerk)rNrìrêrrlrFs      rOrîzBlockManager.quantilesŒ€ð,y‰y˜AŠ~Ј~ܘBÔÐÐ䘟    ™    “?ˆÜ˜B¤b§j¡jÔ1ˆ‰ ðIMÏ É ö
ØADˆCL‰L˜B¨mˆLÕ <ð
ˆð
ðŒtD‹z˜& (Ó+Ð+ùò    
sÁ Bcó*—|j|j«}|j}|j }|r7|jj
|j Ž}|jd¬«}n(tj|j dt¬«}g}g}    t|j«dk(rd}
n<t|«t|j«z } | t| «k(sJ‚t| «}
|jD]~} | j} | j|
«}| j!||||¬«\}}|j#|«|    j#|«|j%«t%d„|D««k(rŒ~J‚||    }t'|||gd¬«}|S)    a'
        Return a BlockManager with all blocks unstacked.
 
        Parameters
        ----------
        unstacker : reshape._Unstacker
        fill_value : Any
            fill_value for newly introduced missing values.
 
        Returns
        -------
        unstacked : BlockManager
        rrÈrcr )Ú new_placementÚ needs_maskingc3óFK—|]}t|j«–—Œy­wrJ)r€rŽrs  rOršz'BlockManager.unstack.<locals>.<genexpr>Zsèø€Ò$H¸2¤S¨¯©×%6Ñ$HùryFr!)Úget_new_columnsr…Ú    new_indexÚmask_allÚmaskÚreshapeÚ
full_shaper›r¢r¢rSr€rXrFrµÚtile_for_unstackÚ_unstackrrzrq)rNÚ    unstackerr(rØrôr5Ú
new_mask2DrñrÚ columns_maskÚfactorÚfacrlrµrðrFrör#s                  rOÚunstackzBlockManager.unstack'sƒ€ð ×/Ñ/°·
±
Ó;ˆ Ø×'Ñ'ˆ    à"×+Ñ+Ð+ˆ
Ù ð3˜9Ÿ>™>˜/×2Ñ2°I×4HÑ4HÐIˆJØ&ŸN™N°˜NÓ2‰MäŸH™H Y×%9Ñ%9¸!Ñ%<ÄDÔIˆMà"$ˆ
Ø)+ˆ ä ˆtz‰z‹?˜aÒ Ø‰FäkÓ"¤S¨¯©£_Ñ4ˆCØœ#˜c›(’?Ð "?ܘ“XˆFà—;‘;ò    IˆCØ—|‘|ˆHØ$×5Ñ5°fÓ=ˆMàŸ<™<ØØØ+Ø+ð    (ó‰LˆFDð × Ñ ˜fÔ %Ø × Ñ  Ô %ð—8‘8“:¤Ñ$HÀÔ$HÓ!HÓHÐ HÐHð    Ið(" ,Ñ/ˆ ä ˜* {°IÐ&>ÐQVÔ WˆØˆ    rRcó—i}|jD]6}|jt|j«g«j    |«Œ8|j «Dcic]\}}||j |«“Œc}}Scc}}w)z
        Return a dict of str(dtype) -> BlockManager
 
        Returns
        -------
        values : a dict of dtype -> BlockManager
        )rFÚ
setdefaultrcr¡rr…rû)rNÚbdrÁr¡rFs     rOÚto_dictzBlockManager.to_dictdsm€ð&(ˆØ—‘ò    6ˆAØ M‰Mœ#˜aŸg™g›,¨Ó +× 2Ñ 2°1Õ 5ð    6ðCEÇ(Á(Ã*×M±°¸t—}‘} VÓ,Ñ,ÓMÐMùÓMsÁA;cóô—tj|«xr t|«}t|j«dk(r5t j |jt¬«}|j«S|jrþ|jd}|tjur%tj|jd«r|rnd}|jr8|jj!|||¬«j#|j«}nF|s"t j$|j|¬«}n"t j&|j||¬«}t)«r7|s5|j+«}d|j,_n|j1||¬«}|tjur    |j«S|jj2dk(r|r    |j«S||t|«<|j«S)    a-
        Convert the blockmanager data into an numpy array.
 
        Parameters
        ----------
        dtype : np.dtype or None, default None
            Data type of the return array.
        copy : bool, default False
            If True then guarantee that a copy is returned. A value of
            False does not guarantee that the underlying data is not
            copied.
        na_value : object, default lib.no_default
            Value to be used as the missing value sentinel.
 
        Returns
        -------
        arr : ndarray
        rr r»T)r¡Úna_valuerÔ)r¡rÔF©r¡r)r Úis_floatrr€rFr¢rPrÚfloatÚ    transposerr9Ú is_np_dtyper¡rõrhÚto_numpyr÷Úasarrayr£r
rÚflagsÚ    writeableÚ _interleaveÚkind)rNr¡rÔrÚ
passed_nanrmrls       rOrzBlockManager.as_arraytsŽ€ô0—\‘\ (Ó+Ò>´°X³ˆ
ä ˆt{‰{Ó ˜qÒ  Ü—(‘(˜4Ÿ:™:¬UÔ3ˆCØ—=‘=“?Ð "à × Ò Ø—+‘+˜a‘.ˆCàœsŸ~™~Ñ-ô—?‘? 3§9¡9¨cÔ2±zààDà×Òð
—j‘j×)Ñ)ØØ%Øð*ó÷‘'˜#Ÿ)™)Ó$ñ    ñ
Ü—j‘j §¡°5Ô9‘ä—h‘h˜sŸz™z°¸TÔBä"Ô$©TØ—h‘h“jØ&+—    ‘    Õ#à×"Ñ"¨¸Ð"ÓBˆCð ”s—~‘~Ñ %Ø ð }‰}‹Ðð Y‰Y^‰^˜sÒ "¡zØ ð}‰}‹Ðð&ˆC”S“    ‰Nà}‰}‹ÐrRcó—|s-t|jDcgc]}|j‘Œc}«}t|«}t    j
|j |¬«}t    j|j d«}|t    jd«k(r`|tjurN|jD]=}|j}|j|«}|||j<d||j<Œ?|S|jD]g}|j}|jr|jj||¬«}n|j|«}|||j<d||j<Œi|j!«s t#d«‚|Scc}w)zt
        Return ndarray from blocks with specified item order
        Items must be contained in the blocks
        r rr¤rcrz'Some items were not contained in blocks)r*rFr¡r)r¢rPrr¢r r9rµÚ
get_valuesr¶rõrhr rrt)rNr¡rrlr0Úitemmaskr‡rms        rOrzBlockManager._interleave¾s\€ñô&Ø&*§k¡kÖ2˜s—“Ò2óˆEô   Ó&ˆÜ—‘˜$Ÿ*™*¨EÔ2ˆä—8‘8˜DŸJ™J q™MÓ*ˆà ”B—H‘H˜XÓ&Ò &¨8´s·~±~Ñ+Eà—{‘{ò )Ø—\‘\Ø—n‘n UÓ+Ø%(r—z‘zÑ"Ø'(˜Ÿ™Ò$ð     )ð
ˆMà—;‘;ò    %ˆCØ—‘ˆBØ×Òð
—j‘j×)Ñ)ØØ%ð*ó‘ð
—n‘n UÓ+Ø!$ˆF2—:‘:Ñ Ø#$ˆHR—Z‘ZÒ  ð    %ð |‰|Œ~Ü Ð!JÓKÐ Kàˆ ùòM3s–F    cóR—|js|j«|jS)zH
        Return True if more than one block with the same dtype
        )rTÚ_consolidate_checkrUrMs rOr"zBlockManager.is_consolidated÷s%€ð×'Ò'Ø × #Ñ #Ô %Ø×$Ñ$Ð$rRcó—t|j«dk(rd|_d|_y|jDcgc]}|jsŒ|j
‘Œ}}t|«tt |««k(|_d|_ycc}w)NrcT)r€rFrUrTr@r¡ršr¦s   rOrzBlockManager._consolidate_checkÿsq€Ü ˆt{‰{Ó ˜qÒ  à$(ˆDÔ !Ø'+ˆDÔ $Ø Ø'+§{¡{ÖK °c×6JÓ6J#—)“)ÐKˆÐKÜ # F£ ¬s´3°v³;Ó/?Ñ ?ˆÔØ#'ˆÕ ùòLs ¶BÁBcó–—|j«s9t|j«|_d|_d|_|j «yyrr)r"Ú _consolidaterFrUrTr^rMs rOrz!BlockManager._consolidate_inplace    sA€ð
×#Ñ#Ô%Ü& t§{¡{Ó3ˆDŒKØ$(ˆDÔ !Ø'+ˆDÔ $Ø × ,Ñ ,Õ .ð    &rRcó(—d}g}|D]v}|jD]M}|jtd««}|jj    |«|_|j |«ŒO|t |j«z }Œx|t|«|«}|S)zK
        Concatenate uniformly-indexed BlockManagers horizontally.
        rN)    rFÚslice_block_columnsrirŽÚaddrr€r…rÒ)    r[ÚmgrsrHÚoffsetrFr”rlror1s             rOÚconcat_horizontalzBlockManager.concat_horizontals“€ð
ˆØ ˆØò        %ˆCØ—z‘zò "ð×,Ñ,¬U°4«[Ó9Ø!Ÿ|™|×/Ñ/°Ó7” Ø— ‘ ˜bÕ!ð  "ð ”c˜#Ÿ)™)“nÑ $‰Fð        %ñ”e˜F“m TÓ*ˆØˆrRcó—td«‚)zI
        Concatenate uniformly-indexed BlockManagers vertically.
        z.This logic lives (for now) in internals.concatrK)r[rrHs   rOÚconcat_verticalzBlockManager.concat_vertical,s€ô
"Ð"RÓSÐSrRrY)rFzSequence[Block]rHzSequence[Index]rWrSrWrZ©rWrZr[)r†rXrWrg)rŠrXrŠrSrWrg)rŠrXrWr7)rWzlist[np.ndarray])FN)
r†úint | slice | np.ndarrayrÌr7r“rSrúBlockValuesRefs | NonerWrZ)NN)
r©rXr«znp.ndarray | list[int]rÌzArrayLike | Nonerr%rWrZrJ)r†rXrÌr7r“rSr‹rXrlr-rr%rWrZ©F)r†rXr¿r$rÀrSrWrZ)r†rXrÎrrÌr7rWrZ)rWrq)rÜrrWr;)rärqrWrq)rNrqrärqrWrS)rìr%rêr:rWr;)rWzdict[str, Self])r¡únp.dtype | NonerÔrSrr¤rWú
np.ndarray)r¡r'rr¤rWr(r^)rz
list[Self]rHrGrWr;)&r­rgrhrirPrXrurmr\rˆrƒrŒrlr‘r±rÕrŸrÃrËrÌrÍrÙrßrár6rèrîrrr r9rrr"rrr r"rArRrOrqrqšs„ñð €Dð"&ð    %àð%ðð%ðð    %ð
 
ó %ó, ðò9óð9ó47ôl 4ó
ðòóðð>Ø'+ð T-à %ðT-ððT-ðð    T-ð
%ð T-ð
ó T-ðt#'Ø'+ð />àð/>ð)ð/>ð ð    />ð
%ð />ð
ó />ðp(,ðà ððððð    ð
ð ð ð ð%ðð
óðDTYð/Øð/Ø5ð/ØLPð/à     ó/ôb5ón?ó&ó, Dó LóBó08ó 8ð08ñ     ,ð ð ,ð-ð     ,ð
 
ó  ,óH;ózNð$"&ØØŸ>™>ð    HàðHððHðð    Hð
 
ó HðX"&ØŸ>™>ð4àð4ðð4ð
ó    4ór%ó(ó    /ðòóðð(òTóñTrRrqc󈇗eZdZdZedd„«ZdZdZdZdZ        d                             d!d„Z
e                         d"d„«Z e     d#                            d$d„«Z d%d„Zd&d'd    „Zd
„Zd(d „Zd(d „Zed)d „«Zed„«Zed„«Zd*d„Zd&d+d„Zed,d„«Zed-d„«Zd.d„Zd„Zd„Zd/d„Zd0d„Zed1d„«Z d2d3ˆfd„ Z!d4d„Z"d„Z#d5d„Z$d6d„Z%ˆxZ&S)7rgzmanage a single block withcó—yr~rArMs rOrPzSingleBlockManager.ndim7s€àrRTrAcó$—|g|_|f|_yrJ©rHrF)rNr°rwrWs    rOrXzSingleBlockManager.__init__@s€ðFˆŒ    Øhˆ rRcód—t|«dk(sJ‚t|«dk(sJ‚||d|dd¬«S)rrcrFr!©r€rZs   rOr\zSingleBlockManager.from_blocksMs=€ô6‹{˜aÒÐÐܐ4‹y˜AŠ~Ј~ِ6˜!‘9˜d 1™g¸Ô>Ð>rRcó„—t|«}ttdt|«««}t    ||d|¬«}|||«S)zN
        Constructor for if we have an array that is not yet a Block.
        rrcr)r2rrir€r3)r[r£rrrnr°s      rOÚ
from_arrayzSingleBlockManager.from_arrayZs@€ô$ EÓ*ˆÜ œE !¤S¨£ZÓ0Ó 1ˆÜ˜%¨2°A¸DÔAˆÙ5˜%ӠРrRcóâ—|jd}t|jd¬«}td«}t    |«||d|j
¬«}||j dg}t|g|d¬«S)z5
        Manager analogue of Series.to_frame
        rrurvrF)rHrW)rFr/rhrrkrrHrq)rNÚcolumnsrlrmrnÚnew_blkrHs       rOÚ    to_2d_mgrzSingleBlockManager.to_2d_mgrfsh€ðk‰k˜!‰nˆÜ  §¡°!Ô4ˆÜ ˜AÓ ˆØ”$s“)˜C¨2°A¸C¿H¹HÔEˆØ˜Ÿ™ 1™Ð&ˆÜ˜W˜I¨DÀ5ÔIÐIrRcóR—|jdjj« S)rˆrrŽ)rNrŠs  rOrŒz$SingleBlockManager._has_no_referenceqs$€ð —;‘;˜q‘>×&Ñ&×4Ñ4Ó6Ð6Ð6rRcó—|jDcgc]}|j‘Œ}}|jDcgc]%}|j|jj‘Œ'}}t |j «}d||jDcgc]%}|j|jjdœ‘Œ'c}dœi}||||fScc}wcc}wcc}w)Nú0.14.1)rhrµr,)rFrhr…rµr¶rÖrH)rNrÁrTÚ block_itemsÚ
axes_arrayÚ extra_states      rOÚ __getstate__zSingleBlockManager.__getstate__ysµ€Ø*.¯+©+Ö6 Q˜Ÿ›Ð6ˆ Ð6Ø?C¿{¹{ÖK¸!t—z‘z !§*¡*×"4Ñ"4Ó5ÐKˆ ÐKܘ$Ÿ)™)“_ˆ
ð Ø"ð"Ÿ[™[öàð !Ÿx™x°Q·Z±Z×5GÑ5GÓHòñð
ˆ ð˜<¨°kÐAÐAùò!7ùÚKùò sB9²*B>Â*CcóR‡‡—d    d„Št|t«rqt|«dk\rcd|dvr\|dd}|dDcgc] }t|«‘Œc}|_t|j«Štˆˆfd„|dD««|_n t d«‚|j«ycc}w)
Ncó„—t|d¬«}t|t«s t|«}t|«}t    |||¬«S)NT)Ú extract_numpyr‚)r#rfrr2r3)rhrµrPs   rOÚunpickle_blockz7SingleBlockManager.__setstate__.<locals>.unpickle_blocks=€ô# 6¸Ô>ˆFܘh¬Ô7Ü)¨(Ó3ä(¨Ó0ˆFܘV¨x¸dÔCÐ CrRér7érHc3ó@•K—|]}‰|d|d‰¬«–—Œy­w)rhrµrvNrA)r˜rÁrPr?s  €€rOršz2SingleBlockManager.__setstate__.<locals>.<genexpr>›s-øèø€ò àñ˜q ™{¨A¨j©MÀ×EÐEñ ùsƒrFz*pre-0.14.1 pickles are no longer supported)rPrXrWr-)rfrÒr€r&rHrFrLÚ_post_setstate)rNÚstater¯rPr?s   @@rOÚ __setstate__zSingleBlockManager.__setstate__Œsù€ó    Dô eœUÔ #¬¨E«
°aª¸HÈÈaÉÑ<Pؘ!‘H˜XÑ&ˆEØ49¸&±MÖB¨bœ bÕ)ÒBˆDŒIܐt—y‘y“>ˆDÜô à˜x™ô óˆDKô
&Ð&RÓSÐ Sà ×ÑÕùòCs»B$có—yrJrArMs rOrCz!SingleBlockManager._post_setstate¤s€Ø rRcó —|jdSrƒ)rFrMs rOr¾zSingleBlockManager._block§s€à{‰{˜1‰~ÐrRcó—y©zcompat with BlockManagerNrArMs rOrCzSingleBlockManager._blknos«ó€ðrRcó—yrIrArMs rOrDzSingleBlockManager._blklocs°rJrRcó —|j}t«rJt|«dkDr<|j«r,t    |«|j d¬«|j «S|j|}t|tj«r|jjdk(rd}n |j}ttdt|«««}t    |«||d|¬«}|j |}t    |«||«S)NrFrÉrÁrcr)r¾r
r€rrkrÔrrhrfr¢rÍr¡rrrri)rNr¶rlr£rrnr°Únew_idxs        rOÚget_rows_with_maskz%SingleBlockManager.get_rows_with_maskµsπàk‰kˆÜ Ô  ¤S¨£\°AÒ%5¸'¿+¹+¼-Ø”4˜“:˜cŸh™h¨E˜hÓ2°D·J±JÓ?Ð ?Ø—
‘
˜7Ñ#ˆä gœrŸz™zÔ *¨w¯}©}×/AÑ/AÀSÒ/Hà‰Dð—8‘8ˆDä œE !¤S¨£ZÓ0Ó 1ˆØ”S“    ˜%¨2°A¸DÔAˆà—*‘*˜WÑ%ˆØŒtD‹z˜% Ó)Ð)rRcó@—||jk\r td«‚|j}|j|}t    t dt |«««}t|«||d|j¬«}|jj|«}t|«||«S)Nr'rrcr) rPr+r¾rhrrir€rkrrÚ_getitem_slice)rNrGrwrlr£rnr°rôs        rOÚ    get_slicezSingleBlockManager.get_sliceÉs‹€ð 4—9‘9Ò ÜÐBÓCÐ Càk‰kˆØ—
‘
˜5Ñ!ˆÜ œE !¤S¨£ZÓ0Ó 1ˆð”S“    ˜%¨2°A¸C¿H¹HÔEˆØ—J‘J×-Ñ-¨eÓ4ˆ    ØŒtD‹z˜% Ó+Ð+rRcó —|jdSrƒr„rMs rOrzSingleBlockManager.indexØr†rRcó.—|jjSrJ)r¾r¡rMs rOr¡zSingleBlockManager.dtypeÜs€à{‰{נѠРrRcób—tj|jjgt¬«SrŸ)r¢r£r¾r¡r¤rMs rOr¨zSingleBlockManager.get_dtypesàs €Üx‰x˜Ÿ™×*Ñ*Ð+´6Ô:Ð:rRcó6—|jj«S)z$The array that Series.values returns)r¾Úexternal_valuesrMs rOrVz"SingleBlockManager.external_valuesãs€à{‰{×*Ñ*Ó,Ð,rRcó.—|jjS)z%The array that Series._values returns)r¾rhrMs rOÚinternal_valuesz"SingleBlockManager.internal_valuesçs€à{‰{×!Ñ!Ð!rRcó.—|jjS)z#The array that Series.array returns)r¾rrMs rOrzSingleBlockManager.array_valuesëó€à{‰{×'Ñ'Ð'rRcór—|jjr|jd¬«S|j«S)NFrÉ)r¾r
rÔrprMs rOr z#SingleBlockManager.get_numeric_dataïs-€Ø ;‰;× !Ò !Ø—9‘9 %9Ó(Ð (؏‰Ó Ð rRcó.—|jjSrJ)r¾Ú _can_hold_narMs rOr]zSingleBlockManager._can_hold_naôrZrRcóJ•—t«}t«}|s|rz|jd«si|r;|jj    «f|_|j j«n,|r*|r(tjttt«¬«t‰|9||«y)a'
        Set values with indexer.
 
        For Single[Block/Array]Manager, this backs s[indexer] = value
 
        This is an inplace version of `setitem()`, mutating the manager/values
        in place, not returning a new Manager (and Block), and thus never changing
        the dtype.
        rrÆN)r
r rŒr¾rÔrFÚ_cacheÚclearrÏrÐr,rÑrÚsuperr½)rNr¶rÌrÐrãÚwarn_cowÚ    __class__s      €rOr½z"SingleBlockManager.setitem_inplaceøsø€ô(Ó)ˆ    Ü%Ó'ˆÙ ™¨4×+AÑ+AÀ!Ô+DÙØ#Ÿ{™{×/Ñ/Ó1Ð3” Ø— ‘ ×!Ñ!Õ#Ù™dÜ— ‘ Ü+Ü!Ü/Ó1õô     ‰Ñ ¨Õ/rRcóܗ|jj|«d}|f|_|jdj|«|jd<|jj «|S)zy
        Delete single location from SingleBlockManager.
 
        Ensures that self.blocks doesn't become empty.
        r)r¾r³rFrHr_r`)rNr¶ros   rOrÙzSingleBlockManager.ideletes[€ð [‰[× Ñ  Ó (¨Ñ +ˆØeˆŒ Ø—y‘y ‘|×*Ñ*¨7Ó3ˆ    ‰    !‰ Ø  ‰ ×ÑÔØˆ rRcó—td«‚)zY
        fast path for getting a cross-section
        return a view of the data
        zUse series._values[loc] insteadrK)rNr†s  rOrˆzSingleBlockManager.fast_xss€ô
"Ð"CÓDÐDrRcóŠ—||jd_ttt    |«««|jd_y)a
        Set the values of the single block in place.
 
        Use at your own risk! This does not check if the passed values are
        valid for the current Block/SingleBlockManager (length, dtype, etc),
        and this does not properly keep track of references.
        rN)rFrhrrir€rŽ)rNrhs  rOÚ
set_valueszSingleBlockManager.set_values$s2€ð!'ˆ ‰ A‰ÔÜ#1´%¼¸F» Ó2DÓ#Eˆ ‰ A‰Õ rRcóž—|jdk7ry|jdj}|jdj}t||«S)rçrcFr)rPrFrhr)rNräÚleftÚrights    rOrèz SingleBlockManager._equal_values1sE€ð :‰:˜Š?ØØ{‰{˜1‰~×$Ñ$ˆØ— ‘ ˜Q‘×&Ñ&ˆÜ˜D %Ó(Ð(rR)rWz
Literal[1]r&)r°r-rwr%rWrSrWrZr[rJ)r£r7rr%rr%rWrg)r2r%rWrq)rr`r#)rWr-)r¶znpt.NDArray[np.bool_]rWr;)rGrirwr8rWrgr_)rWr9ra)rWr>r]r^rY)rÐrSrWrZ)rWrg)rhr7rWrZ)rär;rWrS)'r­rgrhrirlrPrUrTrjrrXrmr\r0r4rŒr;rErCrr¾rCrDrNrQrr¡r¨rVrXrr r]r½rÙrˆrgrèÚ __classcell__)rcs@rOrgrg4s˜ø„Ù$à òóððÐØÐØ€IØ€Oð "'ð     àð ðð ðð     ð
 
ó ðð
?àð
?ðð
?ð
ò    
?óð
?ðàLPð    !Øð    !Ø&+ð    !Ø3Ið    !à    ò    !óð    !ó    Jô7òBó&ó0 ðòóððñóððñóðó*ô( ,ðòóððò!óð!ó;ò-ò"ó(ó!ð
ò(óð(ö0ó2
òEó F÷
)rRrgcó—    t|||¬«}|rj «S#t$rY}|Dcgc]}|j‘Œncc}w}}td„|D««}t    ||dj
dd||«Yd}~Œqd}~wwxYw)Nr!c3ó:K—|]}|jd–—Œy­w)rN)r)r˜rms  rOršz3create_block_manager_from_blocks.<locals>.<genexpr>Tsèø€Ò7¨˜Ÿ    ™     ! Ñ7ùs‚rrc)rqrÎrhrzr{rr)    rFrHr$rWr”Úerrrlrªr}s             rOÚ create_block_manager_from_blocksroBs‹€ðLܘ6 4Ð:JÔKˆñØ × Ñ Ô"Ø €Jøô òLØ(.Ö/ #—*“*Ñ/ùÒ/ˆÐ/ÜÑ7°Ô7Ó7ˆ    Ü  ¨F°1©I¯O©O¸A¸BÐ,?ÀÀs×KÑKûðLús‚$¤    B­B±AÁ8BÂBcó֗    t|||«}t||d¬«}|rj «S#t$r.}tt    |«|dj
||«Yd}~ŒFd}~wwxYw)NFr!r)Ú _form_blocksrqrÎr{r€rr)rªrHr$rrFr”Úes       rOÚ'create_block_manager_from_column_arraysrs\sk€ð"Hܘf k°4Ó8ˆÜ˜6 4¸%Ô@ˆñØ × Ñ Ô"Ø €Jøô     òHÜ ¤ V£¨f°Q©i¯o©o¸tÀQ×GÑGûðHús‚1±    A(º$A#Á#A(c    ó$—ttt|gt|«z««}t    |«dkr|ddd…}td„|D««}t    |«dkr|ddd…}||k(r||‚|ddk(r t d«‚t d|›d|›«‚)    z.raise a helpful message about our constructionruNrc3ó2K—|]}t|«–—Œy­wrJr.)r˜r¯s  rOršz+raise_construction_error.<locals>.<genexpr>ƒsèø€Ò+ ”C˜—GÑ+ùs‚rz)Empty data passed with indices specified.zShape of passed values is z, indices imply )rÒÚmaprXrÖr€rÎ)r}Ú block_shaperHrrÚpassedÚimplieds      rOr{r{ws¨€ô”3”s˜Y˜K¬$¨{Ó*;Ñ;Ó<Ó =€Fä
ˆ6ƒ{aÒØ™˜"˜‘ˆäÑ+ dÔ+Ó+€Gä
ˆ7ƒ|qÒØ™$˜B˜$‘-ˆðÒ˜Q˜]؈ؐ1~˜ÒÜÐDÓEÐEÜ
Ð1°&°Ð9IÈ'ÈÐSÓ
TÐTrRcó`—|dj}t|«rt|«}||fSd}||fS)Nrcr)r¡rÚid)Útupr¡Úseps   rOÚ_grouping_funcr~”s?€Ø ‰FL‰L€Eä˜5Ô!ô‹iˆð ˆ:Ððˆà ˆ:ÐrRc ó0—tt|««}|s t||«Stj|t
«}g}|D]G\\}}}t |«}    t|tj«r’|jdv}
t|jttf«rtjt«}t!t|«|«\} } |
r t#| «} |    | t%| «d¬«} |j'| «ŒÁt)|«r:|Dcgc]}|    |dt%|d«d¬«‘Œ}}|j+|«Œ|Dcgc]&}|    t-|dd«t%|d«d¬«‘Œ(}}|j+|«ŒJ|Scc}wcc}w)NÚmMrur‚rcr)rÖr’Ú _tuples_to_blocks_no_consolidateÚ    itertoolsÚgroupbyr~r1rfr¢r¡rÚ
issubclassrkrcÚbytesr¤Ú _stack_arraysr"rrrrr/)rªr$rÚtuplesÚgrouperrÚ_r¡Ú    tup_blockÚ
block_typeÚ    is_dtlikerhrerlrxÚ dtype_blockss                rOrqrq¡s„€Ü ”)˜FÓ#Ó $€Fá Ü/°¸Ó=Ð=ô ×Ñ ¬Ó7€Gà€CØ!(ó%щ
ˆˆEIÜ# EÓ*ˆ
ä eœRŸX™XÔ &ØŸ
™
 dÐ*ˆIä˜%Ÿ*™*¤s¬E lÔ3ÜŸ™¤Ó(ä -¬d°9«o¸uÓ EÑ ˆFIÙÜ7¸Ó?Ù˜V¬~¸iÓ/HÈqÔQˆCØ J‰JsOä   Ô 'ð#öàñ˜1˜Q™4¬>¸!¸A¹$Ó+?ÀaÖHðˆLðð J‰J|Ö $ð#ö    ðñÜ& q¨¡t¨QÓ/¼>È!ÈAÉ$Ó;OÐVWöðˆLðð J‰J|Ö $ð;%ð< €Jùòùòs Ä!FÅ +Fc ó˜—t||«Dcgc]*\\}}}tt|d¬«t|«|¬«‘Œ,c}}}Scc}}}w)Nrurvrº)rDr4r/r)r‡rrŠrmr™s     rOrrÏsR€ô  # 6¨4Ó0÷     ð ñ ‰Xˆasô    Ü ˜s¨Ô +´~ÀaÓ7HÈsö    
ô ðùô s‘/Acóº—t|Ž\}}|d}t|«f|jz}tj||¬«}t |«D]
\}}|||<Œ ||fS)Nrr )rDr€rr¢rPr’)    r‡r¡rerªÚfirstrÚstackedrŠrms             rOr†r†Ùsk€Ü˜V˜ Ñ€Iˆvà 1‰I€EÜ ‹[ˆN˜UŸ[™[Ñ (€Eäh‰hu EÔ*€GܘFÓ#ò‰ˆˆ3؈Š
ðð IÐ ÐrRcóʗd„}tjt||¬«|«}g}|D].\\}}}tt    |«||¬«\}}t ||«}Œ0t |«S)zJ
    Merge blocks having same dtype, exclude non-consolidating blocks
    có—|jSrJ)Ú_consolidate_key)rxs rOú<lambda>z_consolidate.<locals>.<lambda>ës €Q×'Ñ'€rR)Úkey)r¡Úcan_consolidate)r‚rƒÚsortedÚ _merge_blocksrÖr0rÒ)    rFÚgkeyrˆrr@r¡Ú group_blocksÚ merged_blocksr‰s             rOrræsx€ñ
(€DÜ×Ѥ v°4Ô 8¸$Ó?€Gà €JØ3:ò>Ñ/Ñ!Р   ˜5 <Ü(Ü Ó  eÐ=Mô
ш qô# =°*Ó=‰
ð    >ô
Ó ÐrRcój—t|«dk(r|dfS|r tj|Dcgc]}|jj‘Œc}«}t |dj tj «r.tj|Dcgc]}|j‘Œc}«}nF|Dcgc]}|j‘Œ}}ttt|«}|dj|d¬«}tj|«}    ||    }||    }t|«}
t||
¬«gdfS|dfScc}wcc}wcc}w)NrcFrrÈrdT)r€r¢rrµrrfr¡Úvstackrhr    rr!Ú_concat_same_typeÚargsortrr4) rFr¡r—rÁr6Ú
new_valuesrlÚbvalsÚbvals2r rns            rOr™r™÷s€ô ˆ6ƒ{aÒØuˆ}Ðâô—~‘~ÀFÖ&K¸q q§z¡z×':Ó':Ò&KÓLˆ ô f˜Q‘i—o‘o¤r§x¡xÔ 0ô
Ÿ™°fÖ#=° A§H£HÒ#=Ó>‰Jà+1Ö2 CS—Z“ZÐ2ˆEÐ2Üœ(Ô#>Ñ?ÀÓGˆFØ ™×4Ñ4°VÀ!Ð4ÓDˆJä—*‘*˜\Ó*ˆØ Ñ(ˆ
Ø# GÑ,ˆ ä ˜LÓ )ˆÜ˜Z°2Ô6Ð7¸Ð=Ð=ð 5ˆ=Ðùò/'Lùò$>ùâ2s©D&ÂD+Â&D0cóp—tj|«}|j«d}t|||«S)z:Faster version of set(arr) for sequences of small numbers.r)r¢Úbincountr×rD)rmÚcountsÚnzs   rOrÐrР   s4€ä [‰[˜Ó €FØ    ‰Ó    ˜!Ñ    €Bô ˆr6˜"‘:Ó ÐrRcóL—t|t«rd|tj||«fSt|tj
«r|j jdk7r"t|dd«}tt|«|«‚t|«}|s t||«}d|t|«fS)NrirŠr¡Úfancy)rfrir=Ú    slice_lenr¢rÍr¡rrºÚ    TypeErrorrkrr$r€)rEÚlengthr5r¡r¶s     rOr:r:#    s¢€ôÐ"¤EÔ*à Ø Ü × "Ñ "Ð#3°VÓ <ð
ð    
ôÐ+¬R¯Z©ZÔ8Ø×%Ñ%×*Ñ*¨cÒ1äÐ,¨g°tÓ<ˆEÜœDÐ!1Ó2°EÓ:Ð :ä%Ð&6Ó7ˆÙÜ+¨G°VÓ<ˆGؘ¤ W£Ð-Ð-rRcó(—t|t«rzt|«j|j«}t j ||j«}|jd|j›d«}tj||¬«St|«rtt|«}|j«}|jg|¬«}|\}}    |dk(sJ|«‚dt j |    ft
j"¬«z}
|j%|
d|¬«St|t«r*|j«}|j'||¬«}||dd|St j(||¬«}|j+|«|j,d    vr t/|«}|S)
NzM8[ú]r rcrT)r5r()rr¡r€)rfrrÚas_unitÚunitr¢ÚfullÚ_valuerr Ú _simple_newrr    rr„r…Úonesr¤r¥Ú_emptyrPr¥rr") r¡rr(ÚtsÚi8valuesÚ
dt64valuesr[Ú missing_arrÚncolsrÞÚ    empty_arrs            rOrRrR:    sb€Ü%œÔ)ä zÓ "× *Ñ *¨5¯:©:Ó 6ˆÜ—7‘7˜5 "§)¡)Ó,ˆØ—]‘] S¨¯©¨ °AÐ#6Ó7ˆ
Ü×(Ñ(¨¸5ÔAÐAä    ˜UÔ    #Ü”^ UÓ+ˆØ×(Ñ(Ó*ˆà×(Ñ(¨°5Ð(Ó9ˆ ؉ ˆˆuؘŠzР˜5Ó ˆzØœŸ™ % ´·±Ô9Ñ9ˆ    Ø×Ñ     °dÀzÐÓRÐRÜ    Eœ>Ô    *ð×(Ñ(Ó*ˆØ—j‘j u°EjÓ:ˆ Ø#ˆ ‘AˆØÐô—h‘h˜u¨EÔ2ˆ Ø×јÔ$à :‰:˜Ñ Ü8¸ÓEˆKØÐrR)TT)
rFr\rHrGr$rSrWrSrWrq)
rªrbrHrGr$rSrrÖrWrqrJ)r}rXrwr<rHrGrrzValueError | None)r|ztuple[int, ArrayLike]rWztuple[int, DtypeObj])rªrbr$rSrrÖrWr\)rWr\)r¡znp.dtype)rFrErWrE)rFr\r¡r9r—rSrWztuple[list[Block], bool])rmrB)rErfr¬rXr5rS)r¡r9rr<rWr7)mÚ
__future__rÚcollections.abcrrr‚Útypingrrrr    rÏÚnumpyr¢Úpandas._configr
r Ú pandas._libsr r=r Úpandas._libs.internalsrrÚpandas._libs.tslibsrÚ pandas.errorsrÚpandas.util._decoratorsrÚpandas.util._exceptionsrÚpandas.core.dtypes.castrÚpandas.core.dtypes.commonrrrÚpandas.core.dtypes.dtypesrrÚpandas.core.dtypes.genericrrÚpandas.core.dtypes.missingrrÚpandas.core.algorithmsÚcoreÚ
algorithmsr<Úpandas.core.arraysrrr Úpandas.core.arrays._mixinsr!Úpandas.core.constructionr"r#Úpandas.core.indexersr$Úpandas.core.indexes.apir%r&Úpandas.core.internals.baser'r(r)r*Úpandas.core.internals.blocksr+r,r-r.r/r0r1r2r3r4Úpandas.core.internals.opsr5r6Úpandas._typingr7r8r9r:r;r<r=Úpandas.api.extensionsr>r@rqrgrorsr{r~rqrr†rr™rÐr:rRrArRrOú<module>rÙsÿðÝ"÷ó÷óó ã÷÷
÷õ*Ý,Ý2Ý4å;÷ñ÷
÷÷÷
'Ð&÷ñõ
C÷õ7÷÷ó÷ ÷ ÷ ÷ñ
÷÷ñõ5ôk 
{ôk 
ô\WT<×,Ñ,Ð.>ôWTôtG)Ð)Ð+<ôG)ðbØ!ð    Ø ðà
ððððð    ð
ó ð4Ø ðà
ðððð ð    ð
ó ð> ð    UØðUàðUð ðUðó    Uó:
ó+ó\ó
óð" Ø ð Ø (ð Ø;?ð àó óFð.Ø(ð.Ø25ð.ØCGó.ô. rR