a
    oÝEbB  ã                   @   s²   d dl Zd dl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mZ d dlmZ d dlm  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S )é    N)Ú	DataFrameÚ
MultiIndexÚSeriesÚ	TimestampÚ
date_rangeÚisnaÚnotnac                 C   s   | |ksJ ‚d S ©N© )ÚaÚbr
   r
   úm/home/ja/django-apps/lartica_env/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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�}t  dtdƒfdtdƒfg¡}t  dtdƒfdtd	ƒfg¡}ttj d¡||d�}| j|||f|t	j
d� ttj 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-01)é   r=   r>   r   z
2015-02-01)r$   r$   )r   r   r   r   )r$   r=   r?   )r   r*   r   r   r+   ÚrandomÚfrom_tuplesr   r   rC   rD   ÚsliceÚcopyr'   r&   )r   Úidxr/   r2   ZsubidxZsubcolsÚvalsrO   r
   r
   r   Útest_setitem_multiindex3Q   sF    ÿÿÿÿüü
û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)   rG   r>   rJ   r$   zAcannot align on a multi-index with out specifying the join levels©Úmatch)r+   r.   r,   r   rL   ÚrandnÚ
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   rM   r'   rO   ÚilocÚpdZ
IndexSlicer   rC   rD   )r   r_   r   rP   r2   r
   r
   r   Útest_multiindex_setitem2—   s.    úÿÿ
ÿ,(z.TestMultiIndexSetItem.test_multiindex_setitem2c                 C   sz   t tj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 )Nr5   é
   é	   ©Úsizer)   Úabc©r=   r=   é   ©rr   rl   rK   r%   r   ç        ç      ð?)r=   r   rr   )r'   Úname)r   r+   rL   Úrandintr@   Úlistr-   r.   r   rC   Úassert_series_equalr   )r   r2   Úarrr
   r
   r   Útest_multiindex_assignment·   s    ý

z0TestMultiIndexSetItem.test_multiindex_assignmentc                 C   s¨  t  ddg¡}tt j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	¡ |d |j
d< |j
d }|d }t ||¡ d|j
d< tdddgddd�}t |j
d |¡ d}tjt|d�� g d¢|j
d< W d   ƒ n1 �s40    Y  tjt|d�� dg|j
d< W d   ƒ n1 �sp0    Y  dg|j
ddgf< |j
d dk ¡ �s¤J ‚d S )Nrt   ru   r5   rl   rm   rn   r)   rp   rq   rs   )r&   r'   r8   Úcr$   )r=   r|   rr   Úint64)r'   rv   r8   g      à?Úfloat64z@Must have equal len keys and value when setting with an iterablerW   )r   r(   r$   r)   r   r=   )r+   r.   r   rL   rw   r@   rx   r}   ri   Úvaluesr   r   rC   ry   Zassert_numpy_array_equalr[   r\   Ú
ValueErrorÚall)r   Zusing_array_managerrz   r2   ÚviewÚexpr   r`   r
   r
   r   Ú'test_multiindex_assignment_single_dtypeÇ   s8    ü



.,z=TestMultiIndexSetItem.test_multiindex_assignment_single_dtypec           
      C   s®   d}d}dd„ t tt |¡ ¡ ƒD ƒ}|d d… }ttj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   rl   c                 S   s   g | ]}d | ‘qS )r   r
   )Ú.0Únumr
   r
   r   Ú
<listcomp>û   ó    z>TestMultiIndexSetItem.test_groupby_example.<locals>.<listcomp>r5   rn   )r8   r&   r=   )ÚlevelZnew_colr   )ÚmapÚstrr+   r,   Útolistr   rL   rw   r}   Ú	set_indexrZ   Úgroupbyr-   Úshaper   )
r   ZNUM_ROWSZNUM_COLSZ	col_namesZ
index_colsr2   Úgrprv   Zdf2Únew_valsr
   r
   r   Útest_groupby_example÷   s    ý
z*TestMultiIndexSetItem.test_groupby_examplec                 C   sº   |}|d }t j|d< t|jdd… ƒ ¡ s0J ‚t|jd d… ƒ ¡ sJJ ‚t|jdd … ƒ ¡ sdJ ‚t j|d< 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)   rl   é1   Ú49rW   )
r+   r-   r   r   r�   r   ri   r[   r\   ÚKeyError)r   Ú/multiindex_year_month_day_dataframe_random_dataÚ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)   é   rr   ©r'   r(   r)   rl   )r   r   r   rC   ry   r'   rD   )r   r§   r¦   Zmidxr2   r   r
   r
   r   Ú%test_frame_getitem_setitem_multislice6  s     z;TestMultiIndexSetItem.test_frame_getitem_setitem_multislicec                 C   sx   t tj dd¡g d¢g d¢gd�}| ¡ }|d |d< t |d |d ¡ | ¡ }|d j|d< t |d |d ¡ d S )Nrl   r=   )r   r   r   r   )r   r(   r   r(   ©r&   r   r   )r   r+   rL   rY   rO   rC   rD   r   )r   r2   Úcpr
   r
   r   Útest_frame_setitem_multi_columnM  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>   rt   r   r   )r(   r$   r)   r²   r®   r°   F)Zcheck_names)r   rM   r   r   r�   rC   ry   rv   )r   r&   r2   Z	sliced_a1Z	sliced_a2Z	sliced_b1r
   r
   r   Ú test_frame_setitem_multi_column2[  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   ry   )r   r™   rš   r2   r   r   r
   r
   r   Ú#test_loc_getitem_tuple_plus_columnss  s
    z9TestMultiIndexSetItem.test_loc_getitem_tuple_plus_columnsc                 C   s¬   t g d¢ddggg d¢g d¢gd�}ttj t|ƒd¡|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   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   ry   r¸   )r   r    r¡   Zdftr›   Z	reindexedr
   r
   r   Útest_setitem_change_dtype�  s    z/TestMultiIndexSetItem.test_setitem_change_dtypec                 C   sb   |}|j g d¢ }d|j|< |j| jdk ¡ s4J ‚|d }d||< |j|df dk ¡ s^J ‚d S )N)r(   r=   r5   r9   r;   éa   )r'   r   r   r�   )r   r    r¡   ZsubsetÚ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   rx   r�   r   rM   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   rM   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   rM   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   rk   r{   r„   r’   rœ   r¢   rª   r­   r³   r´   r»   r¼   r¿   rÉ   rË   rÑ   r
   r
   r
   r   r      s,   -
 0r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú"TestSetitemWithExpansionMultiIndexc                 C   sz   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=   rV   r«   )r(   r$   r)   r=   r   )r   rÙ   rÙ   )ÚsortedÚzipr   rM   r   r+   rL   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   rM   r   r   r   r�   )r   Zmixr2   r›   r
   r
   r   Útest_setitem_new_column_all_naÙ  s
    zATestSetitemWithExpansionMultiIndex.test_setitem_new_column_all_naN)rÒ   rÓ   rÔ   rÞ   rá   r
   r
   r
   r   rÖ   Ç  s   rÖ   c                 C   s2   | j }d|d jd d …< |d jdk ¡ s.J ‚d S )Nr   rI   )rž   r   r�   )r    r2   r
   r
   r   Útest_frame_setitem_view_directâ  s    râ   c                 C   sJ   | j }d}tjtj|d�� d|d d< W d   ƒ n1 s<0    Y  d S ©NzAA value is trying to be set on a copy of a slice from a DataFramerW   r$   rI   rT   )rž   r[   r\   ÚcomÚSettingWithCopyError)r    r2   r`   r
   r
   r   Útest_frame_setitem_copy_raisesì  s    ræ   c                 C   sf   | j }|}| ¡ }d}tjtj|d�� d|d d< W d   ƒ n1 sH0    Y  |}t ||¡ d S rã   )rž   rO   r[   r\   rä   rå   rC   rD   )r    r¡   r   r2   r`   r   r
   r
   r   Ú test_frame_setitem_copy_no_writeô  s    *rç   )Únumpyr+   r[   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrÕ   Zpandasrj   r   r   r   r   r   r   r   Zpandas._testingZ_testingrC   Zpandas.core.commonÚcoreÚcommonrä   r   r   rÖ   Zskip_array_manager_invalid_testrâ   ræ   rç   r
   r
   r
   r   Ú<module>   s    $	   2
