o
    թZh/                     @   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 )N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msggb r$   S/var/www/html/lang_env/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.   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   r9   r:   r$   r<   r$   r$   r%   r>   R   r?   r   )r   get_level_valuesr   applyr   r   r   r   )	r   r/   r0   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namesr;      abcd)r   r   rG   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)rX   s2)f2rY   )r[   rZ   )f3rY   )r\   rZ   )r   r;   r'   rL         )      	   r2         r3   r   r   c                 S   s   | d dv S )Nr   )r[   r\   r$   )ur$   r$   r%   r>   q   s    z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   r   r   r   r	   r[   r\   )r   from_tuplesr   r.   r   mapr   r   r   r   r
   all)r   rU   rV   Zdf1r"   rC   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 )Nr]   )  r   r_   )rj   r   r2   )r   
isinstancer   r   rh   )r   r   r   rV   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   r;   r'   ))r   r   )r   r;   Br'   datar   )rL   r]   r^   ))Zr   )rq   r;   rm   )r   r   rf   r   unionr   r   r   )r   r=   yresZ	exp_index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   r;   )r   meanr   r@   r   r   rK   )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)   rF   r+   )r,   rF   r;   )rL   rL   )r   r   r   )ZTotals )	r   rf   r   rR   rS   rT   standard_normalr
   Z_consolidate)r   r   rV   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)   rE   r   )r)   quxr   r   r   )r   r   r   r   r;   r;   )r   r   r   r   r   r   )rI   rJ   r;   r^   r   )r^   rL   r~   z^\(\('foo', 'bar', 0\), 2\)$r   )r~   r;   )r)   r,   )r)   rE   )r)   r   r   )r   r   rR   rS   rT   r|   r   r.   r   Z	droplevelr   r   pytestZraisesKeyErrorZxsr   )r   r   Zseriesr0   r    ry   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)   r   r   r   )r   r   r;   r_   r`   ra   r   re   r   )r   r-   r   r   r   r.   r   )r   r/   r0   r    r!   r$   r$   r%   $test_reindex_level_partial_selection   s   z3TestMultiLevel.test_reindex_level_partial_selectionrQ   rL   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)rN   rO   rP   r   r;   r'   rM   rH   )r   rN   r   firstr   r   r   Zassert_index_equal)r   rQ   r8   rV   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)rK   r   r'   )r   rf   r   r   r   r   len)r   Zidx_tpdtidxrB   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   rN   rO   )rN   rP           r3   )
rR   nanr   r   rf   ZdtypesrN   rO   r   r   )r   rp   r   rV   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   r2   )r   rn   rL   r;   rb   rc      r   )Zorient)r   r;   r'   rL   )r2   rb   rc   r   )r   r   r   r   ro   )datetimedater   	from_dictr   r   )r   Zdata_dicr    rp   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   Gz?=
ףp=@)r   Gr   r   )r   Dg=
ףp#@gGz%@)pivot_0pivot_1Zcol_1col_2r3   r   r   r   ))r   Fr   r   )r   rR   r   Z	set_indexatr   r   )r   rV   r!   r$   r$   r%   test_multiindex_with_na1  s*   

	

z&TestMultiLevel.test_multiindex_with_naN)__name__
__module____qualname__r&   r1   r7   rD   rW   ri   rl   rw   rz   r}   r   r   r   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   rn   C)rP   rO   rN   )r   r   r;   r   r   r;   )r   r;   r   r   r   r;   colZint64)r   ZdtypeFT)r   rL   r]   r;   ))rn   rN   )rn   rP   )r   rN   )r   rO   rn   r   rN   rP   )r   r   ranger   r   Zis_monotonic_increasingZ
sort_indexrf   r.   pdZ
IndexSlicer   r   )r   r   rV   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   numpyrR   r   Zpandasr   r   r   r   Zpandas._testingZ_testingr   r   r   r$   r$   r$   r%   <module>   s      =