a
    j=ic8                     @   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 s00    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 s0    Y  |j|jdd}|jddtjj}t 	|| d S )	Nmonthlevel   AFZ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!   m/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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:0    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   Z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barr0   )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 |u s,J |j| }|j |sFJ |j}|j|d}|j|u sfJ |jd d |f }|j|sJ d S )N
   r   )r   r   r4   equalsr   r   )r   r   r   Z	new_indexchunkZ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   s   | d S N   r!   xr!   r!   r"   <lambda>^       z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>c                 S   s   | d S r>   r!   r@   r!   r!   r"   rB   _   rC   r   )r   get_level_valuesr   applyr   r   r   r   )	r   r5   r6   sZgroupergroupedZ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 )Nr/   r2   bazr   )r0   twothreelevelscodesnames   abcd)r   r   rK   r   )r   r   r   randomZ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 snJ d S )N))f1s1)rZ   s2)f2r[   )r]   r\   )f3r[   )r^   r\   )r	   r?   r-   rP         )      	   r8         r9   r	   )r   c                 S   s   | d dv S )Nr   )r]   r^   r!   )ur!   r!   r"   rB   z   rC   z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   r   r]   r^   )	r   from_tuplesr   r4   r   mapr   r   all)r   rW   rX   Zdf1rG   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 sFJ d S )Nr_   )  r	   ra   )rk   r	   r8   )r   
isinstancer   r   ri   )r   r   r   rX   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	   r?   r-   ))r
   r	   )r
   r?   Br-   )datar   )rP   r_   r`   ))Zr	   )rq   r?   rn   )r   r   rg   r   unionr   r   r   )r   rA   yresZ	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\0    Y  |rv|	j|d}	t||	 d S )N)r   ry   c                    s   t |  dS )N)rx   r)   r@   r+   rx   r!   r"   rB      rC   z:TestMultiLevel.test_series_group_min_max.<locals>.<lambda>)r   rx   r   )r   aggr   r   r   r)   
sort_indexr   )
r   all_numeric_reductionsr   rx   ry   Zseries_with_multilevel_indexZserrG   leftside	rightsider!   r{   r"   test_series_group_min_max   s    0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rF|}n|j}|j| |d}	g | fdd}
|	|
}t	t
$ t|| d}W d    n1 s0    Y  |r|j| d	}|j| d	}| j| |}t| | t| | t|| d S )
Nr	   r?   ra   r   )r   r   ry   c                    s    |  t|  dS )N)rx   r   )appendr)   r@   r   r+   piecesrx   r!   r"   aggf   s    
z1TestMultiLevel.test_frame_group_ops.<locals>.aggf)r   r   rx   )r   r   )r   nanr3   r   rO   r   r   r|   r   r   r   r)   r}   Z	_get_axisrM   renameassert_index_equalr   )r   r~   r   r   rx   ry   r5   r6   
level_namerG   r   r   r   Zlevel_indexr!   r   r"   test_frame_group_ops   s*    
2z#TestMultiLevel.test_frame_group_opsmethvarZ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 s0    Y  |d jdd	|}t
|| t
t" t|d d}W d    n1 s0    Y  |jdd	|}t
|| d S )
Nr_   r8   r   rP   c                    s   t |  dS )N)ddofrz   r@   r   r   r!   r"   rB      rC   z7TestMultiLevel.test_std_var_pass_ddof.<locals>.<lambda>r   )r   r   r   )r   Zfrom_arraysr   ZarangerepeatZtiler   rV   randnlenr   r   r   r)   r   r|   r   r   )r   r   r   rX   Zaltr   r    r!   r   r"   test_std_var_pass_ddof   s     40z%TestMultiLevel.test_std_var_pass_ddofc                 C   sn   |}t ||}t t  |jddgd}W d    n1 s@0    Y  |jddgd }t || d S )Nyearr   r   )r   get_objr   r   r   r   Zassert_equal)r   r   Z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snJ |j |jjd d d }t|| d S )Nr   r	   r   Fr   r?   )r   meanr   rD   r   r   rO   )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)r.   )r/   rJ   r1   )r2   rJ   rP   )r   r   r	   )ZTotals )r   rg   r   r   rV   r   r   Z_consolidate)r   r   rX   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 s0    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)r/   r2   r   )r/   rI   r   )r/   quxr   r   r	   )r   r   r	   r	   r?   r?   )r   r	   r   r	   r   r	   )rM   rN   r`   r   rP   r   r?   z^\(\('foo', 'bar', 0\), 2\)$)match)r   r?   )r/   r2   )r/   rI   )r/   r   r   )r   r   r   rV   r   r   r4   r   Z	droplevelr   r   pytestZraisesKeyErrorZxsr   )r   r   Zseriesr6   r   r   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?   ra   rb   rc   r	   r   r
   )r   r3   r   r   r   r4   r   )r   r5   r6   r   r    r!   r!   r"   $test_reindex_level_partial_selectionK  s    z3TestMultiLevel.test_reindex_level_partial_selectionrU   rP   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)rR   rS   rT   r	   r?   r-   rQ   rL   )r   rR   r   firstr   r   r   r   )r   rU   r=   rX   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)rO   r   r-   )r   rg   r   r   r   r   r   )r   Zidx_tpdtidxrF   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 )NrA   r	   rR   rS   )rR   rT   g        r9   )
r   r   r   r   rg   ZdtypesrR   rS   r   r   )r   rp   r   rX   r    r   r!   r!   r"   test_subsets_multiindex_dtype{  s    


z,TestMultiLevel.test_subsets_multiindex_dtypeN)__name__
__module____qualname__r#   r   markZparametrizer,   r7   r<   rH   rY   rj   rm   rw   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 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
   ro   C)rT   rS   rR   )r   r	   r?   r   r	   r?   )r   r?   r	   r	   r   r?   colint64)r   ZdtypeFT)r	   rP   r_   r?   ))ro   rR   )ro   rT   )r   rR   )r   rS   ro   r   rR   rT   )r   r   ranger   r   Zis_monotonic_increasingr}   rg   r4   pdZ
IndexSlicer   r   )r   r   rX   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   Zpandasr   r   r   r   Zpandas._testingZ_testingr   r   r   r!   r!   r!   r"   <module>   s     z