a
    Oªf®/  ã                   @   s`   d dl Z d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z G dd„ dƒZG dd„ dƒZdS )é    N)Ú	DataFrameÚ
MultiIndexÚSeriesc                   @   s¦   e Z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ej dddg¡dd„ ƒZdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%S )&ÚTestMultiLevelc                 C   sø   |}|  d¡ ¡ }|j|jdd}|j dd d¡}t ||¡ |d j|jdd}|d j dd d¡}tj||dd d}tjt	|d	  |j
j ddd
}W d   ƒ n1 s²0    Y  | ¡ }|j|jdd}|j dd d¡j
}t ||¡ d S )NÚmonthé   ©ÚlevelÚsumÚAF©Zcheck_namesú+DataFrame.groupby with axis=1 is deprecated©Úmatch©Úaxis)Úcolumnsr	   )Úgroupbyr
   ÚreindexÚindexÚ	transformÚtmÚassert_frame_equalÚassert_series_equalÚassert_produces_warningÚFutureWarningÚT)ÚselfÚ/multiindex_year_month_day_dataframe_random_dataÚymdZ
month_sumsÚresultÚexpectedÚmsgÚgb© r$   úU/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/test_multilevel.pyÚtest_reindex_level   s    .z!TestMultiLevel.test_reindex_levelc                 C   s0   |}|j ddg }|jddg }t ||¡ d S )Nr   é   ©ÚfooÚone©Úbarr*   )ÚilocÚlocr   r   )r   Ú multiindex_dataframe_random_dataÚframer!   Z	reindexedr$   r$   r%   Útest_reindex)   s    zTestMultiLevel.test_reindexc                 C   s¸   |}|j d d d… }| |¡}|r4|j  |¡sBJ ‚n|j |u sBJ ‚|j| }|j  |¡s\J ‚|j}|j|d}|r„|j |¡s’J ‚n|j|u s’J ‚|jd d …|f }|j |¡s´J ‚d S )Né
   ©r   )r   r   Úis_r.   Úequalsr   r   )r   r   Zusing_copy_on_writer   Z	new_indexÚchunkZymdTr$   r$   r%   Útest_reindex_preserve_levels0   s    

z+TestMultiLevel.test_reindex_preserve_levelsc           	      C   sb   |}|d }|j  d¡}|j|dd}| dd„ ¡}| dd„ ¡}| |j ¡}tj||dd d S )	Nr   r   F)Ú
group_keysc                 S   s   | d S ©Né   r$   ©Úxr$   r$   r%   Ú<lambda>Q   ó    z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>c                 S   s   | d S r9   r$   r;   r$   r$   r%   r=   R   r>   r   )r   Úget_level_valuesr   Úapplyr   r   r   r   )	r   r/   r0   ÚsZgrouperÚgroupedZappliedr!   r    r$   r$   r%   Útest_groupby_transformI   s    z%TestMultiLevel.test_groupby_transformc                 C   s\   t dgdgdggdgdgdggg d¢d}ttj d¡ d¡gg d	¢|d
}|jdd d S )Nr)   r,   Úbazr   )r*   ÚtwoÚthree©ÚlevelsÚcodesÚnamesr:   é   ©ÚaÚbÚcÚd)r   r   rF   r   )r   r   ÚnpÚrandomÚdefault_rngr   )r   ÚmidxÚdfr$   r$   r%   Útest_groupby_cornerV   s    ýýz"TestMultiLevel.test_groupby_cornerc                 C   s¤   t  g d¢¡}tg d¢g d¢g|d}|jdd|j dd„ ¡ }d	}tjt|d
 |j	ddd}W d   ƒ n1 sx0    Y  | 
¡ }|jddgk ¡ s J ‚d S )N))Úf1Ús1)rW   Ús2)Úf2rX   )rZ   rY   )Úf3rX   )r[   rY   )r   r:   r'   rK   é   é   )é   é   é	   r2   é   é   r3   r   r   c                 S   s   | d dv S )Nr   )rZ   r[   r$   )Úur$   r$   r%   r=   q   r>   z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   r   r   ©r   r	   rZ   r[   )r   Úfrom_tuplesr   r.   r   Úmapr   r   r   r   r
   Úall)r   rT   rU   Zdf1r"   rB   r    r$   r$   r%   Útest_groupby_level_no_obsd   s    ÿ
,z(TestMultiLevel.test_groupby_level_no_obsc                 C   sJ   |}|d d… j }|d |d< t|jtƒs.J ‚|d |d k ¡ sFJ ‚d S )Nr\   )éÐ  r   r^   )ri   r   r2   )r   Ú
isinstancer   r   rg   )r   r   r   rU   r$   r$   r%   Ú.test_setitem_with_expansion_multiindex_columnsy   s
    z=TestMultiLevel.test_setitem_with_expansion_multiindex_columnsc                 C   s¸   t g d¢t g d¢¡d}t g d¢t g d¢¡d}|| }|j |j¡}| |¡| |¡ }t ||¡ |d d d… |d d d…  }|j |j¡}| |¡| |¡ }t ||¡ d S )N)r   r:   r'   ))r   r   )r   r:   ©ÚBr'   ©Údatar   )rK   r\   r]   ))ÚZr   )rp   r:   rl   éÿÿÿÿ)r   r   re   r   Úunionr   r   r   )r   r<   ÚyÚresZ	exp_indexÚexpr$   r$   r%   Útest_alignmentƒ   s    ÿÿzTestMultiLevel.test_alignmentc                 C   sš   |}|j ddgd ¡ }|j d¡}|j d¡}|  ||g¡ ¡ }tj||dd |jj|jjd d… ksnJ ‚|j |jjd d… d ¡ }t ||¡ d S )Nr   r   r   Fr   r:   )r   Úmeanr   r?   r   r   rJ   )r   r   r   r    Zk1Zk2r!   Úresult2r$   r$   r%   Útest_groupby_multilevel—   s    z&TestMultiLevel.test_groupby_multilevelc                 C   sD   t  g d¢¡}ttj d¡ d¡||d}| d¡|d< | ¡ }d S )N)r(   )r)   rE   r+   )r,   rE   r:   )rK   rK   )r   r   r   )ZTotalsÚ )	r   re   r   rQ   rR   rS   Ústandard_normalr
   Z_consolidate)r   r   rU   r$   r$   r%   Útest_multilevel_consolidate¨   s    ÿÿz*TestMultiLevel.test_multilevel_consolidatec                 C   sþ  t g d¢ddggg d¢g d¢gd}ttj d¡ d¡|d	}ttj d¡ d
¡|d	}|d }|jd }|d d… }|j 	d¡|_t
 ||¡ t
 ||¡ tjtdd |d  W d   ƒ n1 sÈ0    Y  |jd }| d¡}|d d… }|j 	d¡|_t
 ||¡ t
 ||¡ t g d¢ddggg d¢g d¢gd}ttj d¡ d¡|d	}ttj d¡ d
¡|d	}|d }|jd }|d d… }|j 	d¡|_t
 ||¡ t
 ||¡ |jd }| d¡}|d d… }|j 	d¡|_t
 ||¡ t
 ||¡ d S )N)©r)   r,   r   )r)   rD   r   )r)   Úquxr   r   r   )r   r   r   r   r:   r:   )r   r   r   r   r   r   )rH   rI   r:   r]   ©r   )r]   rK   r}   z^\(\('foo', 'bar', 0\), 2\)$r   )r}   r:   )©r)   r,   )r)   rD   )r)   r~   r€   )r   r   rQ   rR   rS   r{   r   r.   r   Z	droplevelr   r   ÚpytestZraisesÚKeyErrorZxsr   )r   r   Zseriesr0   r    rx   r!   r$   r$   r%   Útest_level_with_tuples²   sL    þ
&

þ


z%TestMultiLevel.test_level_with_tuplesc                 C   sº   |}|j ddgdd}|jg d¢ }t ||¡ |jj ddgddd}t ||j¡ |jddg }t ||¡ |d jddg }t ||d ¡ |jjd d …ddgf }t ||j¡ d S )	Nr)   r~   r   r   )r   r   r:   r^   r_   r`   r   rd   r   )r   r-   r   r   r   r.   r   )r   r/   r0   r    r!   r$   r$   r%   Ú$test_reindex_level_partial_selectionâ   s    z3TestMultiLevel.test_reindex_level_partial_selectionrP   rK   c                 C   st   g d¢}t dgdgdg|gdœƒ}||jdk  |¡}| ¡ j}tdgdgdggg g g gg d¢d}t ||¡ d S )N)rM   rN   rO   r   r:   r'   rL   rG   )r   rM   r   Úfirstr   r   r   Zassert_index_equal)r   rP   r8   rU   Úgr    r!   r$   r$   r%   Ú+test_empty_frame_groupby_dtypes_consistencyõ   s    
ÿz:TestMultiLevel.test_empty_frame_groupby_dtypes_consistencyc                 C   sR   g d¢}g d¢}t j|ddgd}t||d}| |j¡ ¡ }t|ƒdksNJ ‚d S )N))Ú600809Z20061231©rˆ   Z20070331)rˆ   Z20070630r‰   )ÚdemorŠ   rŠ   rŠ   ZSTK_IDZRPT_Date)rJ   r   r'   )r   re   r   r   r   r…   Úlen)r   Zidx_tpÚdtÚidxrA   r    r$   r$   r%   Útest_duplicate_groupby_issues  s    z,TestMultiLevel.test_duplicate_groupby_issuesc                 C   sP   ddgg}ddt jfdg}t|t |¡d}|jjj}|jjj}t 	||¡ d S )Nr<   r   rM   rN   )rM   rO   ç        r3   )
rQ   Únanr   r   re   ZdtypesrM   rN   r   r   )r   ro   r   rU   r!   r    r$   r$   r%   Útest_subsets_multiindex_dtype  s    


z,TestMultiLevel.test_subsets_multiindex_dtypec                 C   sÜ   dt  ddd¡fdddœdt  ddd¡fdd	dœdt  ddd¡fdd
dœdt  ddd¡fdddœi}tj|dd}g d¢g d¢dœ}g d¢t  ddd¡t  ddd¡t  ddd¡t  ddd¡gg}t||d}t ||¡ d S )Nr   iâ  r'   r   r2   )r   rm   rK   r:   ra   rb   é   r   )Zorient)r   r:   r'   rK   )r2   ra   rb   r’   )r   r   r   r   rn   )ÚdatetimeÚdater   Ú	from_dictr   r   )r   Zdata_dicr    ro   r   r!   r$   r$   r%   Útest_datetime_object_multiindex  s     üüþ	z.TestMultiLevel.test_datetime_object_multiindexc                 C   sŠ   t dtjddgg d¢g d¢gg d¢d dd	g¡}d
|jd< t dtjddgg d¢g d¢ddtjd
ggg d¢d dd	g¡}t ||¡ d S )Nr   ç®Gáz®ó?ç=
×£p=@)r   ÚGr—   r˜   )r   ÚDg=
×£p½#@g®Gáz%@)Úpivot_0Úpivot_1Zcol_1Úcol_2r3   r›   rœ   r   ))r   ÚFr   rž   )r   rQ   r   Z	set_indexÚatr   r   )r   rU   r!   r$   r$   r%   Útest_multiindex_with_na1  s*    ýúù	
üùø
z&TestMultiLevel.test_multiindex_with_naN)Ú__name__Ú
__module__Ú__qualname__r&   r1   r7   rC   rV   rh   rk   rv   ry   r|   rƒ   r„   r   ÚmarkZparametrizer‡   rŽ   r‘   r–   r    r$   r$   r$   r%   r      s$   

0
	r   c                   @   s   e Zd ZdZdd„ ZdS )Ú
TestSortedz+everything you wanted to test about sortingc                 C   s¸   t g d¢g d¢gg d¢g d¢gƒ}tdtt|ƒƒi|dd}|jjdu sLJ ‚| ¡ }|jjd	u sdJ ‚tdg d
¢it  g d¢¡dd}|jt	j
dd…dd…f d d …f }t ||¡ d S )N)r   rm   ÚC)rO   rN   rM   )r   r   r:   r   r   r:   )r   r:   r   r   r   r:   ÚcolZint64)r   ZdtypeFT)r   rK   r\   r:   ))rm   rM   )rm   rO   )r¦   rM   )r¦   rN   rm   r¦   rM   rO   )r   r   Úranger‹   r   Zis_monotonic_increasingZ
sort_indexre   r.   ÚpdZ
IndexSlicer   r   )r   r   rU   Úsortedr!   r    r$   r$   r%   Útest_sort_non_lexsortedM  s     ÿ
ÿû$z"TestSorted.test_sort_non_lexsortedN)r¡   r¢   r£   Ú__doc__r«   r$   r$   r$   r%   r¥   J  s   r¥   )r“   ÚnumpyrQ   r   Zpandasr©   r   r   r   Zpandas._testingZ_testingr   r   r¥   r$   r$   r$   r%   Ú<module>   s     =