o
    i8                     @   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ejdg d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ejdddgejdddgdd Zejdddgejdddgejdddgejdddg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.d/ Zejd0d1d0gd2d3 Zd4d5 Zd6d7 Zd8S )9TestMultiLevelc                 C   s  |}t t |jdd}W d    n1 sw   Y  |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 t t |jjddd}W d    n1 skw   Y  |j|jdd}|jddtjj}t 	|| d S )	Nmonthlevel   AFcheck_namesaxisr   )columnsr   )tmassert_produces_warningFutureWarningsumreindexindexgroupby	transformnpassert_frame_equalassert_series_equalT)self/multiindex_year_month_day_dataframe_random_dataymd
month_sumsresultexpected r"   W/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/test_multilevel.pytest_reindex_level   s    z!TestMultiLevel.test_reindex_levelopname)subaddmuldivc           	      C   s   |}t t|}tt |jdd}W d    n1 sw   Y  |||dd}|jddtj}|||}t	|| t t
|}||d |d dd}|d jddtj}||d |}d|_t|| d S )Nr   r   r
   )getattrr   r   r   r   r   r   r   r   r   r   namer   )	r   r%   r   r   opr   r    broadcastedr!   r"   r"   r#   test_binops_level%   s   


z TestMultiLevel.test_binops_levelc                 C   s0   |}|j ddg }|jddg }t|| d S )Nr      fooonebarr2   )iloclocr   r   )r    multiindex_dataframe_random_dataframer!   	reindexedr"   r"   r#   test_reindex<   s   zTestMultiLevel.test_reindexc                 C   s   |}|j d d d }||}|j |u sJ |j| }|j |s#J |j}|j|d}|j|u s3J |jd d |f }|j|sDJ d S )N
   r   )r   r   r6   equalsr   r   )r   r   r   	new_indexchunkymdTr"   r"   r#   test_reindex_preserve_levelsC   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>^       z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>c                 S   rC   rD   r"   rF   r"   r"   r#   rH   _   rI   r   )r   get_level_valuesr   applyr   r   r   r   )	r   r7   r8   sgroupergroupedappliedr!   r    r"   r"   r#   test_groupby_transformV   s   z%TestMultiLevel.test_groupby_transformc                 C   sV   t dgdgdggdgdgdggg dd}ttjdgg d|d	}|jd
d d S )Nr1   r4   bazr   )r2   twothreelevelscodesnames   abcd)r   r   rS   r   )r   r   r   randomrandr   )r   midxdfr"   r"   r#   test_groupby_cornerc   s   z"TestMultiLevel.test_groupby_cornerc                 C   sr   t g d}tg dg dg|d}|jdd|jdd  }|jdd	d
}| }|jddgk s7J d S )N))f1s1)rc   s2)f2rd   )rf   re   )f3rd   )rg   re   )r	   rE   r/   rX         )      	   r;         r<   r	   )r   c                 S   s   | d dv S )Nr   )rf   rg   r"   )ur"   r"   r#   rH   z   s    z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   r   rf   rg   )	r   from_tuplesr   r6   r   mapr   r   all)r   r`   ra   df1rN   r    r"   r"   r#   test_groupby_level_no_obsm   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 )Nrh   )  r	   rj   )ru   r	   r;   )r   
isinstancer   r   rr   )r   r   r   ra   r"   r"   r#   .test_setitem_with_expansion_multiindex_columns   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	   rE   r/   ))r
   r	   )r
   rE   Br/   )datar   )rX   rh   ri   ))Zr	   )r{   rE   rx   )r   r   rp   r   unionr   r   r   )r   rG   yres	exp_indexexpr"   r"   r#   test_alignment   s   zTestMultiLevel.test_alignmentr   r   r	   skipnaTFsortc           
         s   |}| |j ||d}| fdd}tt t| |d}	W d    n1 s.w   Y  |r;|	j|d}	t||	 d S )N)r   r   c                    s   t |  dS )N)r   r*   rF   r,   r   r"   r#   rH          z:TestMultiLevel.test_series_group_min_max.<locals>.<lambda>)r   r   r   )r   aggr   r   r   r*   
sort_indexr   )
r   all_numeric_reductionsr   r   r   series_with_multilevel_indexserrN   leftside	rightsider"   r   r#   test_series_group_min_max   s   z(TestMultiLevel.test_series_group_min_maxr   c                    s(  |}t j|jdddgf< t j|jdddgf< |jj| } dkr#|}n|j}|j| |d}	g | fdd}
|	|
}t	t
 t|| d}W d    n1 sZw   Y  |ro|j| d	}|j| d	}| j| |}t| | t| | t|| d S )
Nr	   rE   rj   r   )r   r   r   c                    s    |  t|  dS )N)r   r   )appendr*   rF   r   r,   piecesr   r"   r#   aggf   s   
z1TestMultiLevel.test_frame_group_ops.<locals>.aggf)r   r   r   )r   r   )r   nanr5   r   rW   r   r   r   r   r   r   r*   r   	_get_axisrU   renameassert_index_equalr   )r   r   r   r   r   r   r7   r8   
level_namerN   r   r   r   level_indexr"   r   r#   test_frame_group_ops   s,   
z#TestMultiLevel.test_frame_group_opsmethvarstdc                    s  t tddttddg}ttjt	|d|d}d  fdd}t
t t|d d d}W d    n1 sEw   Y  |d jdd	|}t
|| t
t t|d d}W d    n1 stw   Y  |jdd	|}t
|| d S )
Nrh   r;   r   rX   c                    s   t |  dS )N)ddofr   rF   r   r   r"   r#   rH      r   z7TestMultiLevel.test_std_var_pass_ddof.<locals>.<lambda>r   )r   r   r   )r   from_arraysr   arangerepeattiler   r^   randnlenr   r   r   r*   r   r   r   r   )r   r   r   ra   altr    r!   r"   r   r#   test_std_var_pass_ddof   s     z%TestMultiLevel.test_std_var_pass_ddofc                 C   sn   |}t ||}t t |jddgd}W d    n1 s w   Y  |jddgd }t || d S )Nyearr   r   )r   get_objr   r   r   r   assert_equal)r   r   frame_or_seriesr   r    r!   r"   r"   r#   test_agg_multiple_levels   s   z'TestMultiLevel.test_agg_multiple_levelsc                 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   rE   )r   meanr   rJ   r   r   rW   )r   r   r   r    k1k2r!   result2r"   r"   r#   test_groupby_multilevel  s   z&TestMultiLevel.test_groupby_multilevelc                 C   s@   t g d}ttjdd||d}|d|d< | }d S )N)r0   )r1   rR   r3   )r4   rR   rX   )r   r   r	   )Totals )r   rp   r   r   r^   r   r   _consolidate)r   r   ra   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}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_w   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}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)r1   r4   r   )r1   rQ   r   )r1   quxr   r   r	   )r   r   r	   r	   rE   rE   )r   r	   r   r	   r   r	   )rU   rV   ri   r   rX   r   rE   z^\(\('foo', 'bar', 0\), 2\)$)match)r   rE   )r1   r4   )r1   rQ   )r1   r   r   )r   r   r   r^   r   r   r6   r   	droplevelr   r   pytestraisesKeyErrorxsr   )r   r   seriesr8   r    r   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 )	Nr1   r   r   r   )r   r	   rE   rj   rk   rl   r	   r   r
   )r   r5   r   r   r   r6   r   )r   r7   r8   r    r!   r"   r"   r#   $test_reindex_level_partial_selectionK  s   z3TestMultiLevel.test_reindex_level_partial_selectionr]   rX   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)rZ   r[   r\   r	   rE   r/   rY   rT   )r   rZ   r   firstr   r   r   r   )r   r]   rB   ra   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))60080920061231r   20070331)r   20070630r   )demor   r   r   STK_IDRPT_Date)rW   r   r/   )r   rp   r   r   r   r   r   )r   idx_tpdtidxrL   r    r"   r"   r#   test_duplicate_groupby_issuesl  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 )NrG   r	   rZ   r[   )rZ   r\   g        r<   )
r   r   r   r   rp   dtypesrZ   r[   r   r   )r   rz   r   ra   r!   r    r"   r"   r#   test_subsets_multiindex_dtype{  s   


z,TestMultiLevel.test_subsets_multiindex_dtypeN)__name__
__module____qualname__r$   r   markparametrizer.   r:   rA   rP   rb   rt   rw   r   r   r   r   r   r   r   r   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
   ry   C)r\   r[   rZ   )r   r	   rE   r   r	   rE   )r   rE   r	   r	   r   rE   colint64)r   dtypeFT)r	   rX   rh   rE   ))ry   rZ   )ry   r\   )r   rZ   )r   r[   ry   r   rZ   r\   )r   r   ranger   r   is_monotonic_increasingr   rp   r6   pd
IndexSlicer   r   )r   r   ra   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   r   pandasr   r   r   r   pandas._testing_testingr   r   r   r"   r"   r"   r#   <module>   s      z