hyb
2026-01-09 4cb426cb3ae31e772a09d4ade5b2f0242aaeefa0
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
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
Ë
nñúh«‚ãó¸—ddlmZddlmZddlZddlmZmZmZm    Z    m
Z
ddl Z ddl Z ddlmZmZddlmZddlmZddlmZdd    lmZdd
lmZmZmZmZmZmZm Z m!Z!dd l"m#Z#dd l$m%Z%dd l&m'Z'm(Z(ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3ddl4m5Z5ddl6m7Z7ddl8m9Z9m:Z:ddl;m<Z<m=Z=m>Z>m?Z?m@Z@ddlAmBZCddlDmEcmFZGddlHmIZJmKZKddlLmMZMmNZNmOZOmPZPddlQmRZRmSZSerddlTmUZUmVZVddlWmXZXmYZYmZZZm[Z[ddl\m]Z]m^Z^ed«Z_e`dd«ZadZbGd„d«Zcec«ZdGd„d«ZeGd „d!e«Zfe#eejΫGd"„d#ef««Zhe#eejÒ«Gd$„d%ef««ZjGd&„d'e«Zke#eejØ«Gd(„d)ek««Zme#eejÜ«Gd*„d+ek««Zod6d,„Zpd7d-„Zqd8d.„Zrd/„Zsd0„Ztd1„Zud9d2„Zvd9d3„Zwd:d4„Zxd;d5„Zyy)<é)Ú annotations)ÚsuppressN)Ú TYPE_CHECKINGÚAnyÚTypeVarÚcastÚfinal)Úusing_copy_on_writeÚwarn_copy_on_write)ÚNDFrameIndexerBase)Úitem_from_zerodim)ÚPYPY)ÚWARNING_CHECK_DISABLED)ÚAbstractMethodErrorÚChainedAssignmentErrorÚ IndexingErrorÚInvalidIndexErrorÚLossySetitemErrorÚ_chained_assignment_msgÚ_chained_assignment_warning_msgÚ _check_cacher)Údoc)Úfind_stack_level)Úcan_hold_elementÚ maybe_promote)
Ú is_array_likeÚ is_bool_dtypeÚ is_hashableÚ
is_integerÚ is_iteratorÚ is_list_likeÚis_numeric_dtypeÚis_object_dtypeÚ    is_scalarÚ is_sequence)Ú concat_compat)ÚExtensionDtype)Ú ABCDataFrameÚ    ABCSeries)Ú+construct_1d_array_from_inferred_fill_valueÚinfer_fill_valueÚis_valid_na_for_dtypeÚisnaÚna_value_for_dtype)Ú
algorithms)ÚarrayÚ extract_array)Úcheck_array_indexerÚis_list_like_indexerÚis_scalar_indexerÚlength_of_indexer)ÚIndexÚ
MultiIndex)ÚHashableÚSequence)ÚAxisÚAxisIntÚSelfÚnpt)Ú    DataFrameÚSeriesÚTz(indexer may only contain one '...' entrycó—eZdZdZd„Zy)Ú _IndexSlicea
    Create an object to more easily perform multi-index slicing.
 
    See Also
    --------
    MultiIndex.remove_unused_levels : New MultiIndex with no unused levels.
 
    Notes
    -----
    See :ref:`Defined Levels <advanced.shown_levels>`
    for further info on slicing a MultiIndex.
 
    Examples
    --------
    >>> midx = pd.MultiIndex.from_product([['A0','A1'], ['B0','B1','B2','B3']])
    >>> columns = ['foo', 'bar']
    >>> dfmi = pd.DataFrame(np.arange(16).reshape((len(midx), len(columns))),
    ...                     index=midx, columns=columns)
 
    Using the default slice command:
 
    >>> dfmi.loc[(slice(None), slice('B0', 'B1')), :]
               foo  bar
        A0 B0    0    1
           B1    2    3
        A1 B0    8    9
           B1   10   11
 
    Using the IndexSlice class for a more intuitive command:
 
    >>> idx = pd.IndexSlice
    >>> dfmi.loc[idx[:, 'B0':'B1'], :]
               foo  bar
        A0 B0    0    1
           B1    2    3
        A1 B0    8    9
           B1   10   11
    có—|S©N©)ÚselfÚargs  úGH:\Change_password\venv_build\Lib\site-packages\pandas/core/indexing.pyÚ __getitem__z_IndexSlice.__getitem__–s€Øˆ
óN)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rIrErJrHrBrBns „ñ%óNrJrBcóX—eZdZdZedd„«Zedd„«Zed    d„«Zed
d„«Zy) Ú IndexingMixinzH
    Mixin for adding .loc/.iloc/.at/.iat to Dataframes and Series.
    có—td|«S)a>
        Purely integer-location based indexing for selection by position.
 
        .. deprecated:: 2.2.0
 
           Returning a tuple from a callable is deprecated.
 
        ``.iloc[]`` is primarily integer position based (from ``0`` to
        ``length-1`` of the axis), but may also be used with a boolean
        array.
 
        Allowed inputs are:
 
        - An integer, e.g. ``5``.
        - A list or array of integers, e.g. ``[4, 3, 0]``.
        - A slice object with ints, e.g. ``1:7``.
        - A boolean array.
        - A ``callable`` function with one argument (the calling Series or
          DataFrame) and that returns valid output for indexing (one of the above).
          This is useful in method chains, when you don't have a reference to the
          calling object, but would like to base your selection on
          some value.
        - A tuple of row and column indexes. The tuple elements consist of one of the
          above inputs, e.g. ``(0, 1)``.
 
        ``.iloc`` will raise ``IndexError`` if a requested indexer is
        out-of-bounds, except *slice* indexers which allow out-of-bounds
        indexing (this conforms with python/numpy *slice* semantics).
 
        See more at :ref:`Selection by Position <indexing.integer>`.
 
        See Also
        --------
        DataFrame.iat : Fast integer location scalar accessor.
        DataFrame.loc : Purely label-location based indexer for selection by label.
        Series.iloc : Purely integer-location based indexing for
                       selection by position.
 
        Examples
        --------
        >>> mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
        ...           {'a': 100, 'b': 200, 'c': 300, 'd': 400},
        ...           {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000}]
        >>> df = pd.DataFrame(mydict)
        >>> df
              a     b     c     d
        0     1     2     3     4
        1   100   200   300   400
        2  1000  2000  3000  4000
 
        **Indexing just the rows**
 
        With a scalar integer.
 
        >>> type(df.iloc[0])
        <class 'pandas.core.series.Series'>
        >>> df.iloc[0]
        a    1
        b    2
        c    3
        d    4
        Name: 0, dtype: int64
 
        With a list of integers.
 
        >>> df.iloc[[0]]
           a  b  c  d
        0  1  2  3  4
        >>> type(df.iloc[[0]])
        <class 'pandas.core.frame.DataFrame'>
 
        >>> df.iloc[[0, 1]]
             a    b    c    d
        0    1    2    3    4
        1  100  200  300  400
 
        With a `slice` object.
 
        >>> df.iloc[:3]
              a     b     c     d
        0     1     2     3     4
        1   100   200   300   400
        2  1000  2000  3000  4000
 
        With a boolean mask the same length as the index.
 
        >>> df.iloc[[True, False, True]]
              a     b     c     d
        0     1     2     3     4
        2  1000  2000  3000  4000
 
        With a callable, useful in method chains. The `x` passed
        to the ``lambda`` is the DataFrame being sliced. This selects
        the rows whose index label even.
 
        >>> df.iloc[lambda x: x.index % 2 == 0]
              a     b     c     d
        0     1     2     3     4
        2  1000  2000  3000  4000
 
        **Indexing both axes**
 
        You can mix the indexer types for the index and columns. Use ``:`` to
        select the entire axis.
 
        With scalar integers.
 
        >>> df.iloc[0, 1]
        2
 
        With lists of integers.
 
        >>> df.iloc[[0, 2], [1, 3]]
              b     d
        0     2     4
        2  2000  4000
 
        With `slice` objects.
 
        >>> df.iloc[1:3, 0:3]
              a     b     c
        1   100   200   300
        2  1000  2000  3000
 
        With a boolean array whose length matches the columns.
 
        >>> df.iloc[:, [True, False, True, False]]
              a     c
        0     1     3
        1   100   300
        2  1000  3000
 
        With a callable function that expects the Series or DataFrame.
 
        >>> df.iloc[:, lambda df: [0, 2]]
              a     c
        0     1     3
        1   100   300
        2  1000  3000
        Úiloc)Ú _iLocIndexer©rFs rHrRzIndexingMixin.iloc¢s€ô\˜F DÓ)Ð)rJcó—td|«S)aÝ'
        Access a group of rows and columns by label(s) or a boolean array.
 
        ``.loc[]`` is primarily label based, but may also be used with a
        boolean array.
 
        Allowed inputs are:
 
        - A single label, e.g. ``5`` or ``'a'``, (note that ``5`` is
          interpreted as a *label* of the index, and **never** as an
          integer position along the index).
        - A list or array of labels, e.g. ``['a', 'b', 'c']``.
        - A slice object with labels, e.g. ``'a':'f'``.
 
          .. warning:: Note that contrary to usual python slices, **both** the
              start and the stop are included
 
        - A boolean array of the same length as the axis being sliced,
          e.g. ``[True, False, True]``.
        - An alignable boolean Series. The index of the key will be aligned before
          masking.
        - An alignable Index. The Index of the returned selection will be the input.
        - A ``callable`` function with one argument (the calling Series or
          DataFrame) and that returns valid output for indexing (one of the above)
 
        See more at :ref:`Selection by Label <indexing.label>`.
 
        Raises
        ------
        KeyError
            If any items are not found.
        IndexingError
            If an indexed key is passed and its index is unalignable to the frame index.
 
        See Also
        --------
        DataFrame.at : Access a single value for a row/column label pair.
        DataFrame.iloc : Access group of rows and columns by integer position(s).
        DataFrame.xs : Returns a cross-section (row(s) or column(s)) from the
                       Series/DataFrame.
        Series.loc : Access group of values using labels.
 
        Examples
        --------
        **Getting values**
 
        >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
        ...                   index=['cobra', 'viper', 'sidewinder'],
        ...                   columns=['max_speed', 'shield'])
        >>> df
                    max_speed  shield
        cobra               1       2
        viper               4       5
        sidewinder          7       8
 
        Single label. Note this returns the row as a Series.
 
        >>> df.loc['viper']
        max_speed    4
        shield       5
        Name: viper, dtype: int64
 
        List of labels. Note using ``[[]]`` returns a DataFrame.
 
        >>> df.loc[['viper', 'sidewinder']]
                    max_speed  shield
        viper               4       5
        sidewinder          7       8
 
        Single label for row and column
 
        >>> df.loc['cobra', 'shield']
        2
 
        Slice with labels for row and single label for column. As mentioned
        above, note that both the start and stop of the slice are included.
 
        >>> df.loc['cobra':'viper', 'max_speed']
        cobra    1
        viper    4
        Name: max_speed, dtype: int64
 
        Boolean list with the same length as the row axis
 
        >>> df.loc[[False, False, True]]
                    max_speed  shield
        sidewinder          7       8
 
        Alignable boolean Series:
 
        >>> df.loc[pd.Series([False, True, False],
        ...                  index=['viper', 'sidewinder', 'cobra'])]
                             max_speed  shield
        sidewinder          7       8
 
        Index (same behavior as ``df.reindex``)
 
        >>> df.loc[pd.Index(["cobra", "viper"], name="foo")]
               max_speed  shield
        foo
        cobra          1       2
        viper          4       5
 
        Conditional that returns a boolean Series
 
        >>> df.loc[df['shield'] > 6]
                    max_speed  shield
        sidewinder          7       8
 
        Conditional that returns a boolean Series with column labels specified
 
        >>> df.loc[df['shield'] > 6, ['max_speed']]
                    max_speed
        sidewinder          7
 
        Multiple conditional using ``&`` that returns a boolean Series
 
        >>> df.loc[(df['max_speed'] > 1) & (df['shield'] < 8)]
                    max_speed  shield
        viper          4       5
 
        Multiple conditional using ``|`` that returns a boolean Series
 
        >>> df.loc[(df['max_speed'] > 4) | (df['shield'] < 5)]
                    max_speed  shield
        cobra               1       2
        sidewinder          7       8
 
        Please ensure that each condition is wrapped in parentheses ``()``.
        See the :ref:`user guide<indexing.boolean>`
        for more details and explanations of Boolean indexing.
 
        .. note::
            If you find yourself using 3 or more conditionals in ``.loc[]``,
            consider using :ref:`advanced indexing<advanced.advanced_hierarchical>`.
 
            See below for using ``.loc[]`` on MultiIndex DataFrames.
 
        Callable that returns a boolean Series
 
        >>> df.loc[lambda df: df['shield'] == 8]
                    max_speed  shield
        sidewinder          7       8
 
        **Setting values**
 
        Set value for all items matching the list of labels
 
        >>> df.loc[['viper', 'sidewinder'], ['shield']] = 50
        >>> df
                    max_speed  shield
        cobra               1       2
        viper               4      50
        sidewinder          7      50
 
        Set value for an entire row
 
        >>> df.loc['cobra'] = 10
        >>> df
                    max_speed  shield
        cobra              10      10
        viper               4      50
        sidewinder          7      50
 
        Set value for an entire column
 
        >>> df.loc[:, 'max_speed'] = 30
        >>> df
                    max_speed  shield
        cobra              30      10
        viper              30      50
        sidewinder         30      50
 
        Set value for rows matching callable condition
 
        >>> df.loc[df['shield'] > 35] = 0
        >>> df
                    max_speed  shield
        cobra              30      10
        viper               0       0
        sidewinder          0       0
 
        Add value matching location
 
        >>> df.loc["viper", "shield"] += 5
        >>> df
                    max_speed  shield
        cobra              30      10
        viper               0       5
        sidewinder          0       0
 
        Setting using a ``Series`` or a ``DataFrame`` sets the values matching the
        index labels, not the index positions.
 
        >>> shuffled_df = df.loc[["viper", "cobra", "sidewinder"]]
        >>> df.loc[:] += shuffled_df
        >>> df
                    max_speed  shield
        cobra              60      20
        viper               0      10
        sidewinder          0       0
 
        **Getting values on a DataFrame with an index that has integer labels**
 
        Another example using integers for the index
 
        >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
        ...                   index=[7, 8, 9], columns=['max_speed', 'shield'])
        >>> df
           max_speed  shield
        7          1       2
        8          4       5
        9          7       8
 
        Slice with integer labels for rows. As mentioned above, note that both
        the start and stop of the slice are included.
 
        >>> df.loc[7:9]
           max_speed  shield
        7          1       2
        8          4       5
        9          7       8
 
        **Getting values with a MultiIndex**
 
        A number of examples using a DataFrame with a MultiIndex
 
        >>> tuples = [
        ...     ('cobra', 'mark i'), ('cobra', 'mark ii'),
        ...     ('sidewinder', 'mark i'), ('sidewinder', 'mark ii'),
        ...     ('viper', 'mark ii'), ('viper', 'mark iii')
        ... ]
        >>> index = pd.MultiIndex.from_tuples(tuples)
        >>> values = [[12, 2], [0, 4], [10, 20],
        ...           [1, 4], [7, 1], [16, 36]]
        >>> df = pd.DataFrame(values, columns=['max_speed', 'shield'], index=index)
        >>> df
                             max_speed  shield
        cobra      mark i           12       2
                   mark ii           0       4
        sidewinder mark i           10      20
                   mark ii           1       4
        viper      mark ii           7       1
                   mark iii         16      36
 
        Single label. Note this returns a DataFrame with a single index.
 
        >>> df.loc['cobra']
                 max_speed  shield
        mark i          12       2
        mark ii          0       4
 
        Single index tuple. Note this returns a Series.
 
        >>> df.loc[('cobra', 'mark ii')]
        max_speed    0
        shield       4
        Name: (cobra, mark ii), dtype: int64
 
        Single label for row and column. Similar to passing in a tuple, this
        returns a Series.
 
        >>> df.loc['cobra', 'mark i']
        max_speed    12
        shield        2
        Name: (cobra, mark i), dtype: int64
 
        Single tuple. Note using ``[[]]`` returns a DataFrame.
 
        >>> df.loc[[('cobra', 'mark ii')]]
                       max_speed  shield
        cobra mark ii          0       4
 
        Single tuple for the index with a single label for the column
 
        >>> df.loc[('cobra', 'mark i'), 'shield']
        2
 
        Slice from index tuple to single label
 
        >>> df.loc[('cobra', 'mark i'):'viper']
                             max_speed  shield
        cobra      mark i           12       2
                   mark ii           0       4
        sidewinder mark i           10      20
                   mark ii           1       4
        viper      mark ii           7       1
                   mark iii         16      36
 
        Slice from index tuple to index tuple
 
        >>> df.loc[('cobra', 'mark i'):('viper', 'mark ii')]
                            max_speed  shield
        cobra      mark i          12       2
                   mark ii          0       4
        sidewinder mark i          10      20
                   mark ii          1       4
        viper      mark ii          7       1
 
        Please see the :ref:`user guide<advanced.advanced_hierarchical>`
        for more details and explanations of advanced indexing.
        Úloc)Ú _LocIndexerrTs rHrVzIndexingMixin.loc2s€ô`    ˜5 $Ó'Ð'rJcó—td|«S)aq
        Access a single value for a row/column label pair.
 
        Similar to ``loc``, in that both provide label-based lookups. Use
        ``at`` if you only need to get or set a single value in a DataFrame
        or Series.
 
        Raises
        ------
        KeyError
            If getting a value and 'label' does not exist in a DataFrame or Series.
 
        ValueError
            If row/column label pair is not a tuple or if any label
            from the pair is not a scalar for DataFrame.
            If label is list-like (*excluding* NamedTuple) for Series.
 
        See Also
        --------
        DataFrame.at : Access a single value for a row/column pair by label.
        DataFrame.iat : Access a single value for a row/column pair by integer
            position.
        DataFrame.loc : Access a group of rows and columns by label(s).
        DataFrame.iloc : Access a group of rows and columns by integer
            position(s).
        Series.at : Access a single value by label.
        Series.iat : Access a single value by integer position.
        Series.loc : Access a group of rows by label(s).
        Series.iloc : Access a group of rows by integer position(s).
 
        Notes
        -----
        See :ref:`Fast scalar value getting and setting <indexing.basics.get_value>`
        for more details.
 
        Examples
        --------
        >>> df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]],
        ...                   index=[4, 5, 6], columns=['A', 'B', 'C'])
        >>> df
            A   B   C
        4   0   2   3
        5   0   4   1
        6  10  20  30
 
        Get value at specified row/column pair
 
        >>> df.at[4, 'B']
        2
 
        Set value at specified row/column pair
 
        >>> df.at[4, 'B'] = 10
        >>> df.at[4, 'B']
        10
 
        Get value within a Series
 
        >>> df.loc[5].at['B']
        4
        Úat)Ú
_AtIndexerrTs rHrYzIndexingMixin.atds€ô~˜$ Ó%Ð%rJcó—td|«S)a†
        Access a single value for a row/column pair by integer position.
 
        Similar to ``iloc``, in that both provide integer-based lookups. Use
        ``iat`` if you only need to get or set a single value in a DataFrame
        or Series.
 
        Raises
        ------
        IndexError
            When integer position is out of bounds.
 
        See Also
        --------
        DataFrame.at : Access a single value for a row/column label pair.
        DataFrame.loc : Access a group of rows and columns by label(s).
        DataFrame.iloc : Access a group of rows and columns by integer position(s).
 
        Examples
        --------
        >>> df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]],
        ...                   columns=['A', 'B', 'C'])
        >>> df
            A   B   C
        0   0   2   3
        1   0   4   1
        2  10  20  30
 
        Get value at specified row/column pair
 
        >>> df.iat[1, 2]
        1
 
        Set value at specified row/column pair
 
        >>> df.iat[1, 2] = 10
        >>> df.iat[1, 2]
        10
 
        Get value within a series
 
        >>> df.loc[0].iat[1]
        2
        Úiat)Ú _iAtIndexerrTs rHr\zIndexingMixin.iat¥s€ô\˜5 $Ó'Ð'rJN)ÚreturnrS)r^rW)r^rZ)r^r])    rKrLrMrNÚpropertyrRrVrYr\rErJrHrPrPs^„ñðòM*óðM*ð^òo(óðo(ðb    ò>&óð>&ð@ò-(óñ-(rJrPcój—eZdZUded<dZded<ded<eddd„«Zd    „Zed
„«Zed d!d „«Z    ed!d „«Z
d"d „Z ed#d„«Z ed$d„«Z ed%d„«Zed$d„«Zed$d„«Zed&d„«Zed&d„«Zed&d„«Zd"d„Zd'd„Zed„«Zd(d„Zd&d„Zd"d„Zd)d„Zed"d„«Zy)*Ú_LocationIndexerÚstrÚ _valid_typesNzAxisInt | NoneÚaxisÚboolÚ    _takeablecó —t|«|j|j«}||jj|«}n|}||_|SrD)ÚtypeÚnameÚobjÚ_get_axis_numberrd)rFrdÚnew_selfÚ axis_int_nones    rHÚ__call__z_LocationIndexer.__call__ÝsI€ð”4˜“:˜dŸi™i¨¯©Ó2ˆà Ð Ø ŸH™H×5Ñ5°dÓ;‰Mà ˆMØ%ˆŒ ؈rJcóè—|jdk(r|j|«t|t«r|D] }t    |«Œ|j
!t |j|j
|«}|jjd«}t|t«rY|jdk7rJt|«r?t|t«s/ttt«5|j!|«cddd«St|t«r*tt"«5|j%|«cddd«St|t&«r t)|«}|j+|d¬«S#1swYŒqxYw#1swYŒCxYw)zR
        Convert a potentially-label-based key into a positional indexer.
        rVNrrR©rd)riÚ_ensure_listlike_indexerÚ
isinstanceÚtupleÚcheck_dict_or_set_indexersrdÚ_tupleize_axis_indexerÚndimrjÚ    _get_axisr7rÚslicerÚKeyErrorrÚget_locrÚ_convert_tupleÚrangeÚlistÚ_convert_to_indexer)rFÚkeyÚxÚaxs    rHÚ_get_setitem_indexerz%_LocationIndexer._get_setitem_indexerés6€ð 9‰9˜Ò à × )Ñ )¨#Ô .ä cœ5Ô !Øò .Ü*¨1Õ-ð .ð 9‰9Ð  Ü(¨¯©°D·I±I¸sÓCˆCà X‰X× Ñ  Ó "ˆô rœ:Ô &Ø—    ‘    ˜VÒ#ܘCԠܘs¤EÔ*äœ(Ô$5Ó6ñ 'à—z‘z #“÷ 'ñ 'ô cœ5Ô !Üœ-Ó(ñ 0à×*Ñ*¨3Ó/÷ 0ñ 0ô cœ5Ô !äs“)ˆCà×'Ñ'¨°!Ð'Ó4Ð4÷ 'ð 'ú÷
 0ð 0úsÃEÄE(ÅE%Å(E1cóv—t|t«r}t|«dk(rnt|ttf«rW|\}}|j
}t j|«r,t|«t|«k(r|j«d}t||j
dz
«r3|dk(r.|jjj||«}||f}||fSt|tj«r›|jj dk(r‚t|«dk(rt|dk(r.|jjj||«}||f}||fS|dk(r<|j"ddk(r*|jjj%||«}||f}||fSt j|«r|j«d}||fS)a
        If we have obj.iloc[mask] = series_or_frame and series_or_frame has the
        same length as obj, we treat this as obj.iloc[mask] = series_or_frame[mask],
        similar to Series.__setitem__.
 
        Note this is only for loc, not iloc.
        éréÚi)rrrsÚlenr)r(rvÚcomÚis_bool_indexerÚnonzeror4rjrRÚ _align_seriesÚnpÚndarrayÚdtypeÚkindÚshapeÚ _align_frame)rFÚindexerÚvalueÚpiÚicolsrvÚnewkeys       rHÚ_maybe_mask_setitem_valuez*_LocationIndexer._maybe_mask_setitem_values‡€ô w¤Õ &ܐG“  Ó!ܘ5¤9¬lÐ";Õ<à‰IˆBØ—:‘:ˆDÜ×"Ñ" 2Õ&¬3¨u«:¼¸R»Ó+@ØŸ™› a™ä$ U¨D¯I©I¸©MÔ:¸tÀqºyð!ŸH™HŸM™M×7Ñ7¸ÀÓGEØ% u˜oGð*˜ˆ~Ðô%˜u¤b§j¡jÔ1ØŸ ™ ×(Ñ(¨CÒ/ܘE›
 ašà˜q’yð!%§¡§ ¡ × ;Ñ ;¸GÀUÓ K˜Ø#)¨5 /˜ð˜ˆ~Ðð š u§{¡{°1¡~¸Ò':à $§¡§ ¡ × :Ñ :¸7ÀEÓ J˜Ø#)¨5 /˜ð˜ˆ~Ðô×  Ñ   Ô )Ø—o‘oÓ'¨Ñ*ˆGà˜ˆ~ÐrJcó†—d}|jdk7ryt|t«rt|«dkDr||}|}||k(r„t|jj
t «s^t|«rQtj|«s:td„|D««r&|jj
j|d¬«}t|«j|jj
d¬«}t|«rŒtjt|«tj ¬«}d|t|jj
«d|jj"j%||d    d
d
¬ «}||j_y|jj"j'|d    d
¬ «|j_yyyyyy) a 
        Ensure that a list-like of column labels are all present by adding them if
        they do not already exist.
 
        Parameters
        ----------
        key : list-like of column labels
            Target labels.
        axis : key axis if known
        r…r„Nc3ó2K—|]}t|«–—Œy­wrD)r©Ú.0Úks  rHú    <genexpr>z<_LocationIndexer._ensure_listlike_indexer.<locals>.<genexpr>[sèø€Ò0 q”K —NÑ0ùó‚F)Úsort©rŽéÿÿÿÿrT)r’rdÚ
only_sliceÚ use_na_proxy)rdr¢)rvrrrsr‡rjÚcolumnsr7r3rˆr‰ÚallÚunionr6Ú
differencerŒÚarangeÚintpÚ_mgrÚreindex_indexerÚ reindex_axis)    rFrrdr“Ú column_axisÚkeysÚdiffr’Únew_mgrs             rHrqz)_LocationIndexer._ensure_listlike_indexer>sy€ðˆ ð 9‰9˜Š>Ø ä cœ5Ô !¤c¨#£h°¢lðkÑ"ˆC؈Dð KÓ Ü˜tŸx™x×/Ñ/´Õ<Ü$ SÕ)Ü×'Ñ'¨Õ,ÜÑ0¨CÔ0Õ0ð—8‘8×#Ñ#×)Ñ)¨#°EÐ)Ó:ˆDܘ“:×(Ñ(¨¯©×)9Ñ)9ÀÐ(ÓFˆDä4ŒyôŸ)™)¤C¨£I´R·W±WÔ=Ø35œ˜DŸH™H×,Ñ,Ó-Ð/Ð0ØŸ(™(Ÿ-™-×7Ñ7Ø '°¸dÐQUð8óð!(—‘” Øà ŸH™HŸM™M×6Ñ6°tÀ!ÐPTÐ6ÓUˆDH‰HMð-1ð-ð*ð=ð  rJcól‡—tsStsMt«rCtj‰j
«dkr¡t jttd¬«n€tsztstt«sjtj‰j
«}d}t«st‰j
«r|dz }||kr t jttd¬«t|«t|t «r't!d„|D««}t!ˆfd„|D««}n2t#j$|‰j
«}‰j'||«}‰j)|«}‰j+|«‰j,dk(r‰n‰j
j.}|j1||‰j,«y)Nr„©Ú
stacklevelr…c3óLK—|]}t|«r t|«n|–—Œy­wrD©r r}©r›r€s  rHrz/_LocationIndexer.__setitem__.<locals>.<genexpr>‡óèø€ÒF¸Q¤;¨q¤>œ˜Qœ°qÓ8ÑFùó‚"$c3ó^•K—|]$}tj|‰j«–—Œ&y­wrD©rˆÚapply_if_callablerj©r›r€rFs  €rHrz/_LocationIndexer.__setitem__.<locals>.<genexpr>ˆó"øèø€ÒH¸qœ×-Ñ-¨a°·±×:ÑHùóƒ*-rR)rrr
ÚsysÚ getrefcountrjÚwarningsÚwarnrrr rrÚ FutureWarningrtrrrsrˆr»Ú _check_deprecated_callable_usager‚Ú_has_valid_setitem_indexerrirRÚ_setitem_with_indexer)rFrr“ÚctrÚ    ref_countÚmaybe_callabler’rRs`       rHÚ __setitem__z_LocationIndexer.__setitem__ss=ø€åÕ2Ô7JÔ7L܏‰˜tŸx™xÓ(¨AÒ-Ü— ‘ Ü+Ô-CÐPQöõÕ4Ô=PÔ=RÜ—/‘/ $§(¡(Ó+ˆC؈IÜ%Ô'¬M¸$¿(¹(Ô,Cà˜Q‘    ØiÒÜ— ‘ Ü3´]Èqõô    # 3Ô'Ü cœ5Ô !ÜÑFÀ#ÔFÓFˆCÜÓHÀCÔHÓH‰Cä ×2Ñ2°3¸¿¹ÓAˆNØ×7Ñ7¸¸^ÓLˆCØ×+Ñ+¨CÓ0ˆØ ×'Ñ'¨Ô,à—y‘y FÒ*‰t°·±· ± ˆØ ×"Ñ" 7¨E°4·9±9Õ=rJcó—t|«‚)aó
        Ensure that key is valid for current indexer.
 
        Parameters
        ----------
        key : scalar, slice or list-like
            Key requested.
        axis : int
            Dimension on which the indexing is being made.
 
        Raises
        ------
        TypeError
            If the key (or some element of it) has wrong type.
        IndexError
            If the key (or some element of it) is out of bounds.
        KeyError
            If the key was not found.
        ©r©rFrrds   rHÚ _validate_keyz_LocationIndexer._validate_key’s€ô(" $Ó'Ð'rJcó—td„|D««rl|jt«dkDrtt«‚t |«|j k(r-|jt«}|d|tfz||dzdz}|S|S)zt
        If a tuple key includes an Ellipsis, replace it with an appropriate
        number of null slices.
        c3ó,K—|] }|tu–—Œy­wrD)ÚEllipsisr¶s  rHrz4_LocationIndexer._expand_ellipsis.<locals>.<genexpr>®sèø€Ò* ˆq”HŒ}Ñ*ùs‚r…N)    ÚanyÚcountrÑrÚ_one_ellipsis_messager‡rvÚindexÚ_NS)rFÚtupr†Únew_keys    rHÚ_expand_ellipsisz!_LocationIndexer._expand_ellipsis¨s|€ô Ñ* cÔ*Ô *؏y‰yœÓ" QÒ&Ü#Ô$9Ó:Ð:ä3‹x˜4Ÿ9™9Ò$ð—I‘IœhÓ'à˜b˜q˜'¤S FÑ*¨S°°Q±°¨\Ñ9Øðˆ
rJcóì—|j|«}|j|«}t|«D]\}}    |j||«Œ|S#t$r}t    d|j
›d«|‚d}~wwxYw)zA
        Check the key for valid keys across my indexer.
        z'Location based indexing can only have [z] typesN)Ú_validate_key_lengthrÙÚ    enumeraterÎÚ
ValueErrorrc)rFrr†rœÚerrs     rHÚ_validate_tuple_indexerz(_LocationIndexer._validate_tuple_indexer¾s“€ð
×'Ñ'¨Ó,ˆØ×#Ñ# CÓ(ˆÜ˜c“Nò    ‰DˆAˆqð Ø×"Ñ" 1 aÕ(ð    ðˆ
øô ò Ü ðØ×)Ñ)Ð*¨'ð3óððûð úsµA Á     A3ÁA.Á.A3c󢇗td„|jjD««r(tˆfd„|jjD««Sy)ú6
        Returns
        -------
        bool
        c3ó<K—|]}t|t«–—Œy­wrD)rrr7)r›rs  rHrz<_LocationIndexer._is_nested_tuple_indexer.<locals>.<genexpr>Ösèø€ÒB¨bŒz˜"œj×)ÑBùó‚c3ó6•K—|]}t‰|«–—Œy­wrD)Úis_nested_tuple)r›rr×s  €rHrz<_LocationIndexer._is_nested_tuple_indexer.<locals>.<genexpr>×søèø€ÒH°B” s¨B×/ÑHùóƒF)rÒrjÚaxes©rFr×s `rHÚ_is_nested_tuple_indexerz)_LocationIndexer._is_nested_tuple_indexerÏs7ø€ô ÑB°D·H±H·M±MÔBÔ BÜÓH¸$¿(¹(¿-¹-ÔHÓHÐ HØrJcó¢—|j|«t|«Dcgc]\}}|j||¬«‘Œ}}}t|«Scc}}w©Nrp)rÛrÜr~rs)rFrr†rœÚkeyidxs     rHr{z_LocationIndexer._convert_tupleÚsM€ð     ×!Ñ! #Ô&ÜBKÈCÃ.×Q¹$¸!¸Q$×*Ñ*¨1°1Ð*Õ5ÐQˆÑQܐV‹}ÐùóRs A có¼—t|«|jkDrC|dtur-|dd}t|vrtt«‚|j |«Std«‚|S)Nrr…úToo many indexers)r‡rvrÑrrÔrÛ©rFrs  rHrÛz%_LocationIndexer._validate_key_lengthás^€ä ˆs‹8d—i‘iÒ Ø1‰vœÑ!à˜!˜"gÜ˜s‘?Ü'Ô(=Ó>Ð>Ø×0Ñ0°Ó5Ð5ÜР3Ó4Ð 4؈
rJcó —|j}|jt|«z
dz}tt    |««D]o\}}|j|z
|z
}t j |«rŒ.t||j«j||¬«}|j|jk(rŒoJ‚||jur|jd¬«}|S)z´
        Index with indexers that should return an object of the same dimension
        as self.obj.
 
        This is only called after a failed call to _getitem_lowerdim.
        r…rpF©Údeep) rjrvr‡rÜÚreversedrˆÚ is_null_sliceÚgetattrriÚ _getitem_axisÚcopy)rFr×ÚretvalÚ    start_valr†rs      rHÚ_getitem_tuple_same_dimz(_LocationIndexer._getitem_tuple_same_dimísÀ€ð—‘ˆà—Y‘Y¤ S£Ñ)¨QÑ.ˆ    Ü¤¨£ Ó.ò    ,‰FˆAˆsØ—    ‘    ˜A‘      Ñ)ˆAÜ× Ñ  Ô%Øä˜V T§Y¡YÓ/×=Ñ=¸cÈÐ=ÓJˆFð—;‘; $§)¡)Ó+Ð +Ð+ð    ,ð T—X‘XÑ ð—[‘[ e[Ó,ˆFàˆ rJcó’—|j8|jj|j«}|j||¬«S|j    |«r|j |«S|jj d«}t|t«rY|jdk7rJtd„|D««s8tt«5tt|«j|«cddd«S|j!|«}t#|«D]¨\}}t%|«sŒ|j||¬«}|j&|j&k(r|d|t(fz||dzdz}n!|d|||dzdz}t+|«dk(r|d}t-j.|«r|cSt1||j«|cStd«‚#1swYŒÛxYw)NrprrRc3ó<K—|]}t|t«–—Œy­wrD©rrrxr¶s  rHrz5_LocationIndexer._getitem_lowerdim.<locals>.<genexpr>sèø€Ò:°œ
 1¤e×,Ñ:ùrãr…znot applicable)rdrjrkröréÚ_getitem_nested_tuplerwrrr7rirÒrrrrWÚ"_handle_lowerdim_multi_index_axis0rÛrÜÚ is_label_likervrÖr‡rˆrôrõ)rFr×rdÚax0r†rÚsectionrØs        rHÚ_getitem_lowerdimz"_LocationIndexer._getitem_lowerdim    sÀ€ð 9‰9Ð  Ø—8‘8×,Ñ,¨T¯Y©YÓ7ˆDØ×%Ñ% c°Ð%Ó5Ð 5ð × (Ñ (¨Ô -Ø×-Ñ-¨cÓ2Ð 2ðh‰h× Ñ  Ó#ˆô sœJÔ 'Ø—    ‘    ˜VÒ#ÜÑ:°cÔ:Ô:ô œ-Ó(ñ WÜœK¨Ó.×QÑQÐRUÓV÷ Wñ Wð×'Ñ'¨Ó,ˆä “nò    <‰FˆAˆsܘSÕ!ð×,Ñ,¨S°qÐ,Ó9ð
—<‘< 4§9¡9Ò,ð" " 1˜g¬¨Ñ.°°Q¸±U°W°Ñ=‘Gð " " 1˜g¨¨A°©E¨G¨ Ñ4Gä˜7“| qÒ(Ø")¨!¡*˜ô×$Ñ$ WÔ-Ø"’Nä˜w¨¯    ©    Ó2°7Ñ;Ò;ð9    <ô<Ð,Ó-Ð-÷G Wð Wús ÃF=Æ=Gcó ‡—d d„Š|D] }t|«Œt|«|jkDrÀ|jdk7r t    d«‚t ˆfd„|D««r8t t«5tt|«j|«cddd«St|jt«rtd„|D««r td«‚|jxsd}|j!||¬«S|j}t|«d    z
}|ddd
…D]c}t#j$|«r|d    z}Œt'||j«j!||¬«}|d    z}t)|«s t+|d «rŒb|S|S#1swYŒ¶xYw) Ncój—t|t«rtd„|D««St|t«ryy)Nc3ó<K—|]}t|t«–—Œy­wrDrý©r›Úvs  rHrzR_LocationIndexer._getitem_nested_tuple.<locals>._contains_slice.<locals>.<genexpr>Nsèø€Ò;°Aœ: a¬×/Ñ;ùrãTF)rrrsrÒrx)r€s rHÚ_contains_slicez?_LocationIndexer._getitem_nested_tuple.<locals>._contains_sliceKs-€ä˜!œUÔ#ÜÑ;¸Ô;Ó;Ð;ܘAœuÔ%ØØrJrVzToo many indicesc3óx•K—|]1}t|«xr    ‰|« xstj|«–—Œ3y­wrD)rrˆrô)r›r€r    s  €rHrz9_LocationIndexer._getitem_nested_tuple.<locals>.<genexpr>]s>øèø€òàô˜Q“Ò:©¸Ó(:Ð$:ÒS¼s×?PÑ?PÐQRÓ?SÓSñùsƒ7:c3ó<K—|]}t|t«–—Œy­wrD©rrrsršs  rHrz9_LocationIndexer._getitem_nested_tuple.<locals>.<genexpr>hsèø€ò9Ø)*”
˜1œe×$ñ9ùrãrîrrpr…r¡rv)r€Úobjectr^re)rtr‡rvrirÝr¥rrrrWrÿrrrjr)rÒrdrörˆrôrõr$Úhasattr)rFr×rrdrjr    s     @rHrþz&_LocationIndexer._getitem_nested_tupleFs‰ø€ó
    ðò    ,ˆCÜ & sÕ +ð    ,ô ˆs‹8d—i‘iÒ Øy‰y˜EÒ!ä Ð!3Ó4Ð4ÜóàôôôœmÓ,ñܤ ¨TÓ2×UÑUØó÷ñô˜DŸH™H¤iÔ0´Sñ9Ø.1ô9ô6ô$Ð$7Ó8Ð8ð—9‘9’> ˆDØ×%Ñ% c°Ð%Ó5Ð 5ðh‰hˆô3‹x˜!‰|ˆØ‘t˜t‘9ò
    ˆCÜ× Ñ  Ô%ؘ‘    Øä˜#˜tŸy™yÓ)×7Ñ7¸À$Ð7ÓGˆCØ A‰IˆDô˜Œ~¤W¨S°&Õ%9Øàˆ
ð
    ðˆ
÷Kðús Á-E:Å:Fcó—t|«‚rDrÌrÍs   rHr~z$_LocationIndexer._convert_to_indexer‹ó €Ü! $Ó'Ð'rJcó¢—|jdk(r?t|«r4t|t«r$t    j
dt t«¬«|S)NrRzaReturning a tuple from a callable with iloc is deprecated and will be removed in a future versionr²)riÚcallablerrrsrÁrÂrÃr)rFrrÉs   rHrÄz1_LocationIndexer._check_deprecated_callable_usageŽsA€à 9‰9˜Ò ¤8¨C¤=´ZÀÔPUÔ5VÜ M‰MðHäÜ+Ó-õ     ð ÐrJcó‡—t|«t|«turntd„|D««}tˆfd„|D««}‰j|«r&‰jj
|d‰j iŽS‰j|«S‰jxsd}tj|‰j«}‰j||«}‰j||¬«S)Nc3óLK—|]}t|«r t|«n|–—Œy­wrDrµr¶s  rHrz/_LocationIndexer.__getitem__.<locals>.<genexpr>r·r¸c3ó^•K—|]$}tj|‰j«–—Œ&y­wrDrºr¼s  €rHrz/_LocationIndexer.__getitem__.<locals>.<genexpr>žr½r¾Útakeablerrp) rtrhrsÚ_is_scalar_accessrjÚ
_get_valuerfÚ_getitem_tuplerdrˆr»rÄrö)rFrrdrÉs`   rHrIz_LocationIndexer.__getitem__™sÃø€ä" 3Ô'Ü ‹9œÑ ÜÑFÀ#ÔFÓFˆCÜÓHÀCÔHÓHˆCØ×%Ñ% cÔ*Ø*t—x‘x×*Ñ*¨CÐI¸$¿.¹.ÑIÐIØ×&Ñ& sÓ+Ð +ð—9‘9’> ˆDä ×2Ñ2°3¸¿¹ÓAˆNØ!×BÑBÀ3ÈÓWˆNØ×%Ñ% n¸4Ð%Ó@Ð @rJcó—t«‚rD©ÚNotImplementedErrorrïs  rHrz"_LocationIndexer._is_scalar_accessªó €Ü!Ó#Ð#rJcó—t|«‚rDrÌrès  rHrz_LocationIndexer._getitem_tuple­rrJcó—t«‚rDrrÍs   rHröz_LocationIndexer._getitem_axis°rrJcó—t|«‚rDrÌ©rFr’s  rHrÅz+_LocationIndexer._has_valid_setitem_indexer³rrJcó°—|jj|«}t||«}|j«d}|jj    ||¬«S)Nrrp)rjrwÚcheck_bool_indexerrŠÚ_take_with_is_copy)rFrrdÚlabelsÚindss     rHÚ _getbool_axisz_LocationIndexer._getbool_axis¶sN€ð—‘×#Ñ# DÓ)ˆÜ  ¨Ó-ˆØ{‰{‹}˜Qш؏x‰x×*Ñ*¨4°dÐ*Ó;Ð;rJrD)rdz Axis | Noner^r<©NN©r^ÚNone©rdr;)r×rsr^rs)rrsr^rs©r×rsr^re©r×rs)rrrÉr@r^r@)rrs©r^re)rKrLrMÚ__annotations__rdr    rnr‚r—rqrÊrÎrÙrßrér{rÛrúrrþr~rÄrIrrrörÅr'rErJrHraraÖsb…ØÓØ€Dˆ.ÓðƒOà
ó    ó ð    ò$5ðL ñ,ó ð,ð\ ó2Vó ð2Vðh ò>ó ð>ó<(ð, òó ðð* òó ðð  òó ðð òó ðð  ò    ó ð    ð òó ðð6 ò:.ó ð:.ðx òBó ðBóH(ó    ð ñAó ðAó $ó(ó$ó(ð ò<ó ñ<rJracó²—eZdZUdZded<dZeej«dd„«Zdd„Z    dd„Z
dd„Z dd    „Z dd
„Z dd „Zdd „Zdd „Zdd„Zdd„Zdd„Zdd„Zy)rWFrerfzšlabels (MUST BE IN THE INDEX), slices of labels (BOTH endpoints included! Can be slices of integers if the index is integers), listlike of labels, booleancóà—|jj|«}t|t«rpt    |j
«s[|j
j dk(sBt|t«r$t    |jd«j
«st|›d«‚t|t«rCt|jt«st|jt«rt|›d«‚yy)NÚbooleanrz7: boolean label can not be used without a boolean indexz+: boolean values can not be used in a slice)rjrwrrrerrŽrir7Úget_level_valuesryrxÚstartÚstopÚ    TypeError)rFrrdrs    rHrÎz_LocIndexer._validate_keyËs¾€ð X‰X× Ñ  Ó %ˆÜ cœ4Ô  Ü ˜"Ÿ(™(Ô #؏x‰x}‰}     Ò)ܘ"œjÔ)ܘb×1Ñ1°!Ó4×:Ñ:Ô;䨐%ÐNÐOóð ô cœ5Ô !Ü s—y‘y¤$Ô '¬:°c·h±hÄÔ+Eä˜s˜eÐ#NÐOÓPÐ Pð,Fð "rJcó—y)NTrEr!s  rHrÅz&_LocIndexer._has_valid_setitem_indexerás€ØrJcó$—t|«|jk7ryt|«D]i\}}t|«sy|jj
|}t |t«ryt |t«r|jry|jrŒiyy)ráFT) r‡rvrÜr$rjrçrrr7rbÚ!_supports_partial_string_indexingÚ_index_as_unique)rFrr†rœrs     rHrz_LocIndexer._is_scalar_accessäs€ô ˆs‹8t—y‘yÒ  Øä˜c“Nò    ‰DˆAˆqܘQ”<Ùà—‘—‘˜qÑ!ˆBܘ"œjÔ)Ùä˜!œSÔ! b×&JÒ&Jñà×&Ó&Ùð    ð rJcóN—td„|D««sytd„|D«« S)a§
        Check whether there is the possibility to use ``_multi_take``.
 
        Currently the limit is that all axes being indexed, must be indexed with
        list-likes.
 
        Parameters
        ----------
        tup : tuple
            Tuple of indexers, one per axis.
 
        Returns
        -------
        bool
            Whether the current indexing,
            can be passed through `_multi_take`.
        c3ó2K—|]}t|«–—Œy­wrD)r3r¶s  rHrz6_LocIndexer._multi_take_opportunity.<locals>.<genexpr>sèø€Ò8¨qÔ'¨×*Ñ8ùržFc3óFK—|]}tj|«–—Œy­wrD)rˆr‰r¶s  rHrz6_LocIndexer._multi_take_opportunity.<locals>.<genexpr>sèø€Ò;°!”s×*Ñ*¨1×-Ñ;ùs‚!)r¥rÒrès  rHÚ_multi_take_opportunityz#_LocIndexer._multi_take_opportunitys+€ô$Ñ8°CÔ8Ô8ØôÑ;°sÔ;Ó;Ð;Ð;rJc    óЗt||jj«Dcic]\}}||j||«“Œ}}}|jj    |dd¬«Scc}}w)a±
        Create the indexers for the passed tuple of keys, and
        executes the take operation. This allows the take operation to be
        executed all at once, rather than once for each dimension.
        Improving efficiency.
 
        Parameters
        ----------
        tup : tuple
            Tuple of indexers, one per axis.
 
        Returns
        -------
        values: same type as the object being indexed
        T©r÷Ú
allow_dups)ÚziprjÚ _AXIS_ORDERSÚ_get_listlike_indexerÚ_reindex_with_indexers)rFr×rrdÚds     rHÚ _multi_takez_LocIndexer._multi_takesk€ô& # 3¨¯©×(=Ñ(=Ó>÷
ᐐdð $×,Ñ,¨S°$Ó7Ñ 7ð
ˆñ
ðx‰x×.Ñ.¨q°tÈÐ.ÓMÐMùó    
s¤A"có”—|j||«|j||«\}}|jj|||gidd¬«S)aé
        Index current object with an iterable collection of keys.
 
        Parameters
        ----------
        key : iterable
            Targeted labels.
        axis : int
            Dimension on which the indexing is being made.
 
        Raises
        ------
        KeyError
            If no key was found. Will change in the future to raise if not all
            keys were found.
 
        Returns
        -------
        scalar, DataFrame, or Series: indexed value(s).
        Tr@)rÎrDrjrE)rFrrdÚkeyarrr’s     rHÚ_getitem_iterablez_LocIndexer._getitem_iterable7sY€ð.     ×ј3 Ô%ð×4Ñ4°S¸$Ó?‰ˆØx‰x×.Ñ.Ø F˜GÐ$Ð %¨D¸Tð/ó
ð    
rJcó—tt«5|j|«}|j|«cddd«S#1swYnxYw|j    |«}|j |«r|j |«S|j|«SrD)rrrÙrrßr>rGrúrès  rHrz_LocIndexer._getitem_tupleVs€Ü ”mÓ $ñ    /Ø×'Ñ'¨Ó,ˆCØ×)Ñ)¨#Ó.÷    /÷    /ò    /úð
×*Ñ*¨3Ó/ˆð × 'Ñ '¨Ô ,Ø×#Ñ# CÓ(Ð (à×+Ñ+¨CÓ0Ð0s    "<¼Acó<—|jj||¬«Srë)rjÚxs)rFÚlabelrds   rHÚ
_get_labelz_LocIndexer._get_labelds€àx‰x{‰{˜5 tˆ{Ó,Ð,rJcó—|jxsd}    |j||¬«S#t$rP}|jt    |«cxkr$|j
j jkr|‚td«|‚d}~wwxYw)NrrpzNo label returned)    rdrOryrvr‡rjrÕÚnlevelsr)rFr×rdÚeks    rHrÿz._LocIndexer._handle_lowerdim_multi_index_axis0hst€ày‰yŠ~˜Aˆð        =à—?‘? 3¨T?Ó2Ð 2øäò    =ðy‰yœ3˜s›8Ô= t§x¡x§~¡~×'=Ñ'=Ò=ؐð>äР3Ó4¸"Ð <ûð     =ús’%¥    A>®A A9Á9A>có|—t|«}t|«r t|«}|tur t    d«}|j
j |«}t|t«rt|t«r t|«}t|t«r%|j||«|j||¬«Stj|«r|j||¬«St|«r¶t|t«rt|t«s9t!|d«r|j"dkDr t%d«‚|j'||¬«St)||«rQ|j+|«}t    d«g|j"z}|||<|j
j,t|«S|j||«|j/||¬«S)Nrprvr…z&Cannot index with multidimensional key)r r r}rÑrxrjrwrrrsr7rÎÚ_get_slice_axisrˆr‰r'r3rrvrÝrJråÚget_locsrRrO)rFrrdr%Úlocsr’s      rHröz_LocIndexer._getitem_axisvsu€Ü Ó$ˆÜ sÔ Üs“)ˆCØ ”(‰?ܘ“+ˆCà—‘×#Ñ# DÓ)ˆä cœ5Ô !¤j°¼Ô&Dܘ“*ˆCä cœ5Ô !Ø × Ñ ˜s DÔ )Ø×'Ñ'¨°$Ð'Ó7Ð 7Ü ×  Ñ   Ô %Ø×%Ñ% c°Ð%Ó5Ð 5Ü ! #Ô &ä˜s¤EÔ*¬z¸&Ä*Ô/Mܘ3 Ô'¨C¯H©H°qªLÜ$Ð%MÓNÐNà×-Ñ-¨c¸Ð-Ó=Ð=ô˜s FÔ+Ø—‘ sÓ+Ü?DÀT»{¸mÈdÏiÉiÑ>WØ $˜‘ Ø—x‘x—}‘}¤U¨7£^Ñ4Ð4ð     ×ј3 Ô%؏‰˜s¨ˆÓ.Ð.rJcól—|j}t|«s|jd¬«S|j|«}|j    |j
|j |j«}t|t«r|jj||¬«S|jj||¬«S)zL
        This is pretty simple as we just have to deal with labels.
        Frñrp) rjÚ
need_slicer÷rwÚ slice_indexerr4r5ÚsteprrrxÚ_sliceÚtake)rFÚ    slice_objrdrjr%r’s      rHrTz_LocIndexer._get_slice_axisšsŽ€ð
h‰hˆÜ˜)Ô$Ø—8‘8 8Ó'Ð 'à—‘˜tÓ$ˆØ×&Ñ& y§¡¸    ¿¹È    ÏÉÓWˆä gœuÔ %Ø—8‘8—?‘? 7°?Ó6Ð 6ð—8‘8—=‘= ¨t=Ó4Ð 4rJcóx—|jj|«}t|t«r|j    |d¬«St|t
«r8t|t «s(|jdkrt|«dkDr td«‚d}t|t
«rtd„|D««}t|«st|t «rt|«r|s    |j|«St'||«r=|jdk(rtd    „|D««r td«‚|j)|«St+|«rNt-|«r t/|«}t1j2|«rt5||«}|S|j7||«dS    |j|«S#t$rBt|t
«r/t|t «rt|«|jk(rd|icYS‚YŒþt $rt|t «s‚YŒt"$rt%|«s‚d|icYSwxYw#t$rt+|«sd|icYS‚wxYw)
aÑ
        Convert indexing key into something we can use to do actual fancy
        indexing on a ndarray.
 
        Examples
        ix[:5] -> slice(0, 5)
        ix[[1,2,3]] -> [1,2,3]
        ix[['foo', 'bar', 'baz']] -> [i, j, k] (indices of foo, bar, baz)
 
        Going by Zen of Python?
        'In the face of ambiguity, refuse the temptation to guess.'
        raise AmbiguousIndexError with integer labels?
        - No, prefer label-based indexing
        rV)rr„r…rîFc3ó<K—|]}t|t«–—Œy­wrDrýrs  rHrz2_LocIndexer._convert_to_indexer.<locals>.<genexpr>Ísèø€Ò C¸!¤¨A¬u×!5Ñ Cùrãrc3ó<K—|]}t|t«–—Œy­wrDr ršs  rHrz2_LocIndexer._convert_to_indexer.<locals>.<genexpr>æsèø€Ò%H¸q¤j°´E×&:Ñ%Hùrã)rjrwrrrxÚ_convert_slice_indexerrsr7rvr‡rrÒr$rrzÚ LookupErrorrQrrÝrrårUr3r r}rˆr‰r#rD)rFrrdr%Úcontains_slices     rHr~z_LocIndexer._convert_to_indexer­sÿ€ð—‘×#Ñ# DÓ)ˆä cœ5Ô !Ø×0Ñ0°¸5Ð0ÓAÐ Aô sœEÔ "ܘv¤zÔ2Ø—    ‘    ˜A’ ܐC“˜1’ äР3Ó4Ð 4ðˆÜ cœ5Ô !Ü Ñ C¸sÔ CÓCˆNä SŒ>Ü vœzÔ *¬{¸3Ô/?Éð
 $Ø—~‘~ cÓ*Ð*ô ˜3 Ô '؏y‰y˜AŠ~¤#Ñ%HÀCÔ%HÔ"Hä#Ð$7Ó8Ð8Ø—?‘? 3Ó'Ð 'ä ! #Ô &ܘ3Ôܘ3“iä×"Ñ" 3Ô'Ü(¨°Ó5Ø
à×1Ñ1°#°tÓ<¸QÑ?Ð?ð Ø—~‘~ cÓ*Ð*øô?ò ܘc¤5Ô)¬j¸ÄÔ.Lܘ3“x 6§>¡>Ò1Ø % s˜|Ò+ØùÜ$ò ä! &¬*Ô5Øò6äò $Ü! #”ØØ˜s|Ò#ð $ûô.ò ä+¨CÔ0Ø! 3˜<Ò'Øð     ús7ÃFÆHÆAHÇ HÇ#HÇ?HÈHÈH9È7H9có —|jj|«}|jj|«}|j||«\}}||fS)aJ
        Transform a list-like of keys into a new index and an indexer.
 
        Parameters
        ----------
        key : list-like
            Targeted labels.
        axis:  int
            Dimension on which the indexing is being made.
 
        Raises
        ------
        KeyError
            If at least one key was requested but none was found.
 
        Returns
        -------
        keyarr: Index
            New index (coinciding with 'key' if the axis is unique).
        values : array-like
            Indexer for the return object, -1 denotes keys not found.
        )rjrwÚ_get_axis_nameÚ_get_indexer_strict)rFrrdrÚ    axis_namerIr’s       rHrDz!_LocIndexer._get_listlike_indexerýsL€ð.X‰X× Ñ  Ó %ˆØ—H‘H×+Ñ+¨DÓ1ˆ    à×0Ñ0°°iÓ@‰ˆàwˆÐrJN)rdr:r.©rrsr^rer,r-r+©r]rxrdr;)rKrLrMrfr/rcrrarÎrÅrr>rGrJrrOrÿrörTr~rDrErJrHrWrW¿sy…à€IˆtÓð    :ðñ    Ð    ×    'Ñ    'Ó(òQó)ðQó*óóD<ó0Nó2
ó> 1ó-ó =ó"/óH5ó&Nô`rJrWcó¾—eZdZdZdZdd„Zdd„Zdd„Zdd„Zdd„Z    dd„Z
dd    „Z dd
„Z dd „Z d „Zddd „Zdd„Zd„Zd d„Zd!d„Zd"d„Zd„Zd„Z        d#                    d$d„Zd%d„Zy)&rSzlinteger, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean arrayTcó@—tj|«rVt|d«rIt|jt
«r/|jj dk(r td«‚td«‚yt|t«ryt|«r|j||«yt|t«r td«‚t|«rÆt|t«r |j }n#t#|«r|}nt%j&|«}t)|j*j-|««}t/|j0«st3d|›«‚t)|«r3|j5«|k\s|j7«| kr t3d«‚yytd|j8›d    «‚)
NrÕÚintegerzDiLocation based boolean indexing on an integer type is not availablezBiLocation based boolean indexing cannot use an indexable as a maskrîz%.iloc requires numeric indexers, got ú%positional indexers are out-of-boundsz#Can only index by location with a [ú])rˆr‰rrrrÕr6Ú inferred_typerrÝrxrÚ_validate_integerrsrr3r)Ú_valuesrrŒr0r‡rjrwr"rŽÚ
IndexErrorÚmaxÚminrc)rFrrdÚarrÚlen_axiss     rHrÎz_iLocIndexer._validate_key'sg€Ü × Ñ ˜sÔ #ܐs˜GÔ$¬°C·I±I¼uÔ)EØ—9‘9×*Ñ*¨iÒ7Ü-ð+óðô
!ð-óðð ä cœ5Ô !Ø Ü ˜Œ_Ø × "Ñ " 3¨Õ -Ü ˜œUÔ #ô Ð 3Ó4Ð 4Ü ! #Ô &ܘ#œyÔ)Ø—k‘k‘ܘsÔ#Ø‘ä—h‘h˜s“mÜ˜4Ÿ8™8×-Ñ-¨dÓ3Ó4ˆHô$ C§I¡IÔ.Ü Ð#HÈÈÐ!NÓOÐOô3Œx˜SŸW™W›Y¨(Ò2°c·g±g³iÀ8À)Ò6KÜ Ð!HÓIÐIð7LˆxôÐBÀ4×CTÑCTÐBUÐUVÐWÓXÐ XrJcóÆ—t|t«r td«‚t|t«r t    d«‚t|t
«st |j|«}t|jj|«D]b\}}t|t«rŒt|«rŒ#t|«r|t|«k\sŒ=td«‚t|t«sŒYtd«‚y)zÂ
        Validate that a positional indexer cannot enlarge its target
        will raise if needed, does not modify the indexer externally.
 
        Returns
        -------
        bool
        z%iloc cannot enlarge its target objectzsDataFrame indexer for .iloc is not supported. Consider using .loc with a DataFrame indexer for automatic alignment.T)rrÚdictrrr(r6rsÚ_tuplifyrvrBrjrçrxr3rr‡)rFr’rr†s    rHrÅz'_iLocIndexer._has_valid_setitem_indexerQsȀô gœtÔ $ÜÐDÓEÐ Eä gœ|Ô ,ÜðXóð ô
˜'¤5Ô)ܘtŸy™y¨'Ó2ˆG䘟™Ÿ™¨Ó0ò     J‰EˆBÜ˜!œUÔ#àÜ% aÔ(àܘA”Øœ˜B›“<Ü$Ð%LÓMÐMܘAœtÕ$Ü Ð!HÓIÐIð     JðrJcóX—t|«|jk7rytd„|D««S)ráFc3ó2K—|]}t|«–—Œy­wrD)rršs  rHrz1_iLocIndexer._is_scalar_access.<locals>.<genexpr>‚sèø€Ò. Q”:˜a—=Ñ.ùrž)r‡rvr¥rïs  rHrz_iLocIndexer._is_scalar_accessus(€ô ˆs‹8t—y‘yÒ  ØäÑ.¨#Ô.Ó.Ð.rJcóx—t|jj|««}||k\s|| kr td«‚y)a@
        Check that 'key' is a valid position in the desired axis.
 
        Parameters
        ----------
        key : int
            Requested position.
        axis : int
            Desired axis.
 
        Raises
        ------
        IndexError
            If 'key' is not a valid position in axis 'axis'.
        z*single positional indexer is out-of-boundsN)r‡rjrwrr)rFrrdrvs    rHrpz_iLocIndexer._validate_integer„s=€ô t—x‘x×)Ñ)¨$Ó/Ó0ˆØ (Š?˜c X IšoÜÐIÓJÐ Jð.rJcó²—|j|«}tt«5|j|«cddd«S#1swYnxYw|j    |«SrD)rßrrrrúrès  rHrz_iLocIndexer._getitem_tuplešsP€Ø×*Ñ*¨3Ó/ˆÜ ”mÓ $ñ    /Ø×)Ñ)¨#Ó.÷    /÷    /ò    /úð×+Ñ+¨CÓ0Ð0s    ¡<¼Acóx—    |jj||¬«S#t$r}td«|‚d}~wwxYw)a
        Return Series values by list or array of integers.
 
        Parameters
        ----------
        key : list-like positional indexer
        axis : int
 
        Returns
        -------
        Series object
 
        Notes
        -----
        `axis` can only be zero.
        rprmN)rjr$rr)rFrrdrÞs    rHÚ_get_list_axisz_iLocIndexer._get_list_axis¡sB€ð"    OØ—8‘8×.Ñ.¨s¸Ð.Ó>Ð >øÜò    OäÐDÓEÈ3Ð Nûð    Oús‚Ÿ    9¨ 4´9cól—|tur td«}nt|t«r t    d«‚t|t«r|j ||¬«St |«r t|«}t|t«rtj|«}tj|«r%|j||«|j||¬«St|«r|j||¬«St!|«}t#|«s t%d«‚|j'||«|j(j+||¬«S)NzWDataFrame indexer is not allowed for .iloc
Consider using .loc for automatic alignment.rpz5Cannot index by location index with a non-integer key)rÑrxrrr(rrrTr r}rŒÚasarrayrˆr‰rÎr'r3rr rr6rprjÚ_ixsrÍs   rHröz_iLocIndexer._getitem_axis¸s€Ø ”(‰?ܘ“+‰CÜ ˜œ\Ô *Üð?óð ô
cœ5Ô !Ø×'Ñ'¨°$Ð'Ó7Ð 7ä sÔ Üs“)ˆCä cœ4Ô  Ü—*‘*˜S“/ˆCä × Ñ ˜sÔ #Ø × Ñ ˜s DÔ )Ø×%Ñ% c°Ð%Ó5Ð 5ô" #Ô &Ø×&Ñ& s°Ð&Ó6Ð 6ô$ CÓ(ˆCܘc”?ÜРWÓXÐXð × "Ñ " 3¨Ô -à—8‘8—=‘= ¨4=Ó0Ð 0rJcóҗ|j}t|«s|jd¬«S|j|«}|j    |«|jj ||¬«S)NFrñrp)rjrXr÷rwÚ_validate_positional_slicer[)rFr]rdrjr%s     rHrTz_iLocIndexer._get_slice_axisÝsW€àh‰hˆä˜)Ô$Ø—8‘8 8Ó'Ð 'à—‘˜tÓ$ˆØ×)Ñ)¨)Ô4؏x‰x‰˜y¨tˆÓ4Ð4rJcó—|S)zL
        Much simpler as we only have to deal with our valid types.
        rErÍs   rHr~z _iLocIndexer._convert_to_indexerès    €ðˆ
rJcóŒ—t|«r t|«}|j!t|j|j|«}|SrD)r r}rdrurvrïs  rHr‚z!_iLocIndexer._get_setitem_indexerîs8€ä sÔ Üs“)ˆCà 9‰9Ð  Ü(¨¯©°D·I±I¸sÓCˆCàˆ
rJcó —|jj}|jjj }|s't    |t
«r|jj }|sžt |jjj«ru|jdkDrft    |t«rt|j««n|}|jjjd}t|t|d¬«« }t    |t«r‰t |«t |jj«k(r^t!||jj«D];\}}    t    |    t"«sŒt%|«rŒ#t'j(|«rŒ9d}nt    |t«rcg}
t+|«D]F\}} t    | t«rt-| «\} } |jdkDrÎ||k(rÈt |j«s't/|«s t1d«‚||j| <yt'j(|d«r||j| <yt3|«rÓt|d¬«}dt5j6t |j«t4j8¬«z}t;j<||«}t    |t>«sUt    |t4j@«r"|jdk(rt |«dk(r|d    }|||d<||j| <y||j| <nPtC|«s-tE|t |j««|j| <ntG|«|j| <tI||jj«}|jK|||«y|jjM|«}tOjP«5tOjRd
d tT¬ «|jWt |«| «}ddd«t5jXt |«dzt4j8¬«}d|d<||fi}|jj[|d¬ «}|j|j_|jj]d¬«d|j_/|
ja|jc| ««Œ6|
ja| «ŒIt|
«}n#t-|«\}}|r|je||«y|dk(r|jg||«\}}|r|ji|||«y|jk|||«y#1swYŒTxYw)a­
        _setitem_with_indexer is for setting values on a Series/DataFrame
        using positional indexers.
 
        If the relevant keys are not present, the Series/DataFrame may be
        expanded.
 
        This method is currently broken when dealing with non-unique Indexes,
        since it goes from positional indexers back to labels when calling
        BlockManager methods, see GH#12991, GH#22046, GH#15686.
        r…rT)Ú extract_numpyz5cannot set a frame with no defined index and a scalarNr¡r )r.Úignoreú<The behavior of Index.insert with object-dtype is deprecated©Úcategory)rA©ÚclearrV)6rjÚ_info_axis_numberrªÚis_single_blockrrr(r‡Úarraysrvrxr}Úvaluesrr1rsrçrBr7rrˆrôrÜÚconvert_missing_indexerr3rÝrrŒÚonesr©ÚalgosÚtake_ndr)rr!r*r+Ú"convert_from_missing_indexer_tuplerÆrwrÁÚcatch_warningsÚfilterwarningsrÃÚinsertr¨rEÚ_maybe_update_cacherÚ_is_copyÚappendrzÚ_setitem_with_indexer_missingr—Ú _setitem_with_indexer_split_pathÚ_setitem_single_block)rFr’r“riÚ    info_axisÚtake_split_pathÚvalrur†rÚnindexerÚidxrÚ_ÚtakerÚ empty_valueÚ new_indexerrÕr%Ú
reindexersÚnew_objÚmissings                      rHrÆz"_iLocIndexer._setitem_with_indexerúsx€ð—H‘H×.Ñ.ˆ    ð#Ÿh™hŸm™m×;Ñ;Ð;ˆá¤:¨e´\Ô#Bà"'§*¡*×"<Ñ"<Ð<ˆOñ¤3 t§x¡x§}¡}×';Ñ';Ô#<ÀÇÁÈQÂä*4°U¼DÔ*A”$u—|‘|“~Ô&ÀuˆCØ—(‘(—-‘-×&Ñ& qÑ)ˆCÜ"2Ø”] 3°dÔ;ó#ðˆOô gœuÔ %¬#¨g«,¼#¸d¿h¹h¿m¹mÓ:LÒ*LܘW d§h¡h§m¡mÓ4ò ‘2ܘb¤*Õ-ܘq•M¤S×%6Ñ%6°qÕ%9à&*OÙð  ô gœuÕ %؈HÜ# GÓ,ó` )‘3ܘc¤4Õ(ô5°SÓ9‘FC˜ð—y‘y 1“}¨¨i«ô
 # 4§8¡8œ}Ü#7¸Ô#>Ü&0ð%Aó'"ð!"ð-2˜DŸH™H S™MÙ"ô×,Ñ,¨W°Q©ZÔ8à,1˜DŸH™H S™MÙ"Ü*¨5Ô1ä"/°ÀTÔ"J˜CØ$&¬¯©´°T·X±X³ÄbÇgÁgÔ)NÑ$N˜EÜ*/¯-©-¸¸UÓ*C˜KÜ#-¨e´YÔ#?ô%/¨s´B·J±JÔ$?Ø(+¯©°Aª Ü(+¨C«°Aª ð+.¨f©+ CØ:=  ¨G°A©JÑ 7Ø0; §¡¨¡ Ù &à,7˜DŸH™H SšMÜ!-¨eÔ!4Ü,WØ %¤s¨4¯8©8£}ó-˜DŸH™H SšMô
-=¸UÓ,C˜DŸH™H S™Mä&HØ# T§X¡X§]¡]ó'˜ ð×2Ñ2°;ÀÀtÔLáð !ŸH™H×.Ñ.¨qÓ1EÜ!×0Ñ0Ó2ñ?ä ×/Ñ/Ø$ð,ä%2õ    ð "'§¡¬c°%«j¸#Ó!>˜÷?ôŸI™I¤c¨%£j°1¡n¼B¿G¹GÔDEØ "E˜"‘IØ"# f¨e _Ð!5JØ"Ÿh™h×=Ñ=Ø"¨tð>óGð%,§L¡LD—H‘H”MØ—H‘H×1Ñ1¸Ð1Ô=Ø(,D—H‘HÔ%à—O‘O F§N¡N°3Ó$7Ö8ð—O‘O CÖ(ðA` )ôD˜H“o‰Gä6°wÓ?Ñ ˆGWáØ×2Ñ2°7¸EÔBØà 5Š=à!×;Ñ;¸GÀUÓK‰NˆGUñ à × 1Ñ 1°'¸5À$Õ Gà × &Ñ & w°°tÕ <÷[?ñ?ús Ï+8U5Õ5U?    có¾—|jdk(sJ‚t|t«st|j|«}t    |«|jkDr t d«‚t|dt j«r|djdkDr td«‚t|t«r|dk7st|t«rddl m }|j|||««}|d}|j|«}|d}t||j j"«}t%|«r%t'|dd«dkDrt|t(«r|j+|||«y
t j|«dk(r|j-||«y
t    |«dk(r0|t    |«k(r"t/|«s|j1|d||«y
t    |«dk(rUd|cxk7rt    |«k7rAnn>t    |«dk(r%t3|«s|j5||df|d«Std    «‚|dk(r,t    |«t    |j j"«k(ry
|j7|«rFt9|j j:j<|d«r|j1|d||«y
t    |«t    |«k(r(t?||«D]\}    }
|j1|    |
|«Œy
t    |«dk(rDtAjB|«r/t    |j «dk(r|j1|d||«y
td    «‚|D]}    |j1|    ||«Œy
) z&
        Setitem column-wise.
        r„ztoo many indices for arrayrzCannot set values with ndim > 2rR©r?r…rvz@Must have equal len keys and value when setting with an iterableN)"rvrrrsryr‡rrrŒrrÝr)rxÚpandasr?r‹Ú_ensure_iterable_column_indexerr5rjrÕr3rõr(Ú!_setitem_with_indexer_frame_valueÚ_setitem_with_indexer_2d_valuer$Ú_setitem_single_columnrrÆrr#ÚdtypesrqrBrˆrô) rFr’r“rir?r¡Úilocsr”Úlplane_indexerrVrs            rHrŸz-_iLocIndexer._setitem_with_indexer_split_path›sò€ð
y‰y˜AŠ~Ј~ä˜'¤5Ô)ܘtŸy™y¨'Ó2ˆGÜ ˆw‹<˜$Ÿ)™)Ò #ÜÐ9Ó:Ð :Ü g˜a‘j¤"§*¡*Ô -°'¸!±*·/±/ÀAÒ2EÜÐ?Ó@Ð @ä uœiÔ (¨T°Vª^Ä
È5ÔRVÔ@WÝ %à×&Ñ& w±°u³ Ó>ˆEð˜A‘Jˆ    Ø×4Ñ4°YÓ?ˆà Q‰ZˆÜ*¨2¨t¯x©x¯~©~Ó>ˆô
  Õ &¬7°5¸&À!Ó+DÀqÓ+Hܘ%¤Ô.Ø×6Ñ6°wÀÀtÕLä—‘˜“ 1Ò$ð×3Ñ3°G¸UÕCäU“˜q’ ^´s¸5³zÒ%AÌ)ÐTVÌ-à×+Ñ+¨E°!©H°e¸RÕ@äU“˜q’ Q¨.Ô%F¼CÀ»JÕ%Fô
u“: ’?¬:°iÔ+@ð ×5Ñ5°r¸9ÀQ¹<Ð6HÈ%ÐPQÉ(ÓSÐSä ð4óðð
  1Ò$¬¨U«´s¸4¿8¹8¿>¹>Ó7JÒ)Jàà×'Ñ'¨Ô0´_Ø—‘—‘×'Ñ'¨¨a©Ñ1ô6ð×+Ñ+¨G°A©J¸¸rÕBäU“œs 5›zÒ)ä! %¨Ó/ò<‘FC˜Ø×/Ñ/°°Q¸Õ;ñ<ôU“˜q’¤S×%6Ñ%6°rÔ%:¼sÀ4Ç8Á8»}ÐPQÒ?Qð ×+Ñ+¨E°!©H°e¸RÕ@ô!ð4óððò <Ø×+Ñ+¨C°¸Õ;ñ <rJcóv—|d}|j|d«}t|«stj|t¬«}t |«|j dk7r td«‚t|«D]F\}}|dd…|f}t|j«r|j«}|j|||«ŒHy)Nrr…r z?Must have equal len keys and value when setting with an ndarray) r°rrŒr0r r‡rrÝrÜr#rŽÚtolistr³)rFr’r“r”rµr†rVÚ    value_cols        rHr²z+_iLocIndexer._setitem_with_indexer_2d_valueös°€ðQ‰Zˆà×4Ñ4°W¸Q±ZÓ@ˆä˜UÔ#ä—H‘H˜U¬&Ô1ˆEÜ ˆu‹:˜Ÿ™ Q™Ò 'ÜØQóð ô  Ó&ò    <‰FˆAˆsØša ˜d™ ˆIܘyŸ™Ô/à%×,Ñ,Ó.    Ø × 'Ñ '¨¨Y¸Õ ;ñ     <rJcóœ—|j|d«}t|«}|d}t|jjt
«}|jj }|dk(r:t|«D]+\}    }
|jdd…|    f} |j|
| |«Œ-y|sª|jj|jj«r{|D]u}
|jj|
} | |vr3| |d<|jt|«|jdd…|
f|«} ntj} |j|
| |«Œwy|s td«‚|D]q}
|jj|
} | |vr/| |d<|jt|«|| |t!«¬«} ntj} |j|
| |«Œsy)Nr…rrRz/Setting with non-unique columns is not allowed.)Ú    using_cow)r°r}rrrjr¤r7Ú    is_uniquerÜrRr³Úequalsr‹rsrŒÚnanrÝr
) rFr’r“rirµÚ sub_indexerr”Úmultiindex_indexerÚ unique_colsr†rVr£Úitems              rHr±z._iLocIndexer._setitem_with_indexer_frame_value sÀ€Ø×4Ñ4°W¸Q±ZÓ@ˆä˜7“mˆ Ø Q‰Zˆä'¨¯©×(8Ñ(8¼*ÓEÐà—m‘m×-Ñ-ˆ ð 6Š>Ü# EÓ*ò :‘3Ø—j‘j¢ A Ñ&Ø×+Ñ+¨C°°bÕ9ñ :ñ §¡×!5Ñ!5°d·h±h×6FÑ6FÔ!Gðò :Ø—x‘x×'Ñ'¨Ñ,Ø˜5‘=Ø%)K ‘NØ×,Ñ,ܘkÓ*ØŸ
™
¢1 c 6Ñ*Ø*ó‘Cô Ÿ&™&Cà×+Ñ+¨C°°bÕ9ñ :ñÜÐNÓOÐ Oðò :Ø—x‘x×'Ñ'¨Ñ,Ø˜5‘=Ø%)K ‘NØ×,Ñ,ܘkÓ*ؘd™ Ø*Ü"5Ó"7ð    -ó‘CôŸ&™&Cà×+Ñ+¨C°°bÕ9ñ :rJcó—|}tj|«xs)tj|t|j««}tj
|«xst |«xrt|«dk(}|ry|r+    |jjj|||d¬«n—|jjj|}|tjk(r:t/|t|j««|jjdd…|f<|jjj|||«|jj1«y#tttf$r›|jjj|}|tjt fvrA|jj"s+t%j&d|›d|›dt(t+«¬«|jj-||«YŒÉwxYw)    zÕ
 
        Parameters
        ----------
        loc : int
            Indexer for column position
        plane_indexer : int, slice, listlike[int]
            The indexer we use for setitem along axis=0.
        rNT)Ú inplace_onlyzgSetting an item of incompatible dtype is deprecated and will raise in a future error of pandas. Value 'z' has dtype incompatible with z5, please explicitly cast to a compatible dtype first.r²)rˆrôÚ is_full_slicer‡rjÚis_empty_slicerrªÚcolumn_setitemrÝr6rr´rRrŒÚvoidr ÚemptyrÁrÂrÃrÚisetitemr*Ú_clear_item_cache)rFrVr“Ú plane_indexerr”Úis_full_setterÚis_null_setterrŽs        rHr³z#_iLocIndexer._setitem_single_column@s¦€ðˆä×*Ñ*¨2Ó.ÒV´#×2CÑ2CÀBÌÈDÏHÉHË Ó2Vˆä×+Ñ+¨BÓ/ÒU´=ÀÓ3DÒ3UÌÈRËÐTUɈá à á ð .Ø—‘— ‘ ×,Ñ,ؘ¨¸Dð-õð>—H‘H—O‘O×(Ñ(¨Ñ-ˆEØœŸ™Òô)TØœ3˜tŸx™x›=ó)—‘— ‘ ša ˜fÑ%ð H‰HM‰M× (Ñ (¨¨m¸UÔ Cà ‰×"Ñ"Õ$øôS¤    Ô+<Ð=ò .🙟™×,Ñ,¨SÑ1Ø¤§¡¬&Р1Ñ1¸$¿(¹(¿.º.ô—M‘Mð"à"' Ð(FÀuÀgðNNðNô&Ü#3Ó#5õ ð—‘×!Ñ! # uÖ-ð1 .úsÁ;)EÅB,HÈHcó‚—ddlm}t|t«r|dk7st|t«r|j |||««}|j j}|j j|«}t|t«r|jt|«cxk(rdk(rwnntt|d«rftj|d«rN|||}t|j|g««dk(r(|j!|«}|j#|||d«yt%|Ž}t|t&«r!|dk7r|j)||«j*}|j j-«|j j.j1||¬«|j _|j j3dd¬    «y)
zQ
        _setitem_with_indexer for the case when we have a single Block.
        rr®rRr„r…N)r’r“T)rŽÚinplace)r¯r?rrr)rxr‹rjrrwrsrvr‡rrˆrôÚget_indexer_forrzr³Úmaybe_convert_ixr(r‘rqÚ%_check_is_chained_assignment_possiblerªÚsetitemr›)    rFr’r“rir?r¡Ú item_labelsÚcolrVs             rHr z"_iLocIndexer._setitem_single_block„sm€õ    "ä uœiÔ (¨T°Vª^Ä
È5ÔRVÔ@Wð×&Ñ& w±°u³ Ó>ˆEà—H‘H×.Ñ.ˆ    Ø—h‘h×(Ñ(¨Ó3ˆ Ü gœuÔ %ð
—    ‘    œS ›\Ô.¨QÕ.ܘw q™zÔ*Ü×%Ñ% g¨a¡jÔ1à! '¨)Ñ"4Ñ5Ü{×2Ñ2°C°5Ó9Ó:¸aÒ?à%×-Ñ-¨cÓ2CØ×/Ñ/°°U¸GÀA¹JÔGØä&¨Ð0ˆGä eœ\Ô *¨t°vª~Ø×%Ñ% g¨uÓ5×=Ñ=ˆEð     ‰×6Ñ6Ô8🙟 ™ ×-Ñ-°gÀUÐ-ÓKˆ‰Œ Ø ‰×%Ñ%¨D¸$Ð%Õ?rJcóp    —ddlm}|jdk(rw|jj}t j «5t jddt¬«|jt|«|«}ddd«|jr:|jdd«}|dk7j«r|j||d    «St|«sd}nüt!||jj"«rdt%|jj"«s!t'|jj"d
¬ «}t)|jj"|«d}nxt+|«rd}nj|jj,sRt%|jj"«s3|jj"}t/|d |«}t)||«d}nd}||g|¬ «j0}    t|jj0«r!t3|jj0|    g«}    |jj5|    |jj6¬«j8|j_|jj;d¬«y|jdk(r t|jj<«s t?d«‚tA|d«}
tC|tD«r/|jG|jj<d¬«}||_n•tC|tH«r%|||jj<|tJ¬«}n`tM|«r6t|«t|jj<«k7r t?d«‚|||jj<|¬«}t|j«sœ|jO«jP} |jj} tC| tR«r | jT} n | j6} tW|g| ¬«| _|
s| jYd
¬«} | j8|j_n4|jj[|«j8|j_|jj;d¬«yy#1swYŒ4xYw)zN
        Insert new row(s) or column(s) into the Series or DataFrame.
        rr®r…r‰rŠr‹Nr¡rVF)ÚcompatÚ numpy_dtyper )rÕriTrr„z*cannot set a frame with no defined columnsrŽ)rÕr÷)rÕrirŽz(cannot set a row with mismatched columns)ri©r÷).r¯r?rvrjrÕrÁr˜r™rÃršr‡r¼Ú get_indexerrÒrÆr$r,rŽr#r.rr-rÉrõrqr&Ú _constructorrirªr›r¤rÝrrrr)Úreindexrxr r3Úto_framer@r7Únamesr6Ú infer_objectsÚ_append)rFr’r“r?rÕÚ    new_indexr©Ú    new_dtypeÚ
curr_dtypeÚ
new_valuesÚ    has_dtypeÚdfr¥ris              rHržz*_iLocIndexer._setitem_with_indexer_missing®sˆ€õ    "ð 9‰9˜‹>Ø—H‘H—N‘NˆEÜ×(Ñ(Ó*ñ >ä×'Ñ'ØØRÜ*õð
"ŸL™L¬¨U«°WÓ=    ÷ >ðŠð$×/Ñ/°    ¸"¸#°Ó? Ø 2Ñ%×*Ñ*Ô,à×5Ñ5°kÀ5È%ÓPÐPô˜UÔ#Ø ‘    ä& u¨d¯h©h¯n©nÔ=Ü& t§x¡x§~¡~Ô6ä.¨t¯x©x¯~©~ÀeÔLEä)¨$¯(©(¯.©.¸%Ó@ÀÑC‘    äe”Ø ‘    Ø—X‘X—^’^¬O¸D¿H¹H¿N¹NÔ,Kð"ŸX™XŸ^™^
Ü$ Z°À
ÓK
Ü)¨*°eÓ<¸QÑ?‘    à     á  ¨yÔ9×AÑAˆJä4—8‘8×#Ñ#Ô$ô+¨D¯H©H×,<Ñ,<¸jÐ+IÓJ
Ø ŸH™H×1Ñ1Ø )°$·(±(·-±-ð2óç‰dð H‰HŒMð H‰H× )Ñ )°Ð )Õ 5à Y‰Y˜!‹^ܐt—x‘x×'Ñ'Ô(ä Ð!MÓNÐNä  wÓ/ˆIܘ%¤Ô+àŸ ™ ¨D¯H©H×,<Ñ,<À4˜ ÓHØ$•
ܘE¤4Ô(ÙØ §¡×!1Ñ!1¸Ävô‘ô
(¨Ô.ä˜5“z¤S¨¯©×)9Ñ)9Ó%:Ò:Ü(Ð)SÓTÐTá˜u¨D¯H©H×,<Ñ,<À7ÔKät—x‘x”=ð—^‘^Ó%×'Ñ'à—h‘h—n‘nÜ˜c¤:Ô.ØŸ9™9‘DàŸ8™8Dä  ' °Ô6”Ù ð×)Ñ)¨uÐ)Ó5BØ "§¡—‘• à $§¡× 0Ñ 0°Ó 7× <Ñ <—‘” Ø H‰H× )Ñ )°Ð )Õ 5ðU÷q >ñ >ús Á8R+Ò+R5cód—t|«r|g}|St|t«r7tjt |j j««|}|St|tj«r<|jjdk(r#tjt |««|}|S|}|S)zX
        Ensure that our column indexer is something that can be iterated over.
        Úb) rrrrxrŒr¨r‡rjr¤rrŽr)rFÚcolumn_indexerrµs   rHr°z,_iLocIndexer._ensure_iterable_column_indexer    sŸ€ô
nÔ %Ø#Ð$ˆEðˆ ô˜¬Ô .Ü—I‘Iœc $§(¡(×"2Ñ"2Ó3Ó4°^ÑDˆEðˆ ô ~¤r§z¡zÔ 2°~×7KÑ7K×7PÑ7PÐTWÒ7Wä—I‘Iœc .Ó1Ó2°>ÑBˆEðˆ ð#ˆE؈ rJcóº—t|ttjtt
f«r|f}t|t «rod„}t t||««}|Dcgc]}tj|« ‘Œ}}t|«}|dk(}    |jdk(}
|j} |
r    |    xr|d}    ||jk(r’td„|D««r€|j| jd|dd¬«j } t#|«dkDr@|s>t#|d«} tj$| | «j'| d«j(} | St+|«D]C\}}| j|}t-|«st|t«rš|    rtj|«rŒI||}t/|«s t |g«}n t |«}|j0j3|«r"|r|cS|j j5«cS|j|«j cS|    sŒÎ|jjd}|j0j3|«s t#|«s|j j5«cS|j|«j cSt?d    «‚t7|«rž|jdk(rt9|jj:«r|S|jj=d«}|j0j3|«r|j j5«S|j|«j |St7|«rk|jj=d«}|j0j3|«r|j j5«S|j|«j St?d    «‚cc}w)
aT
        Parameters
        ----------
        indexer : tuple, slice, scalar
            Indexer used to get the locations that will be set to `ser`.
        ser : pd.Series
            Values to assign to the locations specified by `indexer`.
        multiindex_indexer : bool, optional
            Defaults to False. Should be set to True if `indexer` was from
            a `pd.MultiIndex`, to avoid unnecessary broadcasting.
 
        Returns
        -------
        `np.array` of `ser` broadcast to the appropriate shape for assignment
        to the locations selected by `indexer`
        cóZ—t|tj«r|j«S|SrD)rrrŒrÚravel)r†s rHríz)_iLocIndexer._align_series.<locals>.ravelI    s €Ü$.¨q´"·*±*Ô$=q—w‘w“yÐDÀ1ÐDrJr…r„rc3ó2K—|]}t|«–—Œy­wrD)r%)r›r¦s  rHrz-_iLocIndexer._align_series.<locals>.<genexpr>_    sèø€Ò0QÀA´¸Q·Ñ0QùržTrÚr¡z Incompatible indexer with Series) rrrxrŒrr}r6rsÚmaprˆrôÚsumrvrjr¥rÝrçrqr‡ÚtileÚreshaper@rÜr%r3rÕr½r÷rr#rŽrwrÝ)rFr’ÚserrÀr»rír¥ÚalignersÚ sum_alignersÚsingle_alignerÚis_framerjÚ
ser_valuesÚ len_indexerr†rÚnew_ixs                 rHr‹z_iLocIndexer._align_series-    s,€ô. g¤¤r§z¡z´4¼Ð?Ô @ؐjˆGä gœuÕ %ò EôœC  wÓ/Ó0ˆGà>EÖF°sœC×-Ñ-¨cÓ2Ò2ÐFˆHÐFܘx›=ˆLØ)¨QÑ.ˆNØ—y‘y A‘~ˆHØ—(‘(ˆCñØ!/Ò!?°H¸Q±Kð˜tŸy™yÒ(¬SÑ0QÈÔ0QÔ-QØ Ÿ[™[¨¯©°!©°W¸Q±ZÑ)@Àt˜[ÓL×TÑT
ôw“< !Ò#Ñ,>Ü"% g¨a¡j£/K䟙 
¨KÓ8×@Ñ@ÀÈbÓQ×SÑSðð"Ð!ä# GÓ,ó 3‘3Ø—X‘X˜a‘[ô˜sÔ#¤z°#´uÔ'=Ù%¬#×*;Ñ*;¸CÔ*@ؠؠ™WFÜ/°Ô7Ü!&¨ x£™ä!& v£˜Ø—y‘y×'Ñ'¨Ô/Ù$Ø#&šJØ"Ÿ{™{×/Ñ/Ó1Ò1àŸ;™; vÓ.×6Ñ6Ò6ò$àŸ™Ÿ™ qÑ)BØ—y‘y×'Ñ'¨Ô+´3°r´7Ø"Ÿ{™{×/Ñ/Ó1Ò1ØŸ;™; r›?×2Ñ2Ò2ð3 3ôZÐ;Ó<Ð<ô%˜Ô   T§Y¡Y°!¢^ܘtŸx™xŸ~™~Ô.ؐ
Ø—‘×#Ñ# AÓ&ˆBày‰y×Ñ Ô#Ø—{‘{×'Ñ'Ó)Ð)à—;‘;˜r“?×*Ñ*¨7Ñ3Ð 3ä ˜Ô  Ø—‘×#Ñ# AÓ&ˆBày‰y×Ñ Ô#Ø—{‘{×'Ñ'Ó)Ð)à—;‘;˜r“?×*Ñ*Ð *äÐ;Ó<Ð<ùòUGsÁOcóð—|jdk(}t|t«rþd\}}g}t|«D]†\}}|jj
|}    t |«st|t«r<t|tj«r|j«}|€|    |}Œl|€|    |}Œtn|j|«Œˆ|/|,|jj|«r-|jj|«r|j«}
|
S|j!||¬«}
|
St|t«s t#|«r´|r²|jj|}    |jj|    «r|j«}
|
St|    t$«rHt|jt$«r.|    j&|jj&k7r t)d«‚|j!|    ¬«}
|
St+d«‚)Nr„r()r¤zAcannot align on a multi-index with out specifying the join levels)rÕz#Incompatible indexer with DataFrame)rvrrrsrÜrjrçr%rxrŒrrírrÕr½r¤r÷rÝr3r7rQr6rÝ) rFr’rçr÷r¥ÚcolsÚ    sindexersr†Úixrr£s            rHr‘z_iLocIndexer._align_frameš    s¬€Ø—9‘9 ‘>ˆä gœuÔ %Ø"‰IˆCØˆIÜ" 7Ó+ò (‘2Ø—X‘X—]‘] 1Ñ%Ü˜r”?¤j°´UÔ&;Ü! "¤b§j¡jÔ1ØŸX™X›Z˜Ø{Ø  ™f™Ø˜Ø! "™v™áà×$Ñ$ QÕ'ð (ð‰ 4Ñ#3Ø—8‘8—?‘? 3Ô'¨B¯J©J×,=Ñ,=¸dÔ,CØŸ'™'›)Cð
ðŸ*™* S°$˜*Ó7Cؐ
䘤%Ô(Ô,@ÀÔ,IÉxØ—‘—‘ Ñ(ˆB؏x‰x‰˜rÔ"Ø—g‘g“iðˆJô˜r¤:Ô.Ü" 2§8¡8¬ZÔ8ØŸ
™
 b§h¡h×&6Ñ&6Ò6ä#ð5óðð
—j‘j rjÓ*ØˆJäÐ>Ó?Ð?rJNr+r.rh)rzint | np.integerrdr;r^r*r-ri)rR)rirb)r“r>rirb)rVÚintr^r*)rirbr^r*)FF)rór?rÀrer»re)rçr>r^r>)rKrLrMrcrfrÎrÅrrprrrörTr~r‚rÆrŸr²r±r³r ržr°r‹r‘rErJrHrSrSsµ„ð    Bðð€Ió
(YóT"óH /óKó,1óOó.#1óJ    5óò ô_=óBY<òv<ó,2:óhB%óH(@òTl6ò\ð*$)Øð k=ððk=ð!ð    k=ð
ó k=ôZ/@rJrScó0—eZdZUdZded<d„Zd„Zdd„Zy)    Ú_ScalarAccessIndexerz!
    Access scalars quickly.
    rerfcó—t|«‚rDrÌrïs  rHÚ _convert_keyz!_ScalarAccessIndexer._convert_keyÔ    rrJcóėt|t«st|«s|f}n td«‚|j    |«}|j
j |d|jiŽS)Nú)Invalid call for scalar access (getting)!r)rrrsr3rÝrrjrrfrïs  rHrIz _ScalarAccessIndexer.__getitem__×    sW€Ü˜#œuÔ%ä'¨Ô,ؐf‘ä Ð!LÓMÐMà×Ñ Ó$ˆØ"ˆtx‰x×"Ñ" CÐA°$·.±.ÑAÐArJc󤇗t|t«rtˆfd„|D««}n tj|‰j«}t|t«st ‰j |«}t‰j|««}t|«‰j k7r td«‚‰jj||‰jdœŽy)Nc3ó^•K—|]$}tj|‰j«–—Œ&y­wrDrºr¼s  €rHrz3_ScalarAccessIndexer.__setitem__.<locals>.<genexpr>ä    r½r¾z0Not enough indexers for scalar access (setting)!)r“r) rrrsrˆr»rjryrvr}rr‡rÝÚ
_set_valuerf)rFrr“s`  rHrÊz _ScalarAccessIndexer.__setitem__â    sœø€Ü cœ5Ô !ÜÓHÀCÔHÓH‰Cô×'Ñ'¨¨T¯X©XÓ6ˆCä˜#œuÔ%ܘ4Ÿ9™9 cÓ*ˆCܐ4×$Ñ$ SÓ)Ó*ˆÜ ˆs‹8t—y‘yÒ  ÜÐOÓPÐ Pàˆ‰×јS¨¸¿¹ÔGrJNr))rKrLrMrNr/rrIrÊrErJrHrrÌ    s…ñð
ƒOò(ò    Bô HrJrcóF‡—eZdZdZd„Zedd„«Zˆfd„Zdˆfd„ ZˆxZ    S)rZFcóF—|jdk(rt|«dkDr|f}|S)zd
        Require they keys to be the same type as the index. (so we don't
        fallback)
        r…)rvr‡rïs  rHrz_AtIndexer._convert_keyö    s%€ð 9‰9˜Š>œc #›h¨šlؐ&ˆCàˆ
rJcó¨—|jdk(sJ‚|jjjxr |jjjS)Nr„)rvrjrÕr¼r¤rTs rHÚ_axes_are_uniquez_AtIndexer._axes_are_unique
s=€ðy‰y˜AŠ~Ј~؏x‰x~‰~×'Ñ'ÒF¨D¯H©H×,<Ñ,<×,FÑ,FÐFrJcóä•—|jdk(rR|jsFt|t«rt    d„|D««s t d«‚|j j|St‰|%|«S)Nr„c3ó2K—|]}t|«–—Œy­wrD©r$r¶s  rHrz)_AtIndexer.__getitem__.<locals>.<genexpr>
óèø€Ò4OÀa´Y¸q·\Ñ4Oùržr)
rvr rrrsr¥rÝrjrVÚsuperrI)rFrÚ    __class__s  €rHrIz_AtIndexer.__getitem__    
s\ø€Ø 9‰9˜Š> $×"7Ò"7ä˜c¤5Ô)´Ñ4OÈ3Ô4OÔ1OÜ Ð!LÓMÐMØ—8‘8—<‘< Ñ$Ð $ä‰wÑ" 3Ó'Ð'rJcóš•—tsStsMt«rCtj|j
«dkr¡t jttd¬«n€tsztstt«sjtj|j
«}d}t«st|j
«r|dz }||kr t jttd¬«|jdk(rS|jsGt!|t"«rt%d„|D««s t'd«‚||j
j(|<yt*‰|Y||«S)Nr„r²r…c3ó2K—|]}t|«–—Œy­wrDrr¶s  rHrz)_AtIndexer.__setitem__.<locals>.<genexpr>%
rržz)Invalid call for scalar access (setting)!)rrr
r¿rÀrjrÁrÂrrr rrrÃrvr rrrsr¥rÝrVrrÊ©rFrr“rÇrÈrs     €rHrÊz_AtIndexer.__setitem__
sòø€ÝÕ2Ô7JÔ7L܏‰˜tŸx™xÓ(¨AÒ-Ü— ‘ Ü+Ô-CÐPQöõÕ4Ô=PÔ=RÜ—/‘/ $§(¡(Ó+ˆC؈IÜ%Ô'¬M¸$¿(¹(Ô,Cà˜Q‘    ØiÒÜ— ‘ Ü3´]Èqõð 9‰9˜Š> $×"7Ò"7ä˜c¤5Ô)´Ñ4OÈ3Ô4OÔ1OÜ Ð!LÓMÐMà %ˆDH‰HL‰L˜Ñ Ø ä‰wÑ" 3¨Ó.Ð.rJr.r))
rKrLrMrfrr_r rIrÊÚ __classcell__©rs@rHrZrZò    s2ø„à€Iò ðòGóðGô
(÷/ñ/rJrZcó*‡—eZdZdZd„Zdˆfd„ ZˆxZS)r]Tcó@—|D]}t|«rŒtd«‚|S)zH
        Require integer args. (and convert to label arguments)
        z1iAt based indexing can only have integer indexers)rrÝ)rFrr†s   rHrz_iAtIndexer._convert_key2
s/€ðò    VˆAܘa•=Ü Ð!TÓUÐUð    Vðˆ
rJcóÖ•—tsStsMt«rCtj|j
«dkr¡t jttd¬«n€tsztstt«sjtj|j
«}d}t«st|j
«r|dz }||kr t jttd¬«t‰|=||«S)Nr„r²r…)rrr
r¿rÀrjrÁrÂrrr rrrÃrrÊrs     €rHrÊz_iAtIndexer.__setitem__;
s§ø€ÝÕ2Ô7JÔ7L܏‰˜tŸx™xÓ(¨AÒ-Ü— ‘ Ü+Ô-CÐPQöõÕ4Ô=PÔ=RÜ—/‘/ $§(¡(Ó+ˆC؈IÜ%Ô'¬M¸$¿(¹(Ô,Cà˜Q‘    ØiÒÜ— ‘ Ü3´]Èqõô‰wÑ" 3¨Ó.Ð.rJr))rKrLrMrfrrÊrrs@rHr]r].
sø„à€Iò÷/ñ/rJr]cóp—t|«Dcgc]}tdd«‘Œ}}||d<t|«Scc}w)zÖ
    Given an indexer for the first dimension, create an equivalent tuple
    for indexing over all dimensions.
 
    Parameters
    ----------
    ndim : int
    loc : object
 
    Returns
    -------
    tuple
    Nr)r|rxrs)rvrVr¦Ú_tups    rHryryO
s:€ô(-¨T£{Ö 3 !ŒE$˜Õ Ð 3€DÐ 3Ø€DˆGÜ ‹;Ðùò 4sŽ3có@—td«g|z}|||<t|«S)zI
    If we have an axis, adapt the given key to be axis-independent.
    N)rxrs)rvrdrrØs    rHruruc
s'€ôT‹{ˆm˜dÑ"€GØ€GˆDMÜ ‹>ÐrJcóâ—|}t|t«r|jj|«st|jj    |«}d|vr t d«‚|j |«}t|jt«s|jt«jSt|«rtj|t¬«}nt|«st!|t¬«}t#||«S)aL
    Check if key is a valid boolean indexer for an object with such index and
    perform reindexing or conversion if needed.
 
    This function assumes that is_bool_indexer(key) == True.
 
    Parameters
    ----------
    index : Index
        Index of the object on which the indexing is done.
    key : list-like
        Boolean indexer to check.
 
    Returns
    -------
    np.array
        Resulting key.
 
    Raises
    ------
    IndexError
        If the key does not have the same length as index.
    IndexingError
        If the index of the key is unalignable to index.
    r¡ztUnalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).r )rrr)rÕr½rÑrr\rŽr'Úastypererqr#rŒrrÚpd_arrayr2)rÕrÚresultr’s    rHr#r#l
sÁ€ð4€Fܐ#”yÔ!¨#¯)©)×*:Ñ*:¸5Ô*AØ—,‘,×.Ñ.¨uÓ5ˆØ ‰=Üð4óð ð —‘˜WÓ%ˆô˜&Ÿ,™,¬Ô7Ø—=‘=¤Ó&×.Ñ.Ð .äsÔä—‘˜F¬$Ô/‰Ü ˜6Ô "ô˜&¬Ô-ˆÜ ˜u fÓ -Ð-rJcór—t|t«r$|d}t|t«r td«‚|dfS|dfS)zƒ
    Reverse convert a missing indexer, which is a dict
    return the scalar indexer and a boolean indicating if we converted
    rz.cannot use a single bool to index into setitemTF)rrrxrery)r’s rHr“r“ 
sA€ô
'œ4Ô à˜%‘.ˆä gœtÔ $ÜÐKÓLÐ Lؘˆ}Ðà Eˆ>ÐrJcóJ‡‡—ˆfd„Štˆfd„t|«D««S)zK
    Create a filtered indexer that doesn't have any missing indexers.
    cóV•—t|t«r‰|j|d«S|S)Nr)rrrxrz)Ú_iÚ_idxrçs  €rHrÛz7convert_from_missing_indexer_tuple.<locals>.get_indexerµ
s*ø€Ü0:¸4ÄÔ0FˆtB‰x×Ñ  U¡ Ó,ÐPÈDÐPrJc3ó6•K—|]\}}‰||«–—Œy­wrDrE)r›r%r&rÛs   €rHrz5convert_from_missing_indexer_tuple.<locals>.<genexpr>¸
søèø€ÒJ©8¨2¨t‘˜R ×&ÑJùræ)rsrÜ)r’rçrÛs `@rHr—r—°
s!ù€ô
Qô ÓJ´yÀÓ7IÔJÓ JÐJrJcó—|D]0}t|tjttt
f«rŒ.|cStj |ŽS)z3
    We likely want to take the cross-product.
    )rrrŒrr}r)r6Úix_)ÚargsrGs  rHrÒrÒ»
s?€ðòˆÜ˜#¤§
¡
¬D´)¼UÐCÕDØŠKðô 6‰64ˆ=ÐrJcóŽ—t|t«sy|D]/}t|«st|t«sŒt|t«cSy)ú&
    Returns
    -------
    bool
    F)rrrsr!rxr7)r×r%rœs   rHråråÅ
sB€ô cœ5Ô !Øà ò2ˆÜ ˜Œ?œj¨¬EÕ2ܘf¤jÓ1Ò 1ð2ð rJcóT—t|t« xrt|« xr|tuS)r,)rrrxr3rÑ©rs rHrrÖ
s3€ô sœEÓ "Ð"ò     Ü$ SÓ)Ð )ò     à ”xÐ ðrJcó€—|jduxs/|jduxs|jduxr|jdk7S)r,Nr…)r4r5rZ)rjs rHrXrXä
sD€ð         ‰    ˜Ðò    4Ø 8‰8˜4Ð ò    4à H‰H˜DÐ  Ò 2 S§X¡X°¡]ðrJcóú—t|t«s"t|t«rtd„|D««r t    d«‚t|t
«s"t|t«rtd„|D««r t    d«‚yy)zX
    Check if the indexer is or contains a dict or set, which is no longer allowed.
    c3ó<K—|]}t|t«–—Œy­wrD)rrÚsetr¶s  rHrz-check_dict_or_set_indexers.<locals>.<genexpr>ø
sèø€Ò0 q”
˜1œc×"Ñ0ùrãzAPassing a set as an indexer is not supported. Use a list instead.c3ó<K—|]}t|t«–—Œy­wrD)rrrxr¶s  rHrz-check_dict_or_set_indexers.<locals>.<genexpr> sèø€Ò1¨”
˜1œd×#Ñ1ùrãzBPassing a dict as an indexer is not supported. Use a list instead.N)rrr2rsrÒr6rxr.s rHrtrtñ
st€ô
    3œÔÜ cœ5Ô !Ü Ñ0¨CÔ0Ô 0äØ Oó
ð    
ô
    3œÔÜ cœ5Ô !Ü Ñ1¨SÔ1Ô 1äØ Pó
ð    
ð 2ð "rJ)rvrÿrVr8r^ztuple[Hashable | slice, ...])rvrÿrdr;r^rs)rÕr6r^z
np.ndarrayr.)rjrxr^rer))zÚ
__future__rÚ
contextlibrr¿Útypingrrrrr    rÁÚnumpyrŒÚpandas._configr
r Úpandas._libs.indexingr Úpandas._libs.libr Ú pandas.compatrÚpandas.compat._constantsrÚ pandas.errorsrrrrrrrrÚpandas.util._decoratorsrÚpandas.util._exceptionsrÚpandas.core.dtypes.castrrÚpandas.core.dtypes.commonrrrrr r!r"r#r$r%Úpandas.core.dtypes.concatr&Úpandas.core.dtypes.dtypesr'Úpandas.core.dtypes.genericr(r)Úpandas.core.dtypes.missingr*r+r,r-r.Ú pandas.corer/r•Úpandas.core.commonÚcoreÚcommonrˆÚpandas.core.constructionr0r r1Úpandas.core.indexersr2r3r4r5Úpandas.core.indexes.apir6r7Úcollections.abcr8r9Úpandas._typingr:r;r<r=r¯r>r?r@rxrÖrÔrBÚ
IndexSlicerPrarVrWrRrSrrYrZr\r]ryrur#r“r—rÒrårrXrtrErJrHú<module>rPsèðÝ"åÛ
÷õóã÷õ
5Ý.ÝÝ;÷    ÷    ó    õ(Ý4÷÷ ÷ ÷ õ4Ý4÷÷õõ,ߠР÷÷ó÷ ñ
÷÷
ó÷ñ
 ˆCƒL€á ˆD$Ó€ØBÐ÷)ñ)ñX‹]€
÷v(ñv(ôrf<Ð)ôf<ñR€]×ÑÓôYÐ"óYóðYñx
€]×ÑÓôl@Ð#ól@óðl@ô^#HÐ-ô#HñL€]×ÑÓô8/Ð%ó8/óð8/ñv€]×ÑÓô/Ð&ó/óð/ó@ó(ó1.òh ò Kòóó" ó
ô
rJ