a
    é´«jŒ>  ã                   @   sŠ   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d„ ƒZG dd„ dƒZG d	d
„ d
ƒZdS )é    N)ÚSettingWithCopyError)Ú	DataFrameÚIndexÚ
IndexSliceÚ
MultiIndexÚSeriesÚconcat)ÚBDayc                  C   sp   t  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¢d�}t| |tdƒd�S )N©gEØðôJYà¿grùé·¯Àgî|?5^ºÝ¿gÌÑã÷6ý©?g²�ï§ÆK×?©gà-� Ü?g†ÉTÁ¨¤ö?gúíëÀ9#Ò?g—9]ð?g46<½RÆ?)gá“©‚Qå¿gž^)ËÇà¿g¶óýÔxéÖ¿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!   © r'   úb/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/frame/indexing/test_xs.pyÚfour_level_index_dataframe   s    ýÿýr)   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestXSc                 C   s´  |  ¡ }|jd }| |¡}| ¡ D ]>\}}	t |	¡rNt || | ¡sbJ ‚q$|	|| | ks$J ‚q$d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 d¡d��& | |jd tƒ  ¡ W d   ƒ n1 sþ0    Y  |jd
dd�}|d
 }t ||¡ |jd
dd�}t |¡� d|d d …< W d   ƒ n1 �sf0    Y  |�ržt |d
 |d
 ¡ |dk ¡ �r°J ‚n|dk ¡ �s°J ‚d S )Nr   r   r   )Ú1Ú2r+   r,   Ú3)r+   r,   r-   )ÚAÚBr.   r/   z Timestamp('1999-12-31 00:00:00')©Úmatchr   )Úaxis)Úcopyr!   ÚxsÚitemsr#   Úisnanr   ÚdtypeZobject_ÚpytestÚraisesÚKeyErrorÚreÚescaper	   ÚtmÚassert_series_equalÚassert_cow_warningÚall)ÚselfZfloat_frameZdatetime_frameÚusing_copy_on_writeÚwarn_copy_on_writeZfloat_frame_origÚidxr4   ÚitemÚvalueZ	test_dataÚframeZseriesÚexpectedr'   r'   r(   Útest_xs'   s6    




ÿ4,zTestXS.test_xsc                 C   s¢   t dgtg dd�d�}d|d< d|d< d	|d
< d|d< d|d< | d¡}tg d¢tdƒdd�}t ||¡ t g d¢d�}| d¡}tg dtjd�}t ||¡ d S )Nr   Ústr)r7   r    ç      ð?r.   Úfoor/   ç       @ÚCÚbarÚDç      @ÚE)rK   rL   rM   rO   rQ   r   )r!   Úname©r   r   Úc©r!   r   )rS   r7   )	r   r   r4   r   r%   r=   r>   r#   Zfloat64)rA   Údfr4   ÚexpÚresultrH   r'   r'   r(   Útest_xs_cornerP   s    

zTestXS.test_xs_cornerc                 C   sB   t tj d¡ d¡g d¢d�}| d¡}|jd }t ||¡ d S )Nr   )r   r   )r   r   rU   r   r   rV   rU   )	r   r#   ÚrandomÚdefault_rngÚstandard_normalr4   Úilocr=   r>   )rA   rW   ÚcrossrX   r'   r'   r(   Útest_xs_duplicatesc   s    þ

zTestXS.test_xs_duplicatesc                 C   s€   t dddœdddœdddœdddœdœƒ g d	¢¡}|jdd
dd�}|d d… }t ||¡ |jddd
gdd�}t ||¡ d S )NÚsatÚsun)r   r   Ú
strawberryé
   é   éØ  )ÚdayÚflavourZsalesÚyear)ri   rh   rg   rg   F)ÚlevelÚ
drop_levelr   )rf   ra   ri   )r   Ú	set_indexr4   r=   Úassert_frame_equal©rA   rW   rY   rH   r'   r'   r(   Útest_xs_keep_levelm   s    üÿùzTestXS.test_xs_keep_levelc                 C   s0  t t d¡ dd¡tdƒtdƒd�}| ¡ }|rxt ¡ �" d| d¡d d …< W d   ƒ n1 s`0    Y  t 	||¡ n´|rØd}t
jt|d��" d| d¡d d …< W d   ƒ n1 s¶0    Y  | d¡dk ¡ rÖJ ‚nTt ¡ �" d| d¡d d …< W d   ƒ n1 �s
0    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 DataFramer0   )r   r#   ZarangeZreshapeÚranger3   r=   Zraises_chained_assignment_errorr4   rm   r8   r9   r   Úanyr@   )rA   Úusing_array_managerrB   rC   ÚdmÚdf_origÚmsgr'   r'   r(   Útest_xs_view}   s    $
00
2zTestXS.test_xs_viewN)Ú__name__Ú
__module__Ú__qualname__rI   rZ   r`   ro   rw   r'   r'   r'   r(   r*   &   s
   )
r*   c                   @   s2  e Z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gdgfg¡dd„ ƒZdd„ Ze	j
 ddddd„ eddgdd�fdddd„ edgdd�fg¡dd „ ƒZe	j
 d!d"d„ d#d„ g¡d$d%„ ƒZe	j
 d!d&d„ d'd„ g¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:S );ÚTestXSWithMultiIndexc                 C   s‚   g d¢g d¢g}t t|Ž ƒ}tj|ddgd�}ttj d¡ d¡g d¢|d	�}|j	d
ddd�}|j
d d …dgf }t ||¡ d S )N)rO   rO   Úbazr|   rL   rL   Úquxr}   )r   r   r   r   r   r   r   r   ÚfirstÚsecond©r   r   )r   é   )r.   r/   rN   r    )r   rO   )r   r~   r   ©rj   r2   r   )r%   Úzipr   Úfrom_tuplesr   r#   r[   r\   r]   r4   r^   r=   rm   )rA   ZarraysZtuplesr!   rW   rY   rH   r'   r'   r(   Útest_xs_doc_example˜   s    þýz(TestXSWithMultiIndex.test_xs_doc_examplec                 C   s~   t ddƒ}tdƒ}tj||gddgd�}ttj d¡ t	|ƒdf¡|g d	¢ƒ}|j
ddd
�}|jdd d …f }t ||¡ d S )Niaß2ieß2ÚabcdeÚdateZsecidr€   r   r   )ÚXÚYÚZ©rj   )rq   r%   r   Zfrom_productr   r#   r[   r\   r]   Úlenr4   Úlocr=   rm   )rA   ÚdatesÚidsr!   rW   rY   rH   r'   r'   r(   Útest_xs_integer_key­   s    
ýz(TestXSWithMultiIndex.test_xs_integer_keyc                 C   sH   |}|j ddd�}||j d¡dk }tg d¢dd�|_t ||¡ d S )Nr   r   r‹   r   )rL   rO   r|   r}   r~   ©rS   )r4   r!   Zget_level_valuesr   r=   rm   ©rA   Ú multiindex_dataframe_random_datarW   rY   rH   r'   r'   r(   Útest_xs_level¼   s
    z"TestXSWithMultiIndex.test_xs_levelc                 C   sˆ   t j d¡ d¡}tg d¢g d¢g d¢gg d¢g d¢g d¢gd�}t||d�}t|d	d… d
gdggd�}|jddd�}t ||¡ d S )Nr   )r   r   )r   Úpr   )r   r   Úy)rU   ÚrÚz)r   r   r   ©r   r   rV   r   r   r   rU   r‹   ©	r#   r[   r\   r]   r   r   r4   r=   rm   )rA   r&   r!   rW   rH   rY   r'   r'   r(   Útest_xs_level_eq_2Ã   s    þz'TestXSWithMultiIndex.test_xs_level_eq_2c                 C   s~   |}|  ¡ }|jddd�}|s"|r0d|d d …< n>d}tjt|d�� d|d d …< W d   ƒ n1 sd0    Y  t ||¡ d S )Nr   r   r‹   rd   úAA value is trying to be set on a copy of a slice from a DataFramer0   ©r3   r4   r8   r9   r   r=   rm   )rA   r“   rB   rC   rW   ru   rY   rv   r'   r'   r(   Útest_xs_setting_with_copy_errorÎ   s    *z4TestXSWithMultiIndex.test_xs_setting_with_copy_errorc                 C   s‚   |}|  ¡ }|jdddgd�}|s&|r4d|d d …< n>d}tjt|d�� d|d d …< W d   ƒ n1 sh0    Y  t ||¡ d S )N©r   r   r   r   r‹   rd   rœ   r0   r�   )rA   r)   rB   rC   rW   ru   rY   rv   r'   r'   r(   Ú(test_xs_setting_with_copy_error_multipleã   s    *z=TestXSWithMultiIndex.test_xs_setting_with_copy_error_multiplez
key, level)r   r   r   r   c                 C   sv   |}t |gd ƒ}|jjdu s"J ‚t |jddd�gd ƒ}t|tƒrX|jt|ƒ|d�}n|j||d�}t ||¡ d S )Nr   Fr   r   r‹   )	r   r!   Z	is_uniquer4   Ú
isinstancer%   Útupler=   rm   )rA   Úkeyrj   r“   rG   rW   rH   rY   r'   r'   r(   Útest_xs_with_duplicatesõ   s    
z,TestXSWithMultiIndex.test_xs_with_duplicatesc                 C   sf   g d¢}t |g d¢d� ddg¡}t dg d¢itdtjd	d
gdd�d�}|jddd�}t ||¡ d S )N))r   r†   r   )r   Zbbcder   )r–   Zyzcdeé   )r˜   Úxbcdeé   )r˜   Né   )r˜   Úzbcder¥   )r˜   Úybcder¨   )Úa1Úa2Úcnt©r"   r«   r¬   r­   )r§   r¨   r¥   r¨   r¦   r©   rª   r‘   rV   r˜   r‹   )r   rl   r   r#   Únanr4   r=   rm   )rA   ÚaccrW   rH   rY   r'   r'   r(   Útest_xs_missing_values_in_index  s    	
þz4TestXSWithMultiIndex.test_xs_missing_values_in_indexzkey, level, exp_arr, exp_indexr   Úlvl0c                 C   s   | d d …dd…f S )Nr   r   r'   ©r   r'   r'   r(   Ú<lambda>  ó    zTestXSWithMultiIndex.<lambda>rO   rL   Úlvl1r‘   c                 C   s   | d d …dd…f S )Nr   r   r'   r³   r'   r'   r(   r´     rµ   c           
      C   sx   t j d¡ d¡}tddgg d¢gg d¢g d¢gdd	gd
�}t||d�}|j||dd�}t||ƒ|d�}	t ||	¡ d S )Nr   )r   r   r   r   )rO   rL   ZhelloZworld)r   r   r   r   )r   r   r   r   r²   r¶   r   r®   r   r‚   rš   )
rA   r£   rj   Zexp_arrZ	exp_indexr&   r!   rW   rY   rH   r'   r'   r(   Útest_xs_named_levels_axis_eq_1  s    	ýz3TestXSWithMultiIndex.test_xs_named_levels_axis_eq_1Úindexerc                 C   s   | j dddgd�S )NrŸ   r   r   r‹   ©r4   ©rW   r'   r'   r(   r´   /  rµ   c                 C   s   |   d¡j ddd�S )Nr   r   r   r‹   r¹   rº   r'   r'   r(   r´   0  rµ   c                 C   sZ   |}g d¢g}t dgdggdgdggddgd�}t||tdƒd	�}||ƒ}t ||¡ d S )
Nr   r   r   r   r   r   r   r   r    ©r   r   r%   r=   rm   ©rA   r¸   r)   rW   Zexpected_valuesZexpected_indexrH   rY   r'   r'   r(   Útest_xs_level_multiple,  s    
ÿ
ÿz+TestXSWithMultiIndex.test_xs_level_multiplec                 C   s   | j ddd�S )Nr   r   r‹   r¹   rº   r'   r'   r(   r´   @  rµ   c                 C   s
   |   d¡S )Nr   r¹   rº   r'   r'   r(   r´   @  rµ   c                 C   st   |}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¢d�}t||tdƒd�}||ƒ}t ||¡ d S )Nr
   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r    r»   r¼   r'   r'   r(   Útest_xs_level0?  s    þý
ÿz#TestXSWithMultiIndex.test_xs_level0c                 C   s*   |}|  d¡j}|jd }t ||¡ d S )N©rO   r   r   )r4   Úvaluesr=   Zassert_almost_equalr’   r'   r'   r(   Útest_xs_valuesT  s    
z#TestXSWithMultiIndex.test_xs_valuesc                 C   s(   |}|  d¡}|jd }t ||¡ d S )Nr¿   )r4   r�   r=   r>   r’   r'   r'   r(   Útest_xs_loc_equalityZ  s    

z)TestXSWithMultiIndex.test_xs_loc_equalityc                 C   sª   t g d¢ddggg d¢g d¢gd�}ttj d¡ d¡|d	�}|tu rN|d }|jd
d …  d¡}| 	t
dd d …f ¡}t ||¡ |jt
dd d …f  }t ||¡ d S )N))rL   rO   r   )rL   r|   r   ©rL   r}   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r™   r   )é   r   rV   éþÿÿÿrÃ   )r   r   r#   r[   r\   r]   r   r^   Z	droplevelr4   r   r=   Zassert_equalr�   )rA   Úframe_or_seriesr!   ÚobjrH   rY   r'   r'   r(   Ú+test_xs_IndexSlice_argument_not_implemented`  s    þz@TestXSWithMultiIndex.test_xs_IndexSlice_argument_not_implementedc                 C   sd   t dg d¢iƒ}|tu r |d }d}tjt|d�� |jddd� W d   ƒ n1 sV0    Y  d S )Nr.   ©r   r   r   zIndex must be a MultiIndexr0   r   Úasr‹   )r   r   r8   r9   Ú	TypeErrorr4   )rA   rÆ   rÇ   rv   r'   r'   r(   Útest_xs_levels_raisest  s    z*TestXSWithMultiIndex.test_xs_levels_raisesc                 C   sl   t jg d¢ddgd�}tg d¢g|d�}|jddd	d
�}tddggt jddgddgd�d�}t ||¡ d S )N)©r   r   ©r   r–   )r   r   Zlevel1Zlevel2r€   rÉ   r®   r   r   F©r2   rk   r   rÍ   rÎ   )r   r„   r   r4   r=   rm   )rA   ÚmirW   rY   rH   r'   r'   r(   Ú"test_xs_multiindex_droplevel_false}  s    ÿÿþz7TestXSWithMultiIndex.test_xs_multiindex_droplevel_falsec                 C   sH   t g d¢gtg d¢ƒd�}|jdddd�}t ddgiƒ}t ||¡ d S )NrÉ   rT   r®   r   r   FrÏ   )r   r   r4   r=   rm   rn   r'   r'   r(   Útest_xs_droplevel_falseŒ  s    z,TestXSWithMultiIndex.test_xs_droplevel_falsec                 C   s:  t g d¢gtg d¢ƒd�}|jdddd�}t |jd d …df j|jd d …df j¡sZJ ‚t |¡� d	|jd
< W d   ƒ n1 s„0    Y  |r¢t ddgiƒ}nt dd	giƒ}t 	||¡ t g d¢gtg d¢ƒd�}|j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 	||¡ d S )NrÉ   rT   r®   r   r   FrÏ   r   r   )r   r   )r   g      @r   )
r   r   r4   r#   Zshares_memoryr^   Z_valuesr=   r?   rm   )rA   rs   rB   rC   rW   rY   rH   r'   r'   r(   Útest_xs_droplevel_false_view“  s$    0(
z1TestXSWithMultiIndex.test_xs_droplevel_false_viewc                 C   sh   t  g d¢¡}tg d¢g d¢g|d�}tjtdd��  |jddd	d
� W d   ƒ n1 sZ0    Y  d S )N))r   Úmr   )r   Únr   )r–   ÚorU   rÉ   )r   r   rÄ   r®   r–   r0   )r   r–   Fr   )rk   r2   )r   r„   r   r8   r9   r:   r4   )rA   rÐ   rW   r'   r'   r(   Ú$test_xs_list_indexer_droplevel_false·  s    z9TestXSWithMultiIndex.test_xs_list_indexer_droplevel_falseN)rx   ry   rz   r…   r�   r”   r›   rž   r    r8   ÚmarkZparametrizer¤   r±   r   r·   r½   r¾   rÁ   rÂ   rÈ   rÌ   rÑ   rÒ   rÓ   r×   r'   r'   r'   r(   r{   —   sF   
þþ
þþ
ÿ
	$r{   )r;   Únumpyr#   r8   Zpandas.errorsr   Zpandasr   r   r   r   r   r   Zpandas._testingZ_testingr=   Zpandas.tseries.offsetsr	   Zfixturer)   r*   r{   r'   r'   r'   r(   Ú<module>   s    
q