U
    _{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   [/var/www/html/Darija-Ai-API/env/lib/python3.8/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 }||}|j |ks,t|j| }|j |sFt|j}|j|d}|j|ksft|jd d |f }|j|st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$   two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 st	d S )N)f1s1)rN   s2)f2rO   )rQ   rP   )f3rO   )rR   rP   r   r4   r!   rE               	   r,         r-   r   c                 S   s   | d dkS )Nr   )rQ   rR   r   )ur   r   r   r7   a   r8   z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   r   r	   rQ   rR   )
r   from_tuplesr   r(   r   mapr   r   allr.   )r   rK   rL   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 )NrS   )  r   rU   )r`   r   r,   )r   
isinstancer   r   r.   r^   )r   r   r   rL   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   rE   rS   rT   )Zr   )re   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   rD   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?   rE   )r   r   r   )ZTotals )r   r\   r   r   rJ   randnr   Z_consolidate)r   r   rL   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   )rB   rC   rT   r   rE   z^\(\('foo', 'bar', 0\), 2\)$)match)rq   r4   )r#   r&   )r#   r>   )r#   rr   )r   r   r   rJ   ro   r   r(   r   Z	droplevelr   r   pytestZraisesKeyErrorZxsr   )r   r   Zseriesr*   r   rl   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#   rr   r   r   r   r4   rU   rV   rW   r[   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_selectionrI   rE   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 )	NrF   rG   rH   r   r4   r!   )rF   rG   rH   rI   rA   )r   rF   r   firstr   r   r   Zassert_index_equal)r   rI   r2   rL   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)rD   rs   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   rF   rG   )rF   rH   g        r-   )
r   nanr   r   r\   ZdtypesrF   rG   r   r   )r   rd   r   rL   r   r   r   r   r   test_subsets_multiindex_dtype   s    


z,TestMultiLevel.test_subsets_multiindex_dtypeN)__name__
__module____qualname__r    r+   r1   r=   rM   r_   rb   rk   rm   rp   rw   rx   ru   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
   rc   CrH   rG   rF   r   r   r4   colZint64)r   ZdtypeFTrE   rS   )rc   rF   )rc   rH   )r   rF   )r   rG   )r   r   ranger}   r   Zis_monotonic_increasingr.   Z
sort_indexr\   r(   pdZ
IndexSlicer   r   )r   r   rL   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   )numpyr   ru   Zpandasr   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   r   <module>   s    |