
    PiH                         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
 d dlmZ d Z G d d          Z G d d          Zd Zd	 Zd
 Zd ZdS )    N)	DataFrame
MultiIndexSeries
date_rangeisnanotnac                     | |k    sJ d S N )abs     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyassert_equalr      s    666666    c                       e Zd ZedfdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zej                            d          d             Zd Zd Zd Zd Zd ZdS )TestMultiIndexSetItemNc                 T    ||j         |<   |j         |         }||} |||           d S r
   )loc)selftargetindexersvalue
compare_fnexpectedresults          r   checkzTestMultiIndexSetItem.check   s=    $
8H%H
68$$$$$r   c                 @   g d}t          j        t          j        dd          t          j        dd          gddg          }d\  }}t	          t          j        ||	          }|                     |||fd
fd           t	          d||	          }|                     |||fd
fd           t	          ||	          }|                     |||fd
fd           t	          d||	          }|                     |||fd
ft          j        d          d           d S )N)Awlr   xXdprofitr   d   P   timefirmnames)r      columnsindexr"   )r   r   r   i   r+      )r   r   r   r   )r   from_productnparanger   nanr   array)r   colsr.   tndfs         r   test_setitem_multiindexz-TestMultiIndexSetItem.test_setitem_multiindex   sT   <<<'Yq#	!R 0 01&&9I
 
 
 1F
 
 

 	

"A}A
>>>tT777

"A}A
>>>t5111

"A}A
>>> tT777

!fc](1++	 	 	
 	
 	
 	
 	
r   c                    t          t          j        d                              dd          d                    d          t
                    }d|d<   |d         d	z  d
k    }ddg}|d         |j        ||f<   t          dg dddg          }t          j        |j        ||f         |           | 	                    |||f|d         t          j        |           d S )N      z	A,B,C,D,E,r-   dtypec   Fr   r+   r   BCg     X@)r   r+      r.   r-   r   r   r   r   r   )
r   r2   r3   reshapesplitfloatr   tmassert_frame_equalr   )r   r9   row_selectioncol_selectionoutputs        r   test_setitem_multiindex2z.TestMultiIndexSetItem.test_setitem_multiindex2:   s    IbMM!!!Q''1B1B31G1Gu
 
 
 33!q(c
/1#w}m+,4yyy3*EEE
bf]M%ABFKKK

#]3S', 	 	
 	
 	
 	
 	
r   c           	         t          j        g dt          ddd          g          }t          j        ddgt          dd	d          g          }t          t          j                            d
                              d          ||          }t          j        ddgt          ddd          g          }t          j        ddgt          dd	d          g          }t          t          j                            d
                              d          ||          }|                     |||f|t          j
                   t          t          j                            d
                              d          ||          }|                     ||t          d d d           f|t          j
                   |                                }|                     ||j        |j        f|t          j
        |           d S )Nr   rC   rD   z
2015-01-01z
2015-04-01MS)freqfoobarz
2016-01-01z
2016-02-01r+   )   rE   rF   r   z
2015-02-01)r+   r+   )r   r   r   r   )r+   rE   rG   )r   r1   r   r   r2   randomdefault_rngfrom_arraysr   rK   rL   slicecopyr.   r-   )r   idxr6   r9   subidxsubcolsvalsr\   s           r   test_setitem_multiindex3z.TestMultiIndexSetItem.test_setitem_multiindex3M   s*   %__j|$OOOP
 
 &U^ZlNNNO
 
 I!!!$$++G44C
 
 
 '3ZL,TJJJK
 
 (U^ZlNNNO
 
 I!!!$$++F3367
 
 
 	

g&,	 	 	
 	
 	
 I!!!$$++F3364
 
 
 	

eD$556,	 	 	
 	
 	
 wwyy

h
+, 	 	
 	
 	
 	
 	
r   c                    t          j        g d          t          j        g d          t          j        ddd          g}t          t           j                            d                              d          |g d	                                          }|j        d
g         dz  }|	                                }|j        d
gxx         dz  cc<   t          j        |j        d
g         |           d}t          j        t          |          5  |j        d
xx         dz  cc<   d d d            d S # 1 swxY w Y   d S )N)rV   rV   bazquxrd   rV   )onetwore   re   rf   re   r      r/   r+   )rg   r0   rR   rF   rV   zAcannot align on a multi-index with out specifying the join levelsmatch)r2   r5   r3   r   rX   rY   standard_normal
sort_indexr   r\   rK   rL   pytestraises	TypeError)r   arraysdf_origr   r9   msgs         r   test_multiindex_setitemz-TestMultiIndexSetItem.test_multiindex_setitem~   s    H???@@H???@@IaA
 I!!!$$44V<<#OO
 
 
 *,,	 	 ;w'!+\\^^
w1
bfeWox888 R]9C000 	 	F5MMMQMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   D44D8;D8c           
      *   t          j        ddddddddi          }t          j        |j        g d	          |_        |                                }|j        g d
xx         dz  cc<   t          j        }|                                }|j	        |d d d d df         d d fxx         dz  cc<   t          j        ||           |                                }|j	        |d d d d df         dfxx         dz  cc<   t          j        ||           d S )Npricer+   rE   r/   r=   r   ))DECoalStock)ru   Gasrw   )ru   ElecDemand)FRrx   rw   )r{   SolarSupIm)r{   Windr}   )SitComTyper)   )r   r/   r0   rw   )r   	from_dictr   from_tuplesr.   r\   ilocpd
IndexSlicer   rK   rL   )r   rp   r   r]   r9   s        r   test_multiindex_setitem2z.TestMultiIndexSetItem.test_multiindex_setitem2   sQ    %-.,-./,-./-. 	
 
 #.M!7!7!7
 
 
 <<>>iii   A%   m\\^^
s111aaa=!111$%%%*%%%
b(+++\\^^
s111aaa=!7*+++q0+++
b(+++++r   c                    t          t          j                            d                              ddd                              dd          t          d          g dg d	g
          }t          j        |d<   t          j        ddg          }||j	        d<   t          j        |j	        d         t          |ddgd                     d S )Nr+   r=   
   	   sizer0   abcrE   rE      r   r   rW   r,   r#                 ?)rE   r#   r   )r.   name)r   r2   rX   rY   integersrH   listr4   r5   r   rK   assert_series_equalr   )r   r9   arrs      r   test_multiindex_assignmentz0TestMultiIndexSetItem.test_multiindex_assignment   s     I!!!$$--a!-<<DDQJJKK99kkk*
 
 

 &3hSz""v
rvf~vc!Rs/S/S/STTTTTr   c                 L   t          j        ddg          }t          t           j                            d                              ddd                              dd          t          d	          g d
g dgt           j                  }||j	        d<   t          |ddgdd          }|j	        d         }t          j        ||           t          j        t          d          5  |dz   |j	        d<   d d d            n# 1 swxY w Y   |                    ddi          }|dz   |j	        d<   d|j	        d<   t          dddgdd          }t          j        |j	        d         |           d}t          j        t"          |          5  g d|j	        d<   d d d            n# 1 swxY w Y   t          j        t"          |          5  dg|j	        d<   d d d            n# 1 swxY w Y   dg|j	        ddgf<   |j	        d         dk                                    sJ d S )Nr   r   r+   r=   r   r   r   r0   r   r   r   )r-   r.   r@   )rE   cr   r   int64)r.   r   r@   zInvalid valuerh   g      ?float64z@Must have equal len keys and value when setting with an iterable)r   r/   r+   r0   r   rE   )r2   r5   r   rX   rY   r   rH   r   r   r   r   rK   r   rl   rm   rn   astype
ValueErrorall)r   r   r9   expr   rq   s         r   'test_multiindex_assignment_single_dtypez=TestMultiIndexSetItem.test_multiindex_assignment_single_dtype   s    hSz""I!!!$$--a!-<<DDQJJKK99kkk*(	
 
 
 vSBcAAA
vs+++ ]9O<<< 	' 	' 3YBF6N	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' YYY'((sv vR2wS	BBB
rvf~s333 Q]:S111 	* 	*)\\BF6N	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* ]:S111 	! 	!SBF6N	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!
 3q3%xv!#((*******s6   *DDDF((F,/F,G&&G*-G*c                 V   d}d}d t          t          t          j        |                                                    D             }|d d         }t          t          j                            d                              d||f          t          j	        |          }|
                    |                                          }|                    |d d         	          }t          j        |d
<   |D ]0\  }}t          j        |j        d                   }	|	|j        |d
f<   1d S )Nr%   r   c                     g | ]}d |z   S )r   r   ).0nums     r   
<listcomp>z>TestMultiIndexSetItem.test_groupby_example.<locals>.<listcomp>   s    QQQ3S3YQQQr   r=   r+   r   )r@   r-   rE   )levelnew_colr   )mapstrr2   r3   tolistr   rX   rY   r   r   	set_indexrk   groupbyr4   shaper   )
r   NUM_ROWSNUM_COLS	col_names
index_colsr9   grpr   df2new_valss
             r   test_groupby_examplez*TestMultiIndexSetItem.test_groupby_example   s   QQ#c29X3F3F3M3M3O3O*P*PQQQ	rr]
I!!!$$--ax6J-KK(
 
 

 \\*%%0022jjz"1"~j..9  	/ 	/ID#y1..H&.BF4?##	/ 	/r   c                 &   |}|d         }t           j        |d<   t          |j        dd                                                   sJ t          |j        d d                                                   sJ t          |j        dd                                                    sJ t           j        |d<   t          |j        d                   sJ t          j        t          d          5  |d          d d d            d S # 1 swxY w Y   d S )	Nr   )  r0   *   A   )r   r0   r   1   49rh   )
r2   r4   r   valuesr   r   r   rl   rm   KeyError)r   /multiindex_year_month_day_dataframe_random_dataymdss       r   test_series_setitemz)TestMultiIndexSetItem.test_series_setitem  s@   =HV'
AHRUO$$((*****QXcrc]##'')))))QXbcc]##'')))))+AF2J]84000 	 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   0	DD
D
c                    |}|j                                         }|j                                        }||dk             }|                    |dk              }t	          j        ||           d||dk    <   d||dk    <   t	          j        |j        |           d||dk    <   d||dk    <   t	          j        |j        |           d||d d         dk     <   t          j        |d d         |d d         dk     d           t	          j        |j        |           t          j
        t          d          5  d||dz  <   d d d            d S # 1 swxY w Y   d S )Nr   r=   r+   zboolean values onlyrh   )Tr\   r   whererK   rL   assert_almost_equalr2   putmaskrl   rm   rn   )r    multiindex_dataframe_random_dataframer9   r   r   r   s          r   "test_frame_getitem_setitem_booleanz8TestMultiIndexSetItem.test_frame_getitem_setitem_boolean  s   0W\\^^!!BF88BF##
fh///26
vz
ry&11127v{
ry&111 2crc7Q;

6#2#;ssa333
ry&111]9,ABBB 	 	BrAvJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   7	EEEc                 <   ddgg dg}g dg dg}t          ||d dg          }t          dg d	i|
          }|j        d d df         }t          j        |d         |           |j        |j        dd         df         }t          j        |d         dd         |           |j        d d d d f         }t          j        ||           |}d|j        d d df<   d|d<   t          j        ||           d|j        d d d d f<   t          j        ||           d S )Nt1t2r   r   r   )r   r   r   r/   r/   )r   r/   r+   r   r/   id)codeslevelsr*   r   )r/   r+   r0      r   r.   r/   r0   r   )r   r   r   rK   r   r.   rL   )r   r   r   midxr9   r   s         r   %test_frame_getitem_setitem_multislicez;TestMultiIndexSetItem.test_frame_getitem_setitem_multislice/  sN   ,0 ///2fT4LIII1>>>7
#
r'{F3331w./
r'{1Q3/888111
b&)))qqq'zw
b&)))qqq!!!t
b&)))))r   c                    t          t          j                            d                              d          g dg dg          }|                                }|d         |d<   t          j        |d         |d                    |                                }|d         j        |d<   t          j        |d         |d                    d S )Nr+   )r   rE   )r   r   r   r   )r   r/   r   r/   r-   r   r   )	r   r2   rX   rY   rj   r\   rK   rL   r   )r   r9   cps      r   test_frame_setitem_multi_columnz5TestMultiIndexSetItem.test_frame_setitem_multi_columnF  s    I!!!$$44W==)))<<<8
 
 

 WWYYS'3
bgr#w/// WWYYS'.3
bgr#w/////r   c                    t          j        g d          }t          g d|          }d|d<   |d         j        dk                                    sJ g d|d<   |d         |d<   |d	         }|d
         }|d         }t          j        ||d           t          j        ||d           |j        d	k    sJ |j        d
k    sJ |j        dk    sJ d S )N)r   1r   2rC   r   )r/   r0   r=   rF   r   r   r   r/   r+   r0   r   r   r   F)check_names)r   r   r   r   r   rK   r   r   )r   r-   r9   	sliced_a1	sliced_a2	sliced_b1s         r    test_frame_setitem_multi_column2z6TestMultiIndexSetItem.test_frame_setitem_multi_column2U  s    ()M)M)MNNYYY888 33!#((***** !yy8X,3xL	xL	xL	
y)GGGG
y)GGGG~++++~++++~++++++r   c                     |}|d d         }|j         dg df         }|j         d         g d         }t          j        ||           d S )Nr=   )r   r/   rg   rR   )r   rK   r   )r   r   r   r9   r   r   s         r   #test_loc_getitem_tuple_plus_columnsz9TestMultiIndexSetItem.test_loc_getitem_tuple_plus_columnsl  sY     >!Wooo566*%ooo6
vx00000r   z.ignore:Setting a value on a view:FutureWarningc                    t          g dddggg dg dg          }t          t          j                            d                              t          |          df          |g d	          }t          j        ||          }|j	        d
d         }|
                    |j        dd                    }t          j        ||           d|j	        d
d<   |j	        d
d         dk    j                                        sJ d S )Nr   r/   r+   r   r+   )r   r   r/   r/   r+   r+   )r   r/   r   r/   r   r/   )r   r   rE   r   r   r   r#   rF   r/   r   )r   r   r2   rX   rY   rj   lenrK   get_objr   reindexr.   r   r   r   )r   frame_or_seriesr.   objresr   s         r   'test_loc_getitem_setitem_slice_integersz=TestMultiIndexSetItem.test_loc_getitem_setitem_slice_integersw  s   II1v&/A/A/ACUCUCU.V
 
 
 I!!!$$44c%jj!_EE(((
 
 

 jo..gaclkk#)ABB-((
S!!!!!!)--///////r   c                 P   |}|j         }|d         }||                                k    |d<   t          j        |d         ||                                k               |                    dg          }t          j        |d         ||                                k               d S )N)rU   rf   r   )r   medianrK   r   r   )r   r   r   dftr   	reindexeds         r   test_setitem_change_dtypez/TestMultiIndexSetItem.test_setitem_change_dtype  s    0g

NL
s<0!ahhjj.AAA KK(8K99	
y6AHHJJGGGGGr   c                     |}|j         g d         }d|j        |<   |j        |         j        dk                                    sJ |                                }|d         }d||<   t          j        ||           d S )N)r/   rE   r=   rA   rC   a   )r.   r   r   r   r\   rK   rL   )r   r   r   subsetframe_originalcols         r   test_set_column_scalar_with_locz5TestMultiIndexSetItem.test_set_column_scalar_with_loc  s    0YYY'	&	&!(B.3355555CjF
e^44444r   c                 *   t          g dg dg dgt          d                    }|                    ddg          }t          j        dg          }d	|j        |d
f<   |                    d          d
         d	k                                    sJ d S )N)r/   r/   r!   r"   )r/   r/   yY)r/   r+   zZABCDr   r   rC   r/   r/   _rD   )r   r   r   r   r   r   xsr   )r   r9   mis      r   test_nonunique_assignment_1750z4TestMultiIndexSetItem.test_nonunique_assignment_1750  s    ///1A1A1ABDQWLL
 
 
 \\3*%%#VH--r3wfc"c)..0000000r   c                 `   t          j        g d          }t          t          j        d                              d          |t                    }|j                                        }|d         	                    t          j
                  |d<   t          j        |j        |           d S )N)r   r   r   r0   )r/   r0   r?   r   )r   r   r   r2   r3   rH   objectr.   r\   r   r   rK   assert_index_equal)r   r6   r9   r.   s       r    test_astype_assignment_with_dupsz6TestMultiIndexSetItem.test_astype_assignment_with_dups  s     %&J&J&JKKry||++F33TPPPS'..,,3
bh.....r   c                     t          j        g dddg          }t          g d|dg          }t          j        dd	d
          |j        d<   t          dg di|          }t          j        ||           d S )N))r   r   )r   r!   )r   r#   l1l2r)   r   edatar.   r-   rA   e   r   )r@   )r   r  )rA   r/   r%   r   )r   r   r   r2   r3   r   rK   rL   )r   r.   r9   r   s       r   test_setitem_nonmonotonicz/TestMultiIndexSetItem.test_setitem_nonmonotonic  s    &000t
 
 
 IIIUSEBBB9RG<<<xc<<<0>>>
b(+++++r   )__name__
__module____qualname__r   r   r:   rP   ra   rr   r   r   r   r   r   r   r   r   r   r   rl   markfilterwarningsr   r   r   r  r  r  r   r   r   r   r      s       8Dt % % % %
 
 
<
 
 
&/
 /
 /
b  2, , ,>U U U)+ )+ )+V/ / /,     2* * *.0 0 0, , ,.	1 	1 	1 [ PQQ0 0 RQ0&	H 	H 	H5 5 5
1 
1 
1/ / /, , , , ,r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )"TestSetitemWithExpansionMultiIndexc                    g dg dg dg}t          t          |           }t          j        |          }t	          t
          j                            d                              d          |          }|	                                }|	                                }g d|d<   g d|d	<   t          j        ||           d S )
N)r   topr  routine1r  routine2) ODr!  result1result2r"  )r   wxwyr   r   r   r+   )rE   rg   r   )r/   r+   r0   rE   r   )r   r   r   )sortedzipr   r   r   r2   rX   rY   rj   r\   rK   rL   )r   ro   tuplesr.   r9   r   r   s          r   #test_setitem_new_column_mixed_depthzFTestSetitemWithExpansionMultiIndex.test_setitem_new_column_mixed_depth  s    CCC===(((
 V%%&v..ry,,Q//??GGQVWWW7799"lls ,
fh/////r   c                     t          j        g d          }t          ddgddgddgg|          }t          ddd	          }||d
<   |d
                                                                         sJ d S )N))1a2a)r+  2b)r+  2cr/   r+   r0   rE   r=   rg   r   )r  )r/   r+   new)r   r   r   r   r   r   )r   mixr9   r   s       r   test_setitem_new_column_all_nazATestSetitemWithExpansionMultiIndex.test_setitem_new_column_all_na  s    $%O%O%OPPAAA/s;;;Aq))**5	%y~~##%%%%%%%r   c                 "   t          j        dgg d          }t          g dg|g d          }|j        d         |j        d<   t          j        ddgg d          }t          g dg dg|g d          }t	          j        ||           d S )Nr   )i1i2i3r)   )r         rR   r  )r   r   r   r   r   r   r   rK   rL   )r   r  r9   mi_expectedr   s        r   )test_setitem_enlargement_keep_index_nameszLTestSetitemWithExpansionMultiIndex.test_setitem_enlargement_keep_index_names  s    #YK7I7I7IJJJ\\\N"oooNNNF9-y ,	"*<*<*<
 
 
 ,,-#OO
 
 

 	b(+++++r   c                    t          j        g d          }t          g d|          }ddg|j        dd d f<   t          j        g d          }t          dd	gd
dgddgddgddgg|ddg          }t	          j        ||d           d S )N)r   a1r   a2rC   b1rC   N))r         @)r         @)       @      @)      @      @r   g      (@g      *@r   N)r<  r>  r@  rB  rI  r   rC  r   rD  rE  rF  rG  rH  r   r/   rF   F)check_index_typer8  )r   r.   r9   expected_indexr   s        r   -test_setitem_enlargement_multiindex_with_nonezPTestSetitemWithExpansionMultiIndex.test_setitem_enlargement_multiindex_with_none  s     &@@@
 
 GGGuUUU"&{AAA~#/MMM
 
 3Z#sc3Z#sdD\J F
 
 

 	b(UCCCCCCr   N)r  r  r  r)  r1  r:  rL  r   r   r   r  r    sU        0 0 0"& & &, , ,D D D D Dr   r  c                     | j         }t          j        t          d          5  d|d         j        d d <   d d d            n# 1 swxY w Y   |d         j        dk                                    sJ d S )Nz	read-onlyrh   r   rU   )r   rl   rm   r   r   r   r   r9   s     r   test_frame_setitem_view_directrO     s     
*	+B	z	5	5	5    5	                             uI!&&(((((((s   AA	Ac                     | j         }t          j                    5  d|d         d<   d d d            d S # 1 swxY w Y   d S Nr+   rU   re   )r   rK   raises_chained_assignment_errorrN  s     r   test_frame_setitem_copy_raisesrS  	  s    	)	+B		+	-	-  5	%                 s   488c                     | j         }|}|                                }t          j                    5  d|d         d<   d d d            n# 1 swxY w Y   t          j        ||           d S rQ  )r   r\   rK   rR  rL   )r   r   r   r9   s       r    test_frame_setitem_copy_no_writerU    s    ,.EH	B		+	-	-  5	%               "h'''''s   A		AAc                  @   t          g dg dddd                              g d          } t          d| j                            d          	          }|                                 }||d
<   |                                 }d|d
<   t          j        ||           d S )Nr   )r0   rE   r=   rg   r   r   r   r   r   r   r#   )r   r   r   r.   	droplevelr\   rK   rL   )r9   serr   r   s       r   %test_frame_setitem_partial_multiindexrY    s    			
 	

 
 i    "(,,S11
2
2
2CWWYYFF3KwwyyHHSM&(+++++r   )numpyr2   rl   pandasr   r   r   r   r   r   r   pandas._testing_testingrK   r   r   r  rO  rS  rU  rY  r   r   r   <module>r^     sA                                  m, m, m, m, m, m, m, m,`9D 9D 9D 9D 9D 9D 9D 9Dx) ) )  ( ( (, , , , ,r   