o
    ҷh/                     @   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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ymd
month_sumsresultexpectedmsggb r&   O/var/www/html/venv/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#   	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_r0   equalsr   r   )r   r   using_copy_on_writer    	new_indexchunk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   r?   r@   r&   rB   r&   r&   r'   rD   R   rE   r   )r   get_level_valuesr   applyr   r   r   r   )	r   r1   r2   sgroupergrouped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namesrA      abcd)r   r   rO   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)r`   s2)f2ra   )rc   rb   )f3ra   )rd   rb   )r   rA   r)   rT         )      	   r5         r6   r   r   c                 S   s   | d dv S )Nr   )rc   rd   r&   )ur&   r&   r'   rD   q   s    z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   r   r   r   r	   rc   rd   )r   from_tuplesr   r0   r   mapr   r   r   r   r
   all)r   r]   r^   df1r$   rJ   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 )Nre   )  r   rg   )rs   r   r5   )r   
isinstancer   r   rp   )r   r   r    r^   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   rA   r)   ))r   r   )r   rA   Br)   datar   )rT   re   rf   ))Zr   )rz   rA   rv   )r   r   rn   r   unionr   r   r   )r   rC   yres	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   rA   )r   meanr   rF   r   r   rS   )r   r   r    r"   k1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+   rN   r-   )r.   rN   rA   )rT   rT   )r   r   r   )Totals )	r   rn   r   rZ   r[   r\   standard_normalr
   _consolidate)r   r   r^   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+   rM   r   )r+   quxr   r   r   )r   r   r   r   rA   rA   )r   r   r   r   r   r   )rQ   rR   rA   rf   r   )rf   rT   r   z^\(\('foo', 'bar', 0\), 2\)$r   )r   rA   )r+   r.   )r+   rM   )r+   r   r   )r   r   rZ   r[   r\   r   r   r0   r   	droplevelr   r   pytestraisesKeyErrorxsr   )r   r   seriesr2   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 )	Nr+   r   r   r   )r   r   rA   rg   rh   ri   r   rm   r   )r   r/   r   r   r   r0   r   )r   r1   r2   r"   r#   r&   r&   r'   $test_reindex_level_partial_selection   s   z3TestMultiLevel.test_reindex_level_partial_selectionrY   rT   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)rV   rW   rX   r   rA   r)   rU   rP   )r   rV   r   firstr   r   r   assert_index_equal)r   rY   r>   r^   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)rS   r   r)   )r   rn   r   r   r   r   len)r   idx_tpdtidxrH   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 )NrC   r   rV   rW   )rV   rX           r6   )
rZ   nanr   r   rn   dtypesrV   rW   r   r   )r   ry   r   r^   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   r5   )r   rw   rT   rA   rj   rk      r   )orient)r   rA   r)   rT   )r5   rj   rk   r   )r   r   r   r   rx   )datetimedater   	from_dictr   r   )r   data_dicr"   ry   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_1col_1col_2r6   r   r   r   ))r   Fr   r   )r   rZ   r   	set_indexatr   r   )r   r^   r#   r&   r&   r'   test_multiindex_with_na1  s*   

	

z&TestMultiLevel.test_multiindex_with_naN)__name__
__module____qualname__r(   r4   r=   rL   r_   rr   ru   r   r   r   r   r   r   mark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   rw   C)rX   rW   rV   )r   r   rA   r   r   rA   )r   rA   r   r   r   rA   colint64)r   dtypeFT)r   rT   re   rA   ))rw   rV   )rw   rX   )r   rV   )r   rW   rw   r   rV   rX   )r   r   ranger   r   is_monotonic_increasing
sort_indexrn   r0   pd
IndexSlicer   r   )r   r   r^   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   numpyrZ   r   pandasr   r   r   r   pandas._testing_testingr   r   r   r&   r&   r&   r'   <module>   s      =