
    o[we;                        d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZ d dlmZ  G d d          Z G d d          Z G d d	          Z G d
 d          Z G d d          Z G d d          ZdS )    N)CategoricalCategoricalDtypeCategoricalIndex	DataFrame
DateOffsetDatetimeIndexIndex
MultiIndexSeries	Timestampconcat
date_rangeget_dummiesperiod_range)SparseArrayc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestGetitemc                     t          g dddggddgddgg          }t          dt          d          |	          }t          j        t
          d
          5  |d
          d d d            d S # 1 swxY w Y   d S )N)a_lotonlyone
notevenonei      r   )levelscodes   )indexcolumnsr   match)r
   r   rangepytestraisesKeyError)selfmidfs      Hlib/python3.11/site-packages/pandas/tests/frame/indexing/test_getitem.py test_getitem_unused_level_raisesz,TestGetitem.test_getitem_unused_level_raises   s    666r
Cq6Aq6"
 
 
 rq2666]8<888 	 	|	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	A..A25A2c                    t          dd          }t          t          j                            d                              d          |          }||d                  }t          j        ||j        d d df                    t          |           |d         }t          j        ||j        d d df                    d S )Nz1/1/2000   )periods   )
   r,   r   r   )
r   r   nprandomdefault_rngstandard_normaltmassert_series_equalilocrepr)r&   rngr(   tss       r)   test_getitem_periodindexz$TestGetitem.test_getitem_periodindex&   s    :q111ry,,Q//??HHRUVVVAZ
r27111a4=111 	R
^
r27111a4=11111    c                    t          t          d          t          d          g          }t          ddgddggdddg|          }t          |          }|t	          |j                           }t          j        ||           d S )Nz
12-31-1999z
12-31-2000r   r   bool)dtyper   r   )r   r   r   r   listr   r5   assert_frame_equal)r&   catsexpecteddummiesresults        r)   1test_getitem_list_of_labels_categoricalindex_colsz=TestGetitem.test_getitem_list_of_labels_categoricalindex_cols3   s    Il33Y|5L5LMNNq!fq!f-VAq6SWXXXd##go../
fh/////r<   c                 >   t          ddg          }t          d|i          }t          |d          }|d         }t          j        ||           |j        d d df         }t          j        ||           |j        d d df         }t          j        ||           d S )Nr   r   Aname)r   r   r   r5   r6   r7   loc)r&   datar(   rC   rE   s        r)   0test_getitem_sparse_column_return_type_and_dtypez<TestGetitem.test_getitem_sparse_column_return_type_and_dtype<   s    Aq6""T{##$S)))C
vx000 A
vx0003
vx00000r<   c                     t          ddggt          ddgd                    }|j        }|d         }t          j        ||           d S )Nr   r.   rH   Bstringr?   r0   )r   r	   rH   r5   r6   r&   r(   rE   rC   s       r)   test_getitem_string_columnsz'TestGetitem.test_getitem_string_columnsK   sT    AxSz)J)J)JKKKc7
vx00000r<   N)__name__
__module____qualname__r*   r;   rF   rM   rS    r<   r)   r   r      s_        	 	 	2 2 20 0 01 1 11 1 1 1 1r<   r   c            	           e Zd Zd Zd Zd Zej                            de	e
eed d gg d          ej                            d	d
dg          d                         Zd Zd Zd ZdS )TestGetitemListLikec                     t          dgdgdgd          }g d|_        t          j        t          d          5  |g d          d d d            d S # 1 swxY w Y   d S )Ng      ?g       @      @)xyz)r\   r\   r^   z\['y'\] not in indexr    )r   r   r#   r$   r%   r&   r(   s     r)   test_getitem_list_missing_keyz1TestGetitemListLike.test_getitem_list_missing_keyT   s     cU#cU;;<<$__
 ]8+BCCC 	  	 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   AAAc                 B   t          t          j                            d                              d          t          d                    }d|j        _        |ddg         }|j        j        dk    sJ |j        d d dd f         }t          j
        ||           d S )Nr.   )   rb   AABCr0   foorO   C)r   r1   r2   r3   r4   r@   r   rJ   r7   r5   rA   rR   s       r)   test_getitem_list_duplicatesz0TestGetitemListLike.test_getitem_list_duplicates^   s    I!!!$$44V<<d6ll
 
 
  
S#J~"e++++7111abb5>
fh/////r<   c                     t          g dg dgg d          }d}t          j        t          t	          j        |                    5  |dg          d d d            d S # 1 swxY w Y   d S )Nr   r.   r   rb   r,      arl   br0   z?"None of [Index(['baf'], dtype='object')] are in the [columns]"r    baf)r   r#   r$   r%   reescape)r&   r(   msgs      r)   test_getitem_dupe_colsz*TestGetitemListLike.test_getitem_dupe_colsk   s    			999-GGGQ]829S>>::: 	 	wKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	
A  A$'A$idx_typec           
      p    t          t          | t          t          |                                         S N)dictzipr"   lenkeyss    r)   <lambda>zTestGetitemListLike.<lambda>x   s&    c$c$ii(8(899:: r<   c           
          t          t          | t          t          |                                                                         S ru   )rv   rw   r"   rx   rz   ry   s    r)   r{   zTestGetitemListLike.<lambda>y   s2    c$c$ii(8(899::??AA r<   )r@   iterr	   setrv   	dict_keys)idsr   r   r.   c                    |dk    r|d}}nTt          t          j                            d                              d          t          g dd                    }d	}|j        d         |j        d
         g} ||          }t           ||                    }t          |t          t          f          r=t          j        t          d          5  ||          d d d            n# 1 swxY w Y   d S ||         }	|j        d d |f         }
|j        j        |
j        _        t!          j        |	|
            |||gz             }t          j        t$          d          5  ||          d d d            d S # 1 swxY w Y   d S )Nr   foodr.   )   r   ))rd   bar)bazqux)peekaboo)sthsth2rI   r0   )goodr   r   as an indexer is not supportedr    znot in index)r   r1   r2   r3   r4   r	   r   r@   
isinstancer~   rv   r#   r$   	TypeErrorrK   namesr5   rA   r%   )r&   rs   r   float_frameframemissingrz   idx	idx_checkrE   rC   s              r)   test_getitem_listlikez)TestGetitemListLike.test_getitem_listlikeq   s     Q;;(&7EE 	%%a((88@@FFF(    E 'Ga %-"23htnn$((	cC;'' 	 y0PQQQ  c

               F3ZF9QQQ	\*!&!4
fh///htwi'((]8>::: 	 	#JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   	C))C-0C-$	E::E>E>c                     t          g dg dd          }d dD             }|j        |         }t          ddgdd	gdd
dg          }t          j        ||           d S )Nrh   ri   rl   rm   c              3      K   | ]}|V  d S ru   rW   .0r\   s     r)   	<genexpr>zBTestGetitemListLike.test_getitem_iloc_generator.<locals>.<genexpr>   "      %%1%%%%%%r<   r   r.   r.   r   r,   rj   r   r   )r   r7   r5   rA   r&   r(   indexerrE   rC   s        r)   test_getitem_iloc_generatorz/TestGetitemListLike.test_getitem_iloc_generator   s}    YYYYYY7788%%f%%%!Aq6A771vFFF
fh/////r<   c                     t          g dg dd          }d dD             }|j        |df         }t          ddgd	dd
g          }t          j        ||           d S )Nrh   ri   r   c              3      K   | ]}|V  d S ru   rW   r   s     r)   r   zRTestGetitemListLike.test_getitem_iloc_two_dimensional_generator.<locals>.<genexpr>   r   r<   r   r   r,   rj   rm   r.   )rJ   r   )r   r7   r   r5   r6   r   s        r)   +test_getitem_iloc_two_dimensional_generatorz?TestGetitemListLike.test_getitem_iloc_two_dimensional_generator   sw    YYYYYY7788%%f%%%!$1a&s1a&999
vx00000r<   c                 d   t          t          t          d                    t          ddt	          d                              }|j        dd         }t          g d	t          g d
dt	          d                              }t          j        ||           t          t          t          d                    t          ddt	          dd                              }|j        dd         }t          g d	t          g ddt	          dd                              }t          j        ||           t          t          t          d                    t          ddt	          d                              }|j        dd         }t          j        ||           d S )Nr/   z
01-01-2022r   )days)r-   freqr   
2022-01-01
2022-01-03)r   r   r.   )r   z
2022-01-02r   zdatetime64[ns])r?   r   r.   )r   hours)z2022-01-01 00:00:00z2022-01-02 02:00:00z2022-01-03 04:00:00r   )minutes)	r   r@   r"   r   r   rK   r   r5   rA   rR   s       r)   !test_getitem_iloc_dateoffset_daysz5TestGetitemListLike.test_getitem_iloc_dateoffset_days   s   rOO\2JA<N<N<NOOO
 
 
 \12II:::&Q'''  
 
 
 	fh///rOObzq/J/J/J  
 
 
 \12IIUUU&Qa000  
 
 
 	fh///rOO\2Jq<Q<Q<QRRR
 
 
 \12
fb)))))r<   N)rT   rU   rV   r`   rf   rr   r#   markparametrizer@   r}   r	   r~   r   r   r   r   rW   r<   r)   rY   rY   S   s             0 0 0   [::AA	
 BAA    [X1v..# # /. #J0 0 01 1 1'* '* '* '* '*r<   rY   c                       e Zd Zd Zd ZdS )TestGetitemCallablec                 ^   |d          }|j         d d df         }t          j        ||           |d          }|j         d d ddgf         }t          j        ||j         d d ddgf                    |d d         }|d          }|j        ddgd d f         }t          j        ||           d S )	Nc                     dS )NrH   rW   r\   s    r)   r{   z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>   s    s r<   rH   c                 
    ddgS )NrH   rO   rW   r   s    r)   r{   z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>   s
    Sz r<   rO   r   c                 
    g dS )N)TFTrW   r   s    r)   r{   z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>   s    111 r<   r   r.   )rK   r5   r6   rA   r7   )r&   r   rE   rC   r(   s        r)   test_getitem_callablez)TestGetitemCallable.test_getitem_callable   s    ]]+?111c6*
vx000112?111sCj=1
fkoaaa#sm&DEEE!_112#QFAAAI.
fh/////r<   c                     t          ddggddgg          }t          dgdgg          }|d         }t          j        ||           |j        d d df         }t          j        ||           d S )Nr   r.   rl   rm   r0   )r   r5   rA   rK   )r&   r(   rC   rE   s       r)   %test_loc_multiindex_columns_one_levelz9TestGetitemCallable.test_loc_multiindex_columns_one_level   s    Ax3*666aSC5'222C
fh///3
fh/////r<   N)rT   rU   rV   r   r   rW   r<   r)   r   r      s2        0 0 0	0 	0 	0 	0 	0r<   r   c                   B   e Zd Zd Zej                            dddgddggddgd	d
ggej        dgej        dgej        dgddggfddgddggddgd	d
ggej        dgej        dgdd	gdd
ggff          d             Z	ej
        d             Zd Zd Zd Zd Zd Zd ZdS )TestGetitemBooleanMaskc           
         t          dt          j        dd          it          g dt	          g dd          d	
                    }t          dt          j        dd          it          g dt	          g dd          d	
                    }||j        dk             }|j        g          }t          j        ||           ||j        dk             }|j        g          }t          j        ||           ||j        dk             }|j        g d         }t          j        ||           ||j        dk             }|j        g d         }t          j        ||           ||j        dk              }|j        dg         }t          j        ||           ||j        dk             }|j        g          }t          j        ||           d}t          j
        t          |          5  ||j        dk               d d d            n# 1 swxY w Y   t          j
        t          |          5  ||j        dk              d d d            d S # 1 swxY w Y   d S )NrH   rj   int64rQ   )r   r   r.   r   r   r.   )r   r.   r   T)orderedrO   )r?   rJ   r   Frl   r   )r   r   r   r.   rb   z7Unordered Categoricals can only compare equality or notr    )r   r1   aranger   r   r   r7   r5   rA   r#   r$   r   )r&   df3df4rE   rC   rq   s         r)   (test_getitem_bool_mask_categorical_indexz?TestGetitemBooleanMask.test_getitem_bool_mask_categorical_index   s   RYq000 #"""&yyy$???  		
 	
 	
 RYq000 #"""&yyy%@@@  		
 	
 	
 SY#%&8B<
fh///SY#%&8B<
fh///SY!^$8III&
fh///SY!^$8III&
fh/// SY]#8QC=
fh///SY]#8B<
fh/// H]9C000 	 		A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9C000 	 		A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   )HHH-IIIzdata1,data2,expected_datar   r.   r   rb   g      ?rj      r   r[   g      @g      @g      @g       @r,   c                 p   t          t          j        |                    }t          t          j        |                    }t          ||gd          }||dk             }d t	          |          D             }t          |                              ddd          }	t          j        ||	           d S )Nr   )axisr.   c                 >    i | ]\  }}|t          j        |          S rW   )r1   array)r   icols      r)   
<dictcomp>z`TestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes.<locals>.<dictcomp>W  s&    JJJvq#!RXc]]JJJr<   r   )r.   r   r0   )r   r1   r   r   	enumeraterenamer5   rA   )
r&   data1data2expected_datadf1df2r(   rE   exdictrC   s
             r)   5test_getitem_bool_mask_duplicate_columns_mixed_dtypeszLTestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes:  s    . ((((S#JQ'''BFJJ=1I1IJJJV$$++aLL+AA
fh/////r<   c                 ~    g d}t          t          j        d                              dd          |d          }|S )N)rH   rH   re   D   r   rb   float64r   r?   )r   r1   r   reshape)r&   dupsr(   s      r)   df_dup_colsz"TestGetitemBooleanMask.df_dup_cols[  s>    ###ry}},,Q22D	RRR	r<   c                     |}d}t          j        t          |          5  ||j        dk              d d d            d S # 1 swxY w Y   d S )Nz/cannot reindex on an axis with duplicate labelsr    rj   )r#   r$   
ValueErrorrH   )r&   r   r(   rq   s       r)   ;test_getitem_boolean_frame_unaligned_with_duplicate_columnszRTestGetitemBooleanMask.test_getitem_boolean_frame_unaligned_with_duplicate_columnsa  s     ?]:S111 	 	rtaxLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ?AAc                 0   t          t          j        d                              dd          g dd          }||j        dk             }|j        |_        |}||j        dk             }t          j        ||           |j         t          |           d S Nr   r   rb   )rH   rO   re   r   r   r   rj   )
r   r1   r   r   re   r   r5   rA   dtypesstrr&   r   r(   rC   rE   s        r)   2test_getitem_boolean_series_with_duplicate_columnszITestGetitemBooleanMask.test_getitem_boolean_series_with_duplicate_columnsj  s     IbMM!!!Q''1E1E1EY
 
 
 bdQh<&.BD1H
fh///Fr<   c                    t          t          j        d                              dd          g dd          }||dk             }|j        |_        |}||dk             }t          j        ||           |j         t          |           d S r   )	r   r1   r   r   r   r5   rA   r   r   r   s        r)   1test_getitem_boolean_frame_with_duplicate_columnszHTestGetitemBooleanMask.test_getitem_boolean_frame_with_duplicate_columnsz  s    IbMM!!!Q''1E1E1EY
 
 
 b1f:&.BF
fh///Fr<   c                 d    t                      }||dk             }t          j        ||           d S )Nr   )r   r5   rA   )r&   r(   r   s      r)   %test_getitem_empty_frame_with_booleanz<TestGetitemBooleanMask.test_getitem_empty_frame_with_boolean  s3     [[aj
b#&&&&&r<   c                     t          g dg dgg d          }|                                }|d         }d|j        d d <   |r|}nt          g dg dgg d          }t          j        ||           d S )	Nrh   ri   rk   r0   rm   d   )r   r.   r   )rb   r,   r   )r   copyrK   r5   rA   )r&   using_copy_on_writer(   df_origviewrC   s         r)   5test_getitem_returns_view_when_column_is_unique_in_dfzLTestGetitemBooleanMask.test_getitem_returns_view_when_column_is_unique_in_df  s     			999-GGG''))#w 	VHH +++{{{!;___UUUH
b(+++++r<   c                     t          g dgt          dg          dddg          }|t          dg                   }t          dgt          dg                    }t          j        ||           d S )N)r   r.   r   rb   KEYrO   re   r0   r   rI   )r   	frozensetr   r5   r6   rR   s       r)   'test_getitem_frozenset_unique_in_columnz>TestGetitemBooleanMask.test_getitem_frozenset_unique_in_column  sx    ~	5'0B0BCc/RSSSIug&&'1#Iug$6$6777
vx00000r<   N)rT   rU   rV   r   r#   r   r   r1   nanr   fixturer   r   r   r   r   r   r   rW   r<   r)   r   r      sc       ? ? ?B [# Q!Q qAq6"&#}sCjI Q!Q Q!Q &#1v1v>	
 0 0 0$ ^  ^
        ' ' ', , ,1 1 1 1 1r<   r   c                        e Zd Zd Zd Zd ZdS )TestGetitemSlicec                    t          j        ddd          }t          |          }|ddg         \  }}t           j                            d                              d          }|t          ur|d d df         } |||          }|||         }|j        dd	         }	t          j	        ||	           |j
        ||         }t          j	        ||	           d S )
Ng      $@g      I@r.   r,      )   r   r   r      )r1   r   r	   r2   r3   r4   r   r7   r5   assert_equalrK   )
r&   frame_or_seriesvaluesr   startendrL   objrE   rC   s
             r)   test_getitem_slice_float64z+TestGetitemSlice.test_getitem_slice_float64  s    4q))fQG_
sy$$Q''77@@)++1:Dod%000U3Y8AbD>
)))s#
)))))r<   c                     t          ddit          g d                    }t          j        t          d          5  |dd          d d d            d S # 1 swxY w Y   d S )	Nrl   r   )z11.01.2011 22:00z11.01.2011 23:00z12.01.2011 00:00z2011-01-13 00:00r   z,Value based partial slicing on non-monotonicr    z
2011-01-01z
2011-11-01)r   r   r#   r$   r%   r_   s     r)   test_getitem_datetime_slicez,TestGetitemSlice.test_getitem_datetime_slice  s    !H   

 

 

 ]J
 
 
 	* 	* |L())	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   AAAc                 X   t          t          j                            d                              d                    }|j        t          d d d          f         }|j        dk    sJ |j        t          d d d          t          d           f         }t          j	        ||           d S )Nr.   )r/   r   )r,   r   )
r   r1   r2   r3   r4   r7   sliceshaper5   rA   rR   s       r)   )test_getitem_slice_same_dim_only_one_axisz:TestGetitemSlice.test_getitem_slice_same_dim_only_one_axis  s    ry,,Q//??HHII%dA..01|v%%%%75tQ//t<=
fh/////r<   N)rT   rU   rV   r  r  r  rW   r<   r)   r   r     sA        * * *&* * *$0 0 0 0 0r<   r   c                   b    e Zd Zej                            dddhddig          d             ZdS )TestGetitemDeprecatedIndexerskeyrl   rm   c                     t          ddgddggt          j        ddg                    }t          j        t
          d	          5  ||          d d d            d S # 1 swxY w Y   d S )
Nr   r.   r   rb   )rl   r   )rm   r.   r0   r   r    )r   r
   from_tuplesr#   r$   r   )r&   r
  r(   s      r)   $test_getitem_dict_and_set_deprecatedzBTestGetitemDeprecatedIndexers.test_getitem_dict_and_set_deprecated  s     VaVj&<h=Q&R&R
 
 
 ]9,LMMM 	 	sGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	AA!$A!N)rT   rU   rV   r#   r   r   r  rW   r<   r)   r	  r	    sM        [Uc3Z#s$<==  >=  r<   r	  )ro   numpyr1   r#   pandasr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   pandas._testing_testingr5   pandas.core.arraysr   r   rY   r   r   r   r	  rW   r<   r)   <module>r     s   				                                            * * * * * *61 61 61 61 61 61 61 61rF* F* F* F* F* F* F* F*R0 0 0 0 0 0 0 08l1 l1 l1 l1 l1 l1 l1 l1^,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0^         r<   