a
    é´«j€M  ã                   @   s°   d dl Zd dlZd dlmZ d dlm  m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d„ ZG dd„ dƒZG dd	„ d	ƒZejd
d„ ƒZdd„ Zdd„ Zdd„ ZdS )é    N)ÚSettingWithCopyError)Ú	DataFrameÚ
MultiIndexÚSeriesÚ
date_rangeÚisnaÚnotnac                 C   s   | |ksJ ‚d S ©N© )ÚaÚbr
   r
   úl/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyÚassert_equal   s    r   c                   @   sÌ   e Zd Zedfdd„Zdd„ Zdd„ Zdd	„ Zej	d
d„ ƒZ
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej d ¡d!d"„ ƒZd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ ZdS )-ÚTestMultiIndexSetItemNc                 C   s.   ||j |< |j | }|d u r |}|||ƒ d S r	   )Úloc)ÚselfÚtargetÚindexersÚvalueÚ
compare_fnÚexpectedÚresultr
   r
   r   Úcheck   s
    

zTestMultiIndexSetItem.checkc                 C   sÚ   g d¢}t jt dd¡t dd¡gddgd�}d\}}ttj||d	�}| j|||fd
fdd� td||d	�}| j|||fd
fdd� t||d	�}| j|||fd
fdd� td||d	�}| j|||fd
ft d¡dd� d S )N)ÚAÚwÚlr   ÚxÚXÚdZprofitr   éd   éP   ÚtimeZ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Údfr
   r
   r   Útest_setitem_multiindex   s,    ÿý
üz-TestMultiIndexSetItem.test_setitem_multiindexc                 C   s¢   t t d¡ dd¡d d¡td�}d|d< |d d	 d
k}ddg}|d |j||f< t dg d¢ddgd�}t |j||f |¡ | j	|||f|d tj|d� d S )Né   é   z	A,B,C,D,Eú,©r&   Údtypeéc   ÚFr   r$   r   ÚBÚCg     ÀX@)r   r$   é   ©r'   r&   ©r   r   r   r   r   )
r   r+   r,   ÚreshapeÚsplitÚfloatr   ÚtmÚassert_frame_equalr   )r   r2   Zrow_selectionZcol_selectionÚoutputr
   r
   r   Útest_setitem_multiindex2=   s     ÿûz.TestMultiIndexSetItem.test_setitem_multiindex2c                 C   s&  t  g d¢tdddd�g¡}t  ddgtdd	dd�g¡}ttj d
¡ d¡||d�}t  ddgtdddd�g¡}t  ddgtdd	dd�g¡}ttj d
¡ d¡||d�}| j|||f|t	j
d� ttj d
¡ d¡||d�}| j||td d d ƒf|t	j
d� | ¡ }| j||j|jf|t	j
|d� d S )N©r   r;   r<   z
2015-01-01z
2015-04-01ZMS)ÚfreqÚfooÚbarz
2016-01-01z
2016-02-01r$   )é   r=   r>   r   z
2015-02-01)r$   r$   )r   r   r   r   )r$   r=   r?   )r   r*   r   r   r+   ÚrandomÚdefault_rngZfrom_arraysr   rC   rD   ÚsliceÚcopyr'   r&   )r   Úidxr/   r2   ZsubidxZsubcolsÚvalsrO   r
   r
   r   Útest_setitem_multiindex3P   sR    ÿÿÿÿÿÿüÿü
ûz.TestMultiIndexSetItem.test_setitem_multiindex3c                 C   sÔ   t  g d¢¡t  g d¢¡t  ddd¡g}tt j d¡ d¡|g d¢d	� ¡ }|jd
g d }| 	¡ }|jd
g  d9  < t
 |jd
g |¡ d}tjt|d��" |jd
  d9  < W d   ƒ n1 sÆ0    Y  d S )N)rJ   rJ   ZbazÚquxrS   rJ   )ÚoneÚtworT   rT   rU   rT   r   é   r(   r$   )rV   r)   rG   r>   rJ   zAcannot align on a multi-index with out specifying the join levels©Úmatch)r+   r.   r,   r   rL   rM   Ústandard_normalÚ
sort_indexr   rO   rC   rD   ÚpytestÚraisesÚ	TypeError)r   ÚarraysÚdf_origr   r2   Úmsgr
   r
   r   Útest_multiindex_setitemƒ   s     ýý
z-TestMultiIndexSetItem.test_multiindex_setitemc              
   C   sÖ   t  ddddddddœi¡}tj|jg d¢d	�|_| ¡ }|jg d
¢  d9  < tj}| ¡ }|j	|d d …d d …df d d …f  d9  < t
 ||¡ | ¡ }|j	|d d …d d …df df  d9  < t
 ||¡ d S )NZpricer$   r=   r(   r5   r   ))ÚDEZCoalÚStock)rb   ÚGasrc   )rb   ZElecZDemand)ÚFRrd   rc   )re   ZSolarÚSupIm)re   ZWindrf   )ZSitZComÚTyper"   )r   r(   r)   rc   )r   Ú	from_dictr   Úfrom_tuplesr'   rO   ÚilocÚpdZ
IndexSlicer   rC   rD   )r   r_   r   rP   r2   r
   r
   r   Útest_multiindex_setitem2�   s.    úÿÿ
ÿ,(z.TestMultiIndexSetItem.test_multiindex_setitem2c                 C   s€   t tj d¡jdddd� dd¡tdƒg d¢g d	¢gd
�}tj|d< t ddg¡}||j	d< t
 |j	d t|ddgdd�¡ d S )Nr$   r5   é
   é	   ©Úsizer)   Úabc©r=   r=   é   ©rs   rm   rK   r%   r   ç        ç      ð?)r=   r   rs   )r'   Úname)r   r+   rL   rM   Úintegersr@   Úlistr-   r.   r   rC   Úassert_series_equalr   )r   r2   Úarrr
   r
   r   Útest_multiindex_assignment¼   s    ý

z0TestMultiIndexSetItem.test_multiindex_assignmentc           	      C   s4  t  ddg¡}tt j d¡jdddd� dd¡td	ƒg d
¢g d¢gt jd�}|d j	d d… j
}||jd< t|ddgddd�}|jd }t ||¡ |s¦t ||j
¡ tjtdd�� |d |jd< W d   ƒ n1 sØ0    Y  |jd }|d }t ||¡ t |¡� d|jd< W d   ƒ n1 �s,0    Y  tdddgddd�}t |jd |¡ d}tjt|d�� g d¢|jd< W d   ƒ n1 �s”0    Y  tjt|d�� dg|jd< W d   ƒ n1 �sÐ0    Y  t |¡�" dg|jddgf< W d   ƒ n1 �s0    Y  |jd dk ¡ �s0J ‚d S )Nru   rv   r$   r5   rm   rn   ro   r)   rq   rr   rt   )r&   r'   r8   Úc)r=   r}   rs   Úint64)r'   rw   r8   zitem of incompatible dtyperW   g      à?Úfloat64z@Must have equal len keys and value when setting with an iterable)r   r(   r$   r)   r   r=   )r+   r.   r   rL   rM   rx   r@   ry   r~   rj   Úvaluesr   r   rC   rz   Zassert_numpy_array_equalZassert_produces_warningÚFutureWarningÚassert_cow_warningr[   r\   Ú
ValueErrorÚall)	r   Úusing_copy_on_writeÚwarn_copy_on_writer{   r2   ÚviewÚexpr   r`   r
   r
   r   Ú'test_multiindex_assignment_single_dtypeË   sB    ü

ÿ,
*.,2z=TestMultiIndexSetItem.test_multiindex_assignment_single_dtypec           
      C   s´   d}d}dd„ t tt |¡ ¡ ƒD ƒ}|d d… }ttj d¡jd||fd�tj	|d�}| 
|¡ ¡ }|j|d d	… d
�}tj|d< |D ]&\}}t |jd ¡}	|	|j|df< qˆd S )Nr   rm   c                 S   s   g | ]}d | ‘qS )r   r
   )Ú.0Únumr
   r
   r   Ú
<listcomp>  ó    z>TestMultiIndexSetItem.test_groupby_example.<locals>.<listcomp>r5   r$   ro   )r8   r&   r=   )ÚlevelZnew_colr   )ÚmapÚstrr+   r,   Útolistr   rL   rM   rx   r~   Ú	set_indexrZ   Úgroupbyr-   Úshaper   )
r   ZNUM_ROWSZNUM_COLSZ	col_namesZ
index_colsr2   Úgrprw   Zdf2Únew_valsr
   r
   r   Útest_groupby_example  s    ý
z*TestMultiIndexSetItem.test_groupby_examplec                 C   s  |}|d }t  |¡� tj|d< W d   ƒ n1 s60    Y  t|jdd… ƒ ¡ sZJ ‚t|jd d… ƒ ¡ stJ ‚t|jdd … ƒ ¡ sŽJ ‚t  |¡� tj|d< W d   ƒ n1 s¸0    Y  t|jd ƒsÔJ ‚t	j
tdd�� |d  W d   ƒ n1 �s0    Y  d S )	Nr   )éÐ  r)   é*   éA   )r˜   r)   rm   é1   Ú49rW   )rC   r‚   r+   r-   r   r€   r„   r   rj   r[   r\   ÚKeyError)r   Ú/multiindex_year_month_day_dataframe_random_datar†   ÚymdÚsr
   r
   r   Útest_series_setitem  s    ((z)TestMultiIndexSetItem.test_series_setitemc                 C   s  |}|j  ¡ }|j ¡ }||dk }| |dk¡}t ||¡ d||dk< d||dk< t |j|¡ d||dk< d||dk< t |j|¡ d||d d… dk < t |d d… |d d… dk d¡ t |j|¡ t	j
tdd�� d||d < W d   ƒ n1 sþ0    Y  d S )Nr   r5   r$   éÿÿÿÿzboolean values onlyrW   )ÚTrO   r€   ÚwhererC   rD   Zassert_almost_equalr+   Zputmaskr[   r\   r]   )r   Ú multiindex_dataframe_random_dataÚframer2   r€   r   r   r
   r
   r   Ú"test_frame_getitem_setitem_boolean-  s"    

"z8TestMultiIndexSetItem.test_frame_getitem_setitem_booleanc                 C   s
  ddgg d¢g}g d¢g d¢g}t ||d dgd�}tdg d	¢i|d
�}|jd d …df }t |d |¡ |j|jdd… df }t |d dd… |¡ |jd d …d d …f }t ||¡ |}d|jd d …df< d|d< t ||¡ d|jd d …d d …f< t ||¡ d S )NÚt1Út2©r   r   r}   )r   r   r   r(   r(   )r   r(   r$   r   r(   Úid)ÚcodesÚlevelsr#   r   )r(   r$   r)   é   rs   ©r'   r(   r)   rm   )r   r   r   rC   rz   r'   rD   )r   r­   r¬   Zmidxr2   r   r
   r
   r   Ú%test_frame_getitem_setitem_multisliceF  s     z;TestMultiIndexSetItem.test_frame_getitem_setitem_multislicec                 C   s|   t tj d¡ d¡g d¢g d¢gd�}| ¡ }|d |d< t |d |d ¡ | ¡ }|d j|d< t |d |d ¡ d S )Nr$   )rm   r=   )r   r   r   r   )r   r(   r   r(   ©r&   r   r   )	r   r+   rL   rM   rY   rO   rC   rD   r€   )r   r2   Úcpr
   r
   r   Útest_frame_setitem_multi_column]  s    þz5TestMultiIndexSetItem.test_frame_setitem_multi_columnc                 C   sº   t  g d¢¡}tg d¢|d�}d|d< |d jdk ¡ s<J ‚g d¢|d< |d |d< |d	 }|d
 }|d }tj||dd� tj||dd� |jd	ksšJ ‚|jd
ks¨J ‚|jdks¶J ‚d S )N)©r   Ú1©r   Ú2©r;   rµ   )r(   r)   r5   r>   ru   r   r   ©r(   r$   r)   r¸   r´   r¶   F)Zcheck_names)r   ri   r   r€   r„   rC   rz   rw   )r   r&   r2   Z	sliced_a1Z	sliced_a2Z	sliced_b1r
   r
   r   Ú test_frame_setitem_multi_column2l  s    z6TestMultiIndexSetItem.test_frame_setitem_multi_column2c                 C   sD   |}|d d… }|j dg d¢f }|j d g d¢ }t ||¡ d S )Nr5   )r˜   r(   rV   rG   )r   rC   rz   )r   rž   rŸ   r2   r   r   r
   r
   r   Ú#test_loc_getitem_tuple_plus_columnsƒ  s
    z9TestMultiIndexSetItem.test_loc_getitem_tuple_plus_columnsz.ignore:Setting a value on a view:FutureWarningc                 C   s´   t g d¢ddggg d¢g d¢gd�}ttj d¡ t|ƒdf¡|g d¢d	�}t ||¡}|j	d
d… }| 
|jdd … ¡}t ||¡ 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¬   r=   ©r   r   r}   r   r>   r(   r®   )r   r   r+   rL   rM   rY   ÚlenrC   Úget_objr   Úreindexr'   r   r€   r„   )r   Zframe_or_seriesr'   ÚobjÚresrˆ   r
   r
   r   Ú'test_loc_getitem_setitem_slice_integersŽ  s    ÿýz=TestMultiIndexSetItem.test_loc_getitem_setitem_slice_integersc                 C   sd   |}|j }|d }|| ¡ k|d< t |d || ¡ k¡ |jdgd�}t |d || ¡ k¡ d S )N)rI   rU   r±   )r£   ZmedianrC   rz   rÀ   )r   r¥   r¦   Zdftr    Z	reindexedr
   r
   r   Útest_setitem_change_dtype¢  s    z/TestMultiIndexSetItem.test_setitem_change_dtypec                 C   s¦   |}|j g d¢ }d|j|< |j| jdk ¡ s4J ‚| ¡ }|d }t |¡� d||< W d   ƒ n1 sl0    Y  |rˆt ||¡ n|j|df dk ¡ s¢J ‚d S )N)r(   r=   r5   r9   r;   éa   )r'   r   r€   r„   rO   rC   r‚   rD   )r   r¥   r…   r†   r¦   ZsubsetZframe_originalÚcolr
   r
   r   Útest_set_column_scalar_with_loc­  s    
&z5TestMultiIndexSetItem.test_set_column_scalar_with_locc                 C   sh   t g d¢g d¢g d¢gtdƒd�}| ddg¡}t dg¡}d	|j|d
f< | d¡d
 d	k ¡ sdJ ‚d S )N)r(   r(   r   r   )r(   r(   ÚyÚY)r(   r$   ÚzÚZÚABCDr±   r   r;   ©r(   r(   Ú_r<   )r   ry   r’   r   ri   r   Úxsr„   )r   r2   Úmir
   r
   r   Útest_nonunique_assignment_1750À  s    ÿz4TestMultiIndexSetItem.test_nonunique_assignment_1750c                 C   sX   t  g d¢¡}tt d¡ d¡|td�}|j ¡ }|d  	tj
¡|d< t |j|¡ d S )N)r´   r¸   r¶   r)   )r(   r)   r7   r   )r   ri   r   r+   r,   r@   Úobjectr'   rO   Zastyper   rC   Zassert_index_equal)r   r/   r2   r'   r
   r
   r   Ú test_astype_assignment_with_dupsÌ  s
    
z6TestMultiIndexSetItem.test_astype_assignment_with_dupsc                 C   sd   t jg d¢ddgd�}tg d¢|dgd�}tjdd	d
d�|jd< tdg d¢i|d�}t ||¡ d S )N))r   r}   )r   r   )r   r   Úl1Úl2r"   r¼   Úe©Údatar'   r&   r9   ée   r~   )r8   )r   rÖ   )r9   r(   r   r¯   )r   ri   r   r+   r,   r   rC   rD   )r   r'   r2   r   r
   r
   r   Útest_setitem_nonmonotonicÖ  s    ÿz/TestMultiIndexSetItem.test_setitem_nonmonotonic)Ú__name__Ú
__module__Ú__qualname__r   r   r3   rF   rR   ÚtdZ&skip_array_manager_not_yet_implementedra   rl   r|   r‰   r—   r¡   r§   r°   r³   rº   r»   r[   ÚmarkÚfilterwarningsrÃ   rÄ   rÇ   rÑ   rÓ   rÚ   r
   r
   r
   r   r      s.   3
8


r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú"TestSetitemWithExpansionMultiIndexc                 C   s~   g d¢g d¢g d¢g}t t|Ž ƒ}t |¡}ttj d¡ d¡|d�}| 	¡ }| 	¡ }g d¢|d< g d¢|d	< t
 ||¡ d S )
N)r   Útoprâ   Úroutine1rã   Zroutine2)Ú ÚODrå   Úresult1Zresult2ræ   )rä   ZwxZwyrä   rä   rä   r$   )r=   rV   r±   )r(   r$   r)   r=   r   )r   rä   rä   )ÚsortedÚzipr   ri   r   r+   rL   rM   rY   rO   rC   rD   )r   r^   Ztuplesr'   r2   r   r   r
   r
   r   Ú#test_setitem_new_column_mixed_depthâ  s    ý
zFTestSetitemWithExpansionMultiIndex.test_setitem_new_column_mixed_depthc                 C   sZ   t  g d¢¡}tddgddgddgg|d�}tddd	œƒ}||d
< |d
  ¡  ¡ sVJ ‚d S )N))Ú1aZ2a)rê   Z2b)rê   Z2cr(   r$   r)   r=   r5   rV   r¯   )rÍ   )r(   r$   Únew)r   ri   r   r   r   r„   )r   Zmixr2   r    r
   r
   r   Útest_setitem_new_column_all_naó  s
    zATestSetitemWithExpansionMultiIndex.test_setitem_new_column_all_nac                 C   s€   t jdgg d¢d�}tg d¢g|g d¢d�}|jd |jd< t jddgg d¢d�}tg d¢g d¢g|g d¢d�}t ||¡ d S )Nr¹   )Úi1Úi2Zi3r"   )rm   é   é   rG   r×   )r   r   r   )r   ri   r   r   rC   rD   )r   rÐ   r2   Zmi_expectedr   r
   r
   r   Ú)test_setitem_enlargement_keep_index_namesû  s    ÿýzLTestSetitemWithExpansionMultiIndex.test_setitem_enlargement_keep_index_namesN)rÛ   rÜ   rÝ   ré   rì   rñ   r
   r
   r
   r   rá   á  s   rá   c                 C   sŽ   | j }|rbtjtdd��" d|d jd d …< W d   ƒ n1 s@0    Y  |d jdk ¡ sŠJ ‚n(d|d jd d …< |d jdk ¡ sŠJ ‚d S )Nz	read-onlyrW   r   rI   )r£   r[   r\   rƒ   r€   r„   )r¥   r…   r2   r
   r
   r   Útest_frame_setitem_view_direct  s    0rò   c              	   C   s®   | j }|s|rDt ¡ � d|d d< W d   ƒ qª1 s80    Y  nfd}tjt|d��D t ¡ � d|d d< W d   ƒ n1 s‚0    Y  W d   ƒ n1 s 0    Y  d S ©Nr$   rI   rT   zAA value is trying to be set on a copy of a slice from a DataFramerW   )r£   rC   Úraises_chained_assignment_errorr[   r\   r   )r¥   r…   r†   r2   r`   r
   r
   r   Útest_frame_setitem_copy_raises  s    
,
rõ   c              	   C   sÊ   | j }|}| ¡ }|s|rPt ¡ � d|d d< W d   ƒ q¶1 sD0    Y  nfd}tjt|d��D t ¡ � d|d d< W d   ƒ n1 sŽ0    Y  W d   ƒ n1 s¬0    Y  |}t ||¡ d S ró   )r£   rO   rC   rô   r[   r\   r   rD   )r¥   r…   r†   r¦   r   r2   r`   r   r
   r
   r   Ú test_frame_setitem_copy_no_write+  s    
,
Hrö   c                  C   sh   t g d¢g d¢dddœƒ g d¢¡} td| j d¡d	�}|  ¡ }||d
< |  ¡ }d|d
< t ||¡ d S )Nr¹   )r)   r=   r5   rV   r®   r½   rª   rs   r}   r¯   r   )r   r’   r   r'   Z	droplevelrO   rC   rD   )r2   Zserr   r   r
   r
   r   Ú%test_frame_setitem_partial_multiindex>  s    üÿùr÷   )Únumpyr+   r[   Zpandas.errorsr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrÞ   Zpandasrk   r   r   r   r   r   r   Zpandas._testingZ_testingrC   r   r   rá   Zskip_array_manager_invalid_testrò   rõ   rö   r÷   r
   r
   r
   r   Ú<module>   s"       M*
