U
    >vfË&  ã                   @   sX   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!S )"ÚTestMultiLevelc                 C   sÈ   |}|  d¡ ¡ }|j|jdd}|j dd tj¡}t ||¡ |d j|jdd}|d j dd tj¡}tj||dd |j	j ddd ¡ }|j|jdd}|j dd tj¡j	}t ||¡ d S )	NÚmonthé   ©ÚlevelÚAF©Zcheck_names©Úaxis)Úcolumnsr	   )
ÚgroupbyÚsumÚreindexÚindexÚ	transformÚnpÚtmÚassert_frame_equalÚassert_series_equalÚT)ÚselfÚ/multiindex_year_month_day_dataframe_random_dataÚymdZ
month_sumsÚresultÚexpected© r   ú@/tmp/pip-unpacked-wheel-vdrwu74i/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… }| |¡}|j |ks,t‚|j| }|j  |¡sFt‚|j}|j|d}|j|ksft‚|jd d …|f }|j |¡sˆt‚d S )Né
   ©r   )r   r   ÚAssertionErrorr(   Úequalsr   r   )r   r   r   Z	new_indexÚchunkZymdTr   r   r   Útest_reindex_preserve_levels*   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>E   ó    z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>c                 S   s   | d S r3   r   r5   r   r   r   r7   F   r8   r   )r   Úget_level_valuesr   Úapplyr   r   r   r   )	r   r)   r*   ÚsZgrouperÚgroupedZappliedr   r   r   r   r   Útest_groupby_transform=   s    z%TestMultiLevel.test_groupby_transformc                 C   s\   t dgdgdggdgdgdggdddgd}ttj d	¡gd
dddg|d}|jdd d S )Nr#   r&   Úbazr   r$   ÚtwoZthree©ÚlevelsÚcodesÚnamesé   ÚaÚbÚcÚd)r   r   r   )r   r   r   ÚrandomZrandr   )r   ÚmidxÚdfr   r   r   Útest_groupby_cornerJ   s    ý z"TestMultiLevel.test_groupby_cornerc                 C   sŠ   t  ddddddg¡}tddd	d
ddgddddddgg|d}|jdd|j dd„ ¡ }|jddd}| ¡ }|jddgk ¡ s†t	‚d S )N)Úf1Ús1)rM   Ús2)Úf2rN   )rP   rO   )Úf3rN   )rQ   rO   r   r4   r!   rD   é   é   é   é   é	   r,   é   é   r-   r   c                 S   s   | d dkS )Nr   )rP   rQ   r   )Úur   r   r   r7   a   r8   z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   ©r   r	   rP   rQ   )
r   Úfrom_tuplesr   r(   r   Úmapr   r   Úallr.   )r   rJ   rK   Zdf1r<   r   r   r   r   Útest_groupby_level_no_obsT   s    úÿ
(z(TestMultiLevel.test_groupby_level_no_obsc                 C   sJ   |}|d d… j }|d |d< t|jtƒs.t‚|d |d k ¡ sFt‚d S )NrR   )éÐ  r   rT   )r_   r   r,   )r   Ú
isinstancer   r   r.   r]   )r   r   r   rK   r   r   r   Ú.test_setitem_with_expansion_multiindex_columnsg   s
    z=TestMultiLevel.test_setitem_with_expansion_multiindex_columnsc                 C   sÀ   t dddgt dddg¡d}t dd	d
gt dddg¡d}|| }|j |j¡}| |¡| |¡ }t ||¡ |d d d… |d d d…  }|j |j¡}| |¡| |¡ }t ||¡ d S )Nr   r4   r!   )r
   r   )r
   r4   )ÚBr!   )Údatar   rD   rR   rS   )ÚZr   )rd   r4   éÿÿÿÿ)r   r   r[   r   Úunionr   r   r   )r   r6   ÚyÚresZ	exp_indexÚexpr   r   r   Útest_alignmentq   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snt‚|j |jjd d… d ¡ }t ||¡ d S )Nr   r   r   Fr   r4   )r   Zmeanr   r9   r   r   rC   r.   )r   r   r   r   Zk1Zk2r   Úresult2r   r   r   Útest_groupby_multilevel…   s    z&TestMultiLevel.test_groupby_multilevelc                 C   sD   t  ddddg¡}ttj dd¡||d}| d¡|d< | ¡ }d S )	Nr"   )r#   r?   r%   )r&   r?   rD   )r   r   r   )ZTotalsÚ )r   r[   r   r   rI   Úrandnr   Z_consolidate)r   r   rK   r   r   r   Útest_multilevel_consolidate–   s    
ÿz*TestMultiLevel.test_multilevel_consolidatec              	   C   sú  t dddgddggddddddgddddddggd}ttj d¡|d	}ttj dd
¡|d	}|d }|jd }|d d… }|j d¡|_t	 
||¡ t	 
||¡ tjtdd |d  W 5 Q R X |jd }| d¡}|d d… }|j d¡|_t	 ||¡ t	 ||¡ t dddgddggddddddgddddddggd}ttj 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#   r>   r   )r#   Úquxr   r   r   r4   )rA   rB   rS   ©r   rD   z^\(\('foo', 'bar', 0\), 2\)$)Úmatch)rp   r4   )r#   r&   )r#   r>   )r#   rq   )r   r   r   rI   rn   r   r(   r   Z	droplevelr   r   ÚpytestZraisesÚKeyErrorÚxsr   )r   r   Zseriesr*   r   rk   r   r   r   r   Útest_level_with_tuplesž   sL    þ


þ


z%TestMultiLevel.test_level_with_tuplesc                 C   sÂ   |}|j ddgdd}|jdddddd	g }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#   rq   r   r   r   r4   rT   rU   rV   rZ   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_selectionrH   rD   c                 C   sx   dddg}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dddgd}t ||¡ d S )	NrE   rF   rG   r   r4   r!   )rE   rF   rG   rH   r@   )r   rE   r   Úfirstr   r   r   Zassert_index_equal)r   rH   r2   rK   Úgr   r   r   r   r   Ú+test_empty_frame_groupby_dtypes_consistencyá   s    

  ÿz:TestMultiLevel.test_empty_frame_groupby_dtypes_consistencyc                 C   sZ   ddddg}ddddg}t j|ddgd}t||d}| |j¡ ¡ }t|ƒd	ksVt‚d S )
N)Ú600809Z20061231)r|   Z20070331)r|   Z20070630ZdemoZSTK_IDZRPT_Date)rC   rr   r!   )r   r[   r   r   r   ry   Úlenr.   )r   Zidx_tpÚ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 )Nr6   r   rE   rF   )rE   rG   g        r-   )
r   Únanr   r   r[   ZdtypesrE   rF   r   r   )r   rc   r   rK   r   r   r   r   r   Útest_subsets_multiindex_dtypeþ   s    


z,TestMultiLevel.test_subsets_multiindex_dtypeN)Ú__name__Ú
__module__Ú__qualname__r    r+   r1   r=   rL   r^   ra   rj   rl   ro   rw   rx   rt   ÚmarkZparametrizer{   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 dddgdddggddd	ddd	gdd	dddd	ggƒ}td
tt|ƒƒi|dd}|jjdks`t‚| ¡ }|jjdksxt‚td
dddd	git  ddddg¡dd}|j	t
jdd…dd…f d d …f }t ||¡ d S )Nr
   rb   ÚCrG   rF   rE   r   r   r4   ÚcolZint64)r   ZdtypeFTrD   rR   )rb   rE   )rb   rG   )rˆ   rE   )rˆ   rF   )r   r   Úranger}   r   Zis_monotonic_increasingr.   Z
sort_indexr[   r(   ÚpdZ
IndexSlicer   r   )r   r   rK   Úsortedr   r   r   r   r   Útest_sort_non_lexsorted  s"     ÿ
ÿû$z"TestSorted.test_sort_non_lexsortedN)rƒ   r„   r…   Ú__doc__r   r   r   r   r   r‡     s   r‡   )Znumpyr   rt   Zpandasr‹   r   r   r   Zpandas._testingZ_testingr   r   r‡   r   r   r   r   Ú<module>   s    |