a
    ±<bÊ8  ã                   @   s`   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¢ZG dd„ dƒZG dd„ dƒZdS )é    N)Ú	DataFrameÚ
MultiIndexÚSeries)ÚsumÚprodÚminÚmaxZmedianÚmeanZskewZmadÚstdÚvarZsemc                	   @   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e¡ej dddg¡ej dddg¡ej dddg¡dd„ ƒƒƒƒZej de¡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/d0„ Zej d1d2d1g¡d3d4„ ƒZd5d6„ Zd7d8„ Zd9S ):Ú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 sÖ0    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ÚFutureWarningr   Ú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'   úl/Users/vegardjervell/Documents/master/model/venv/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_level3   s    
*

z TestMultiLevel.test_binops_levelc                 C   s0   |}|j ddg }|jddg }t ||¡ d S )Nr   é   ©ÚfooÚone©Úbarr6   )ÚilocÚlocr   r   )r!   Ú multiindex_dataframe_random_dataÚframer&   Z	reindexedr'   r'   r(   Útest_reindexJ   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 |¡sˆJ ‚d S )Né
   ©r   )r   r   r:   Úequalsr    r   )r!   r"   r#   Z	new_indexÚchunkZymdTr'   r'   r(   Útest_reindex_preserve_levelsQ   s    

z+TestMultiLevel.test_reindex_preserve_levelsc           	      C   s^   |}|d }|j  d¡}| |¡}| dd„ ¡}| dd„ ¡}| |j ¡}tj||dd d S )Nr   r   c                 S   s   | d S ©Né   r'   ©Úxr'   r'   r(   Ú<lambda>l   ó    z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>c                 S   s   | d S rC   r'   rE   r'   r'   r(   rG   m   rH   Fr   )r   Úget_level_valuesr   Úapplyr   r   r   r   )	r!   r;   r<   ÚsZgrouperÚgroupedZappliedr&   r%   r'   r'   r(   Útest_groupby_transformd   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 )Nr5   r8   Úbazr   )r6   ÚtwoÚthree©ÚlevelsÚcodesÚnamesé   ©ÚaÚbÚcÚd)r   r   rP   r   )r   r   r   ÚrandomZrandr   )r!   ÚmidxÚdfr'   r'   r(   Útest_groupby_cornerq   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)r_   Ús2)Úf2r`   )rb   ra   )Úf3r`   )rc   ra   )r   rD   r3   rU   é   é   )é   é   é	   r>   é   é   r?   r   )r   c                 S   s   | d dv S )Nr   )rb   rc   r'   )Úur'   r'   r(   rG   ˆ   rH   z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   r   rb   rc   )	r   Úfrom_tuplesr   r:   r   Úmapr   r   Úall)r!   r\   r]   Zdf1rL   r%   r'   r'   r(   Útest_groupby_level_no_obs{   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 )Nrd   )éÐ  r   rf   )rp   r   r>   )r    Ú
isinstancer   r   rn   )r!   r"   r#   r]   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   rD   r3   ))r   r   )r   rD   ©ÚBr3   )Údatar   )rU   rd   re   ))ÚZr   )rv   rD   rs   éÿÿÿÿ)r   r   rl   r   Úunionr   r   r   )r!   rF   ÚyÚresZ	exp_indexÚexpr'   r'   r(   Útest_alignment˜   s    ÿÿzTestMultiLevel.test_alignmentr1   r   r   r   ÚskipnaTFÚsortc           
         s‚   |}|j ||d}| ‡ ‡fdd„¡}t t¡" t|ˆ ƒ|ˆd}	W d   ƒ n1 sX0    Y  |rr|	j|d}	t ||	¡ d S )N)r   r~   c                    s   t | ˆ ƒˆdS )N)r}   ©r/   rE   ©r1   r}   r'   r(   rG   ¸   rH   z:TestMultiLevel.test_series_group_min_max.<locals>.<lambda>)r   r}   r   )r   Úaggr   r   r   r/   Ú
sort_indexr   )
r!   r1   r   r}   r~   Zseries_with_multilevel_indexZserrL   Ú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 s°0    Y  |rÚ|j|ˆ d	}|j|ˆ d	}| ˆ ¡j|  |¡}t | ˆ ¡|¡ t | ˆ ¡|¡ t ||¡ d S )
Nr   rD   rf   r   )r   r   r~   c                    s   ˆ  | ¡ t| ˆƒˆˆ dS )N)r}   r   )Úappendr/   rE   ©r   r1   Úpiecesr}   r'   r(   ÚaggfØ   s    
z1TestMultiLevel.test_frame_group_ops.<locals>.aggf)r   r   r}   )r   r   )r   Únanr9   r   rT   r    r   r   r   r   r   r/   r‚   Z	_get_axisrR   ÚrenameÚassert_index_equalr   )r!   r1   r   r   r}   r~   r;   r<   Z
level_namerL   r‰   rƒ   r„   Zlevel_indexr'   r‡   r(   Útest_frame_group_ops¿   s(    	
2z#TestMultiLevel.test_frame_group_opsÚmethr   r
   c                    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 sŠ0    Y  |d jdd	 |¡}t
 ||¡ t
 t¡" t|ˆƒdˆ d}W d   ƒ n1 sè0    Y  |jdd	 |¡}t
 ||¡ d S )
Nrd   r>   ©r   rU   c                    s   t | ˆƒˆ dS )N)Úddofr   rE   ©r   rŽ   r'   r(   rG   ó   rH   z7TestMultiLevel.test_std_var_pass_ddof.<locals>.<lambda>r   )r   r   r   )r   Zfrom_arraysr   ZarangeÚrepeatZtiler   r[   ÚrandnÚlenr   r   r   r/   r   r   r   r   )r!   rŽ   r   r]   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   rD   )r   r	   r   rI   r   r   rT   )r!   r"   r#   r%   Zk1Z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)r4   )r5   rO   r7   )r8   rO   rU   )r   r   r   )ZTotalsÚ )r   rl   r   r   r[   r“   r   Z_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}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¾0    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)©r5   r8   r   )r5   rN   r   )r5   Úquxr   r   r   )r   r   r   r   rD   rD   )r   r   r   r   r   r   )rR   rS   re   r   rU   r   rD   z^\(\('foo', 'bar', 0\), 2\)$)Úmatch)r   rD   )©r5   r8   )r5   rN   )r5   rž   r    )r   r   r   r[   r“   r   r:   r   Z	droplevelr   r   ÚpytestZraisesÚKeyErrorÚxsr   )r!   r   Zseriesr<   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 )	Nr5   rž   r   r   )r   r   rD   rf   rg   rh   r   r   r   )r   r9   r   r   r    r:   r   )r!   r;   r<   r%   r&   r'   r'   r(   Ú$test_reindex_level_partial_selectionS  s    z3TestMultiLevel.test_reindex_level_partial_selectionrZ   rU   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)rW   rX   rY   r   rD   r3   rV   rQ   )r   rW   r   Úfirstr   r   r   rŒ   )r!   rZ   Z
group_keysr]   Úgr%   r&   r'   r'   r(   Ú+test_empty_frame_groupby_dtypes_consistencyf  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)rT   r   r3   )r   rl   r   r   r   r¦   r”   )r!   Zidx_tpÚdtÚidxrK   r%   r'   r'   r(   Útest_duplicate_groupby_issuest  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 )NrF   r   rW   rX   )rW   rY   g        r?   )
r   rŠ   r   r   rl   ZdtypesrW   rX   r   r   )r!   ru   r   r]   r&   r%   r'   r'   r(   Útest_subsets_multiindex_dtypeƒ  s    


z,TestMultiLevel.test_subsets_multiindex_dtypeN)Ú__name__Ú
__module__Ú__qualname__r)   r¡   ÚmarkZparametrizer2   r=   rB   rM   r^   ro   rr   r|   ÚAGG_FUNCTIONSr…   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   rt   ÚC)rY   rX   rW   )r   r   rD   r   r   rD   )r   rD   r   r   r   rD   ÚcolZint64)r   ZdtypeFT)r   rU   rd   rD   ))rt   rW   )rt   rY   )r¶   rW   )r¶   rX   rt   r¶   rW   rY   )r   r   Úranger”   r   Zis_monotonicr‚   rl   r:   ÚpdZ
IndexSlicer   r   )r!   r­   r]   Ú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µ   )Znumpyr   r¡   Zpandasr¹   r   r   r   Zpandas._testingZ_testingr   r´   r   rµ   r'   r'   r'   r(   Ú<module>   s     t