
    bMh:                        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      h/var/www/html/test/jupyter/venv/lib/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                 f   t          dd          }t          t          j                            d                              d          |          }||d                  }t          j        ||j        d d df                    |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)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
^
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_cols0   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(   rB   rD   s        r)   0test_getitem_sparse_column_return_type_and_dtypez<TestGetitem.test_getitem_sparse_column_return_type_and_dtype9   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.   rG   Bstringr>   r0   )r   r	   rG   r5   r6   r&   r(   rD   rB   s       r)   test_getitem_string_columnsz'TestGetitem.test_getitem_string_columnsH   sT    AxSz)J)J)JKKKc7
vx00000r;   N)__name__
__module____qualname__r*   r:   rE   rL   rR    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_keyQ   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.   )   ra   AABCr0   foorN   C)r   r1   r2   r3   r4   r?   r   rI   r7   r5   r@   rQ   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   ra   r,      ark   br0   z"None of [Index(['baf'], dtype=r    baf)r   r#   r$   r%   reescape)r&   r(   msgs      r)   test_getitem_dupe_colsz*TestGetitemListLike.test_getitem_dupe_colsh   s    			999-GGG0]829S>>::: 	 	wKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	
A  A$'A$idx_typec           
      p    t          t          | t          t          |                                         S N)dictzipr"   lenkeyss    r)   <lambda>zTestGetitemListLike.<lambda>u   s&    c$c$ii(8(899:: r;   c           
          t          t          | t          t          |                                                                         S rt   )ru   rv   r"   rw   ry   rx   s    r)   rz   zTestGetitemListLike.<lambda>v   s2    c$c$ii(8(899::??AA r;   )r?   iterr	   setru   	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   ))rc   bar)bazqux)peekaboo)sthsth2rH   r0   )goodr   r   as an indexer is not supportedr    znot in index)r   r1   r2   r3   r4   r	   r   r?   
isinstancer}   ru   r#   r$   	TypeErrorrJ   namesr5   r@   r%   )r&   rr   r   float_frameframemissingry   idx	idx_checkrD   rB   s              r)   test_getitem_listlikez)TestGetitemListLike.test_getitem_listliken   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 )Nrg   rh   rk   rl   c              3      K   | ]}|V  d S rt   rV   .0r[   s     r)   	<genexpr>zBTestGetitemListLike.test_getitem_iloc_generator.<locals>.<genexpr>   "      %%1%%%%%%r;   r   r.   r.   r   r,   ri   r   r   )r   r7   r5   r@   r&   r(   indexerrD   rB   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 )Nrg   rh   r   c              3      K   | ]}|V  d S rt   rV   r   s     r)   r   zRTestGetitemListLike.test_getitem_iloc_two_dimensional_generator.<locals>.<genexpr>   r   r;   r   r   r,   ri   rl   r.   )rI   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   rJ   r   r5   r@   rQ   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)rS   rT   rU   r_   re   rq   r#   markparametrizer?   r|   r	   r}   r   r   r   r   rV   r;   r)   rX   rX   P   s             0 0 0   [::AA	
 BAA    [X1v..# # /. #J0 0 01 1 1'* '* '* '* '*r;   rX   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 )NrG   rV   r[   s    r)   rz   z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>   s    s r;   rG   c                 
    ddgS )NrG   rN   rV   r   s    r)   rz   z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>   s
    Sz r;   rN   r   c                 
    g dS )N)TFTrV   r   s    r)   rz   z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>   s    111 r;   r   r.   )rJ   r5   r6   r@   r7   )r&   r   rD   rB   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.   rk   rl   r0   )r   r5   r@   rJ   )r&   r(   rB   rD   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)rS   rT   rU   r   r   rV   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 )NrG   ri   int64rP   )r   r   r.   r   r   r.   )r   r.   r   T)orderedrN   )r>   rI   r   Frk   r   )r   r   r   r.   ra   z7Unordered Categoricals can only compare equality or notr    )r   r1   aranger   r   r   r7   r5   r@   r#   r$   r   )r&   df3df4rD   rB   rp   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   ra   g      ?ri      r   rZ   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 rV   )r1   array)r   icols      r)   
<dictcomp>z`TestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes.<locals>.<dictcomp>T  s&    JJJvq#!RXc]]JJJr;   r   )r.   r   r0   )r   r1   r   r   	enumeraterenamer5   r@   )
r&   data1data2expected_datadf1df2r(   rD   exdictrB   s
             r)   5test_getitem_bool_mask_duplicate_columns_mixed_dtypeszLTestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes7  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)rG   rG   rd   D   r   ra   float64r   r>   )r   r1   r   reshape)r&   dupsr(   s      r)   df_dup_colsz"TestGetitemBooleanMask.df_dup_colsX  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    ri   )r#   r$   
ValueErrorrG   )r&   r   r(   rp   s       r)   ;test_getitem_boolean_frame_unaligned_with_duplicate_columnszRTestGetitemBooleanMask.test_getitem_boolean_frame_unaligned_with_duplicate_columns^  s     ?]:S111 	 	rtaxLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ?AAc                    t          t          j        d                              dd          g dd          }||j        dk             }|j        |_        |}||j        dk             }t          j        ||           d S Nr   r   ra   )rG   rN   rd   r   r   r   ri   )r   r1   r   r   rd   r   r5   r@   r&   r   r(   rB   rD   s        r)   2test_getitem_boolean_series_with_duplicate_columnszITestGetitemBooleanMask.test_getitem_boolean_series_with_duplicate_columnsg  s     IbMM!!!Q''1E1E1EY
 
 
 bdQh<&.BD1H
fh/////r;   c                     t          t          j        d                              dd          g dd          }||dk             }|j        |_        |}||dk             }t          j        ||           d S r   )r   r1   r   r   r   r5   r@   r   s        r)   1test_getitem_boolean_frame_with_duplicate_columnszHTestGetitemBooleanMask.test_getitem_boolean_frame_with_duplicate_columnsu  s    IbMM!!!Q''1E1E1EY
 
 
 b1f:&.BF
fh/////r;   c                 d    t                      }||dk             }t          j        ||           d S )Nr   )r   r5   r@   )r&   r(   r   s      r)   %test_getitem_empty_frame_with_booleanz<TestGetitemBooleanMask.test_getitem_empty_frame_with_boolean  s3     [[aj
b#&&&&&r;   c                 F   t          g dg dgg d          }|                                }|d         }t          j        |          5  d|j        d d <   d d d            n# 1 swxY w Y   |r|}nt          g dg dgg d          }t          j        ||           d S )	Nrg   rh   rj   r0   rl   d   )r   r.   r   )ra   r,   r   )r   copyr5   assert_cow_warningrJ   r@   )r&   using_copy_on_writewarn_copy_on_writer(   df_origviewrB   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"#566 	 	DHQQQK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	VHH +++{{{!;___UUUH
b(+++++s   
A##A'*A'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   ra   KEYrN   rd   r0   r   rH   )r   	frozensetr   r5   r6   rQ   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)rS   rT   rU   r   r#   r   r   r1   nanr   fixturer   r   r   r   r   r   r   rV   r;   r)   r   r      sc       ? ? ?B [# Q!Q qAq6"&#}sCjI Q!Q Q!Q &#1v1v>	
 0 0 0$ ^  ^
  0 0 0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_equalrJ   )
r&   frame_or_seriesvaluesr   startendrK   objrD   rB   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 )	Nrk   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   r@   rQ   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)rS   rT   rU   r   r  r  rV   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keyrk   rl   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   ra   )rk   r   )rl   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)rS   rT   rU   r#   r   r   r  rV   r;   r)   r  r    sM        [Uc3Z#s$<==  >=  r;   r  )rn   numpyr1   r#   pandasr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   pandas._testing_testingr5   pandas.core.arraysr   r   rX   r   r   r   r  rV   r;   r)   <module>r     s   				                                            * * * * * *31 31 31 31 31 31 31 31lF* F* F* F* F* F* F* F*R0 0 0 0 0 0 0 08i1 i1 i1 i1 i1 i1 i1 i1X,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0^         r;   