o
    EÜh®/  ã                   @   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 sYw   Y  | ¡ }|j|jdd}|j dd d¡j
}t ||¡ d S )NZ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ÚmsgZgb© r"   ú<lib/python3.10/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… }| |¡}|r|j  |¡sJ ‚n|j |u s!J ‚|j| }|j  |¡s.J ‚|j}|j|d}|rB|j |¡sAJ ‚n|j|u sIJ ‚|jd d …|f }|j |¡sZJ ‚d S )Né
   ©r   )r   r   Úis_r,   Z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   ó   | d S ©Né   r"   ©Úxr"   r"   r#   Ú<lambda>Q   ó    z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>c                 S   r6   r7   r"   r9   r"   r"   r#   r;   R   r<   r   )r   Úget_level_valuesr   Zapplyr   r   r   r   )	r   r-   r.   Ú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Únamesr8   é   ©ÚaÚbÚcÚd)r   r   rC   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 s<w   Y  | 
¡ }|jddgk ¡ sPJ ‚d S )N))Úf1Ús1)rT   Ús2)Úf2rU   )rW   rV   )Úf3rU   )rX   rV   )r   r8   r%   rH   é   é   )é   é   é	   r0   é   é   r1   r   r   c                 S   s   | d dv S )Nr   )rW   rX   r"   )Úur"   r"   r#   r;   q   s    z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   r   r   ©r   r   rW   rX   )r   Úfrom_tuplesr   r,   r   Úmapr   r   r   r   r	   Úall)r   rQ   rR   Zdf1r!   r?   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 ¡ s#J ‚d S )NrY   )éÐ  r   r[   )rf   r   r0   )r   Ú
isinstancer   r   rd   )r   r   r   rR   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   r8   r%   ))r
   r   )r
   r8   ©ÚBr%   ©Údatar   )rH   rY   rZ   ))ÚZr   )rm   r8   ri   éÿÿÿÿ)r   r   rb   r   Úunionr   r   r   )r   r:   ÚyÚresZ	exp_indexZ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s7J ‚|j |jjd d… d ¡ }t ||¡ d S )Nr   r   r   Fr   r8   )r   Zmeanr   r=   r   r   rG   )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'   rB   r)   )r*   rB   r8   )rH   rH   )r   r   r   )ZTotalsÚ )	r   rb   r   rN   rO   rP   Ústandard_normalr	   Z_consolidate)r   r   rR   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 sdw   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'   rA   r   )r'   Úquxr   r   r   )r   r   r   r   r8   r8   )r   r   r   r   r   r   )rE   rF   r8   rZ   ©r   )rZ   rH   rx   z^\(\('foo', 'bar', 0\), 2\)$r   )rx   r8   )©r'   r*   )r'   rA   )r'   ry   r{   )r   r   rN   rO   rP   rv   r   r,   r   Z	droplevelr   r   ÚpytestZraisesÚKeyErrorZxsr   )r   r   Zseriesr.   r   rs   r    r"   r"   r#   Útest_level_with_tuples²   sN   þ

ÿ

þ


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'   ry   r   r   )r   r   r8   r[   r\   r]   r   ra   r
   )r   r+   r   r   r   r,   r   )r   r-   r.   r   r    r"   r"   r#   Ú$test_reindex_level_partial_selectionâ   s   z3TestMultiLevel.test_reindex_level_partial_selectionrM   rH   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)rJ   rK   rL   r   r8   r%   rI   rD   )r   rJ   r   Úfirstr   r   r   Zassert_index_equal)r   rM   r5   rR   Ú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s'J ‚d S )N))Ú600809Z20061231©rƒ   Z20070331)rƒ   Z20070630r„   )Údemor…   r…   r…   ZSTK_IDZRPT_Date)rG   rz   r%   )r   rb   r   r   r   r€   Úlen)r   Zidx_tpZdtÚidxr>   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   rJ   rK   )rJ   rL   ç        r1   )
rN   Únanr   r   rb   ZdtypesrJ   rK   r   r   )r   rl   r   rR   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   r0   )r
   rj   rH   r8   r^   r_   é   r   )Zorient)r   r8   r%   rH   )r0   r^   r_   rŒ   )r   r   r   r   rk   )ÚdatetimeÚdater   Z	from_dictr   r   )r   Zdata_dicr   rl   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_2r1   r”   r•   r‰   ))r
   ÚFr–   r—   )r   rN   rŠ   Z	set_indexZatr   r   )r   rR   r    r"   r"   r#   Útest_multiindex_with_na1  s*   ýú
ù
	üù
ø
z&TestMultiLevel.test_multiindex_with_naN)Ú__name__Ú
__module__Ú__qualname__r$   r/   r4   r@   rS   re   rh   rr   rt   rw   r~   r   r|   Z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 s&J ‚| ¡ }|jjd	u s2J ‚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
   rj   ÚC)rL   rK   rJ   )r   r   r8   r   r   r8   )r   r8   r   r   r   r8   ÚcolZint64)r   ZdtypeFT)r   rH   rY   r8   ))rj   rJ   )rj   rL   )r   rJ   )r   rK   rj   r   rJ   rL   )r   r   Úranger†   r   Zis_monotonic_increasingZ
sort_indexrb   r,   ÚpdZ
IndexSlicer   r   )r   r‡   rR   Ú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   ZnumpyrN   r|   Zpandasr    r   r   r   Zpandas._testingZ_testingr   r   rœ   r"   r"   r"   r#   Ú<module>   s      =