
    bMh>                         d dl Z d dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ ej        d             Z G d d          Z G d d	          ZdS )
    N)SettingWithCopyError)	DataFrameIndex
IndexSlice
MultiIndexSeriesconcat)BDayc                      t          j        g dg dg dg          } t          ddgddgg dg d	gg d
g dg dg dgg d          }t          | |t	          d                    S )NgEJYgr鷯g|?5^ݿg6?gK?g-?gT?g9#?g9]?g46<R?)gQg^)gxֿgI&?g=U@axbq)ı.n$@      4@g      >@)         )r   r      )r   r   r   )r   r      )r   r   r   )onetwothreefourlevelscodesnamesABCDEindexcolumns)nparrayr   r   list)arrr#   s     c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/frame/indexing/test_xs.pyfour_level_index_dataframer*      s    
(777555777	
 C c
S#J(=(=(=yyyIyy)))YYY			:---  E
 StG}}====    c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestXSc                    |                                 }|j        d         }|                    |          }|                                D ]P\  }}	t	          j        |	          r#t	          j        ||         |                   sJ <|	||         |         k    sJ Qdddddddd	}
t          |
          }|                    d          }|j        t          j        k    sJ |d
         dk    sJ |d         dk    sJ t          j
        t          t          j        d                    5  |                    |j        d         t                      z
             d d d            n# 1 swxY w Y   |                    d
d          }|d
         }t          j        ||           |                    d
d          }t          j        |          5  d|d d <   d d d            n# 1 swxY w Y   |r=t          j        |d
         |d
                    |dk                                    rJ d S |dk                                    sJ d S )Nr   r   r   )12r/   r0   3)r/   r0   r1   )ABr2   r3   z Timestamp('1999-12-31 00:00:00')matchr   )axis)copyr#   xsitemsr%   isnanr   dtypeobject_pytestraisesKeyErrorreescaper
   tmassert_series_equalassert_cow_warningall)selffloat_framedatetime_frameusing_copy_on_writewarn_copy_on_writefloat_frame_origidxr8   itemvalue	test_dataframeseriesexpecteds                 r)   test_xszTestXS.test_xs'   s    '++--"^^C  88:: 	7 	7KD%x 7xD 1# 6777777D 1# 666666 !"**s31O1OPP	)$$XXc]]x2:%%%%#w!||||#w#~~~~]BI&HII
 
 
 	@ 	@ n215>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ !,,s#
vx000 !,,"#566 	 	F111I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	)";s#35Ec5JKKK A**,,,,,,,M&&(((((((s$   ,0E((E,/E,G&&G*-G*c                    t          dgt          g d                    }d|d<   d|d<   d	|d
<   d|d<   d|d<   |                    d          }t          g dt	          d          d          }t          j        ||           t          g d          }|                    d          }t          g dt          j                  }t          j        ||           d S )Nr   str)r;   r"         ?r2   foor3          @CbarD      @E)rV   rW   rX   rZ   r\   r!   )r#   namer   r   cr#   r   )r^   r;   )	r   r   r8   r   r'   rB   rC   r%   float64)rF   dfr8   expresultrR   s         r)   test_xs_cornerzTestXS.test_xs_cornerP   s    aS%%*@*@*@AAA33333UU1XX222$w--aPPP
r3''' ___---s"3bj999
vx00000r+   c                     t          t          j                            d                              d          g d          }|                    d          }|j        d         }t          j        ||           d S )Nr   )r   r   )r   r   r`   r   r   ra   r`   )	r   r%   randomdefault_rngstandard_normalr8   ilocrB   rC   )rF   rc   crossrd   s       r)   test_xs_duplicateszTestXS.test_xs_duplicatesc   su    I!!!$$44V<<+++
 
 

 c

gaj
uc*****r+   c                 <   t          ddddddddddddd                              g d	          }|                    dd
d          }|d d         }t          j        ||           |                    ddd
gd          }t          j        ||           d S )Nsatsun)r   r   
strawberry
        )dayflavoursalesyear)rx   rv   ru   ru   F)level
drop_levelr   )rt   ro   rx   )r   	set_indexr8   rB   assert_frame_equalrF   rc   re   rR   s       r)   test_xs_keep_levelzTestXS.test_xs_keep_levelm   s     U+++==B T**	 
 
 )...
/
/ 	 uEe<<bqb6
fh///}VUONN
fh/////r+   c                 r   t          t          j        d                              dd          t	          d          t	          d                    }|                                }|r\t          j                    5  d|                    d          d d <   d d d            n# 1 swxY w Y   t          j	        ||           d S |r~d}t          j        t          |          5  d|                    d          d d <   d d d            n# 1 swxY w Y   |                    d          dk                                    rJ d S t          j                    5  d|                    d          d d <   d d d            n# 1 swxY w Y   |                    d          dk                                    sJ d S )	Nr   r   r   r"      r   zC\nA value is trying to be set on a copy of a slice from a DataFramer4   )r   r%   arangereshaperanger7   rB   raises_chained_assignment_errorr8   r|   r=   r>   r   anyrE   )rF   using_array_managerrI   rJ   dmdf_origmsgs          r)   test_xs_viewzTestXS.test_xs_view}   sK    ry..q!44E!HHeTUhhWWW'')) 	*355 ! ! a! ! ! ! ! ! ! ! ! ! ! ! ! ! !!"g.....  
	* YC33??? ! ! a! ! ! ! ! ! ! ! ! ! ! ! ! ! !aB++-------355 ! ! a! ! ! ! ! ! ! ! ! ! ! ! ! ! !EE!HHN'')))))))s6   <B##B'*B'$DDDE??FFN)__name__
__module____qualname__rS   rf   rm   r~   r    r+   r)   r-   r-   &   s`        ') ') ')R1 1 1&+ + +0 0 0 * * * * *r+   r-   c                      e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            ddd	gd
gfg          d             Zd Ze	j
                            dddd  eddgd          fddd  edgd          fg          d             Ze	j
                            dd d g          d             Ze	j
                            dd d g          d             Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% Zd&S )'TestXSWithMultiIndexc                 x   g dg dg}t          t          |           }t          j        |ddg          }t	          t
          j                            d                              d          g d|	          }|	                    d
dd          }|j
        d d dgf         }t          j        ||           d S )N)rZ   rZ   bazr   rW   rW   quxr   )r   r   r   r   r   r   r   r   firstsecondr    r   )r      )r2   r3   rY   r"   )r   rZ   )r   r   r   ry   r6   r   )r'   zipr   from_tuplesr   r%   rh   ri   rj   r8   rk   rB   r|   )rF   arraystuplesr#   rc   re   rR   s          r)   test_xs_doc_examplez(TestXSWithMultiIndex.test_xs_doc_example   s     EDDDDD
 c6l##&vgx5HIIII!!!$$44V<<!//
 
 
 ~-@qII7111qc6?
fh/////r+   c                    t          dd          }t          d          }t          j        ||gddg          }t	          t
          j                            d                              t          |          df          |g d	          }|
                    dd
          }|j        dd d f         }t          j        ||           d S )Nia2ie2abcdedatesecidr   r   r   )XYZry   )r   r'   r   from_productr   r%   rh   ri   rj   lenr8   locrB   r|   )rF   datesidsr#   rc   re   rR   s          r)   test_xs_integer_keyz(TestXSWithMultiIndex.test_xs_integer_key   s    h))7mm'VW<MNNNI!!!$$44c%jj!_EEOO
 
 xv..6(AAA+&
fh/////r+   c                     |}|                     dd          }||j                            d          dk             }t          g dd          |_        t	          j        ||           d S )Nr   r   r   r   )rW   rZ   r   r   r   r^   )r8   r#   get_level_valuesr   rB   r|   rF    multiindex_dataframe_random_datarc   re   rR   s        r)   test_xs_levelz"TestXSWithMultiIndex.test_xs_level   so    -uH--bh//22e;<;;;'JJJ
fh/////r+   c                 d   t           j                            d                              d          }t	          g dg dg dgg dg dg dg          }t          ||          }t          |d	d         d
gdgg          }|                    dd          }t          j        ||           d S )Nr   )r   r   )r   pr   )r   r   y)r`   rz)r   r   r   r   r   ra   r   r   r   r`   r   	r%   rh   ri   rj   r   r   r8   rB   r|   )rF   r(   r#   rc   rR   re   s         r)   test_xs_level_eq_2z'TestXSWithMultiIndex.test_xs_level_eq_2   s    i##A&&66v>>#OO___oooF99iii3
 
 
 s%(((S1XsecU^<<<s!$$
fh/////r+   c                    |}|                                 }|                    dd          }|s|rd|d d <   n<d}t          j        t          |          5  d|d d <   d d d            n# 1 swxY w Y   t          j        ||           d S )Nr   r   r   rr   AA value is trying to be set on a copy of a slice from a DataFramer4   r7   r8   r=   r>   r   rB   r|   )rF   r   rI   rJ   rc   r   re   r   s           r)   test_xs_setting_with_copy_errorz4TestXSWithMultiIndex.test_xs_setting_with_copy_error   s     .''))uH-- 	"4 	F111II VC33???  qqq	              
b'*****s   A++A/2A/c                    |}|                                 }|                    dddg          }|s|rd|d d <   n<d}t          j        t          |          5  d|d d <   d d d            n# 1 swxY w Y   t          j        ||           d S )Nr   r   r   r   r   rr   r   r4   r   )rF   r*   rI   rJ   rc   r   re   r   s           r)   (test_xs_setting_with_copy_error_multiplez=TestXSWithMultiIndex.test_xs_setting_with_copy_error_multiple   s     (''))xv77 	"4 	F111II VC33???  qqq	              
b'*****s   A--A14A1z
key, level)r   r   r   r   c                 l   |}t          |gdz            }|j        j        du sJ t          |                    dd          gdz            }t	          |t
                    r%|                    t          |          |          }n|                    ||          }t          j        ||           d S )Nr   Fr   r   r   )	r	   r#   	is_uniquer8   
isinstancer'   tuplerB   r|   )rF   keyry   r   rP   rc   rR   re   s           r)   test_xs_with_duplicatesz,TestXSWithMultiIndex.test_xs_with_duplicates   s     1UGaK  x!U****588E8::;a?@@c4   	-UU5::UU33FFUU3eU,,F
fh/////r+   c           	         g d}t          |g d                              ddg          }t          dg dit          dt          j        d	d
gd                    }|                    dd          }t          j        ||           d S )N))r   r   r   )r   bbcder   )r   yzcde   )r   xbcde   )r   N   )r   zbcder   )r   ybcder   )a1a2cntr$   r   r   r   )r   r   r   r   r   r   r   r   ra   r   r   )r   r{   r   r%   nanr8   rB   r|   )rF   accrc   rR   re   s        r)   test_xs_missing_values_in_indexz4TestXSWithMultiIndex.test_xs_missing_values_in_index  s    
 
 
 s$7$7$7888BBD$<PP$$$%"&'7;$GGG
 
 

 s$''
fh/////r+   zkey, level, exp_arr, exp_indexr   lvl0c                     | d d ddf         S )Nr   r   r   r   s    r)   <lambda>zTestXSWithMultiIndex.<lambda>  s    Aaaa1fI r+   rZ   rW   lvl1r   c                     | d d ddf         S )Nr   r   r   r   s    r)   r   zTestXSWithMultiIndex.<lambda>  s    a1Q3i r+   c                 Z   t           j                            d                              d          }t	          ddgg dgg dg dgdd	g
          }t          ||          }|                    ||d          }t           ||          |          }	t          j        ||	           d S )Nr   )r   r   r   r   )rZ   rW   helloworld)r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )
rF   r   ry   exp_arr	exp_indexr(   r#   rc   re   rR   s
             r)   test_xs_named_levels_axis_eq_1z3TestXSWithMultiIndex.test_xs_named_levels_axis_eq_1  s     i##A&&66v>>#J @ @ @A<<.6"
 
 

 sE***s%a00WWS\\9===
fh/////r+   indexerc                 4    |                      dddg          S )Nr   r   r   r   r8   rc   s    r)   r   zTestXSWithMultiIndex.<lambda>/  s    ruuXeV_u== r+   c                 V    |                      d                               dd          S )Nr   r   r   r   r   r   s    r)   r   zTestXSWithMultiIndex.<lambda>0  s     ruuSzz}}Qf}55 r+   c                     |}g dg}t          dgdggdgdggddg          }t          ||t          d          	          } ||          }t          j        ||           d S )
Nr   r   r   r   r   r   r   r!   r"   r   r   r'   rB   r|   rF   r   r*   rc   expected_valuesexpected_indexrR   re   s           r)   test_xs_level_multiplez+TestXSWithMultiIndex.test_xs_level_multiple,  s     (DDDE#ED6?A3*UG<L
 
 
 >4==
 
 
 
fh/////r+   c                 0    |                      dd          S )Nr   r   r   r   r   s    r)   r   zTestXSWithMultiIndex.<lambda>@  s    ruuSu22 r+   c                 ,    |                      d          S )Nr   r   r   s    r)   r   zTestXSWithMultiIndex.<lambda>@  s    ruuSzz r+   c                     |}g dg dg}t          ddgddgddggd	d
gd	d
gd
d	ggg d          }t          ||t          d                    } ||          }t          j        ||           d S )Nr   r   r   r   r   r   r   r   r   r   )r   r   r   r   r!   r"   r   r   s           r)   test_xs_level0z#TestXSWithMultiIndex.test_xs_level0?  s     (777555
 $#J$!Q8q6Aq6Aq6****
 
 

 >4==
 
 
 
fh/////r+   c                     |}|                     d          j        }|j        d         }t          j        ||           d S )NrZ   r   r   )r8   valuesrB   assert_almost_equalr   s        r)   test_xs_valuesz#TestXSWithMultiIndex.test_xs_valuesT  s?    -~&&-9Q<
vx00000r+   c                 x    |}|                     d          }|j        d         }t          j        ||           d S )Nr   )r8   r   rB   rC   r   s        r)   test_xs_loc_equalityz)TestXSWithMultiIndex.test_xs_loc_equalityZ  s=    -~&&6.)
vx00000r+   c                    t          g dddggg dg dg          }t          t          j                            d                              d          |	          }|t          u r|d         }|j        d
d                              d          }|	                    t          dd d f                   }t          j        ||           |j        t          dd d f                  }t          j        ||           d S )N))rW   rZ   r   )rW   r   r   rW   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )   r   ra   r   )r   r   r%   rh   ri   rj   r   rk   	droplevelr8   r   rB   assert_equalr   )rF   frame_or_seriesr#   objrR   re   s         r)   +test_xs_IndexSlice_argument_not_implementedz@TestXSWithMultiIndex.test_xs_IndexSlice_argument_not_implemented`  s
    MMMPQSTvV%%%'9'9'9:
 
 

 	--a00@@HHPUVVVf$$a&C8BCC=**1--
#4aaa#7899
)))$5qqq$89:
)))))r+   c                     t          dg di          }|t          u r|d         }d}t          j        t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr2   r   r   r   zIndex must be a MultiIndexr4   r   asr   )r   r   r=   r>   	TypeErrorr8   )rF   r   r   r   s       r)   test_xs_levels_raisesz*TestXSWithMultiIndex.test_xs_levels_raisest  s    iii())f$$c(C*]9C000 	" 	"FF1DF!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   A''A+.A+c                    t          j        g dddg          }t          g dg|          }|                    ddd	
          }t          ddggt          j        ddgddg                    }t	          j        ||           d S )N)r   r   r   r   )r   r   level1level2r   r  r   r   r   Fr6   rz   r   r  r	  )r   r   r   r8   rB   r|   )rF   mirc   re   rR   s        r)   "test_xs_multiindex_droplevel_falsez7TestXSWithMultiIndex.test_xs_multiindex_droplevel_false}  s    #00088L
 
 
 			{B///su55VH*Z(80D  
 
 
 	fh/////r+   c                     t          g dgt          g d                    }|                    ddd          }t          ddgi          }t          j        ||           d S )Nr  r_   r   r   r   Fr  )r   r   r8   rB   r|   r}   s       r)   test_xs_droplevel_falsez,TestXSWithMultiIndex.test_xs_droplevel_false  si    			{E///,B,BCCCsu55cA3Z((
fh/////r+   c                 
   t          g dgt          g d                    }|                    ddd          }t          j        |j        d d df         j        |j        d d df         j                  sJ t          j        |          5  d	|j        d
<   d d d            n# 1 swxY w Y   |rt          ddgi          }nt          dd	gi          }t          j	        ||           t          g dgt          g d                    }|                    ddd          }d	|j        d
<   |rt          ddgi          }n'|rt          dd	gi          }nt          ddgi          }t          j	        ||           d S )Nr  r_   r   r   r   Fr  r   r   )r   r   )r   g      @r   )
r   r   r8   r%   shares_memoryrk   _valuesrB   rD   r|   )rF   r   rI   rJ   rc   re   rR   s          r)   test_xs_droplevel_false_viewz1TestXSWithMultiIndex.test_xs_droplevel_false_view  s    			{E///,B,BCCCsu55AAAqD 1 927111a4=;PQQQQQ"#566 	 	BGDM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	- #s,,HH !#s,,H
fh/// ooo0F0FGGGsu55 		- #s,,HH  	- #s,,HH !#s,,H
fh/////s   B&&B*-B*c                     t          j        g d          }t          g dg dg|          }t          j        t
          d          5  |                    ddd	
           d d d            d S # 1 swxY w Y   d S )N))r   mr   )r   nr   )r   or`   r  )r   r   r   r   r   r4   )r   r   Fr   )rz   r6   )r   r   r   r=   r>   r?   r8   )rF   r  rc   s      r)   $test_xs_list_indexer_droplevel_falsez9TestXSWithMultiIndex.test_xs_list_indexer_droplevel_false  s    #$W$W$WXX			999-r:::]83/// 	8 	8EE*QE777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   	A//A36A3N)r   r   r   r   r   r   r   r   r   r=   markparametrizer   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r+   r)   r   r      s6       0 0 0*0 0 00 0 0	0 	0 	0+ + +*+ + +$ [\,=(?T+UVV0 0 WV00 0 0* [(&--uueU^&/Q/Q/QRF//u61J1J1JK	
 0 0 0 [==55	
 
0 
0 
0 [224I4IJ 0 0 0$1 1 11 1 1* * *(" " "0 0 00 0 0"0 "0 "0H8 8 8 8 8r+   r   )r@   numpyr%   r=   pandas.errorsr   pandasr   r   r   r   r   r	   pandas._testing_testingrB   pandas.tseries.offsetsr
   fixturer*   r-   r   r   r+   r)   <module>r#     s5   				      . . . . . .                      ' ' ' ' ' ' > > > n* n* n* n* n* n* n* n*be8 e8 e8 e8 e8 e8 e8 e8 e8 e8r+   