U
    `»{jö@  ã                   @   sl   d dl Zd dlZd dlmZ d dlZd dlmZmZm	Z	m
Z
mZ d dlmZ G dd„ dƒZG dd„ dƒZdS )é    N)ÚPerformanceWarning)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚconcatc                
   @   s`   e Zd Zdd„ Zej ddddddd	d
g¡dd„ ƒZdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestIndexConcatc                 C   sÔ   t dddgdddgddd	gd
œƒ}t ddddgiƒ}tdddgƒ|_tdddgƒ|_t||gdd|d�}tj}t |||dgddddgddddgddd	|ggtddddgƒd�}|sÄ|jddddg }t ||¡ d S )NÚaÚbÚcé   é   é   g      @gš™™™™™	@g333333ó?)Ztest1Ztest2Útest3r   gÍÌÌÌÌÌ@gš™™™™™@g333333@ÚxÚyÚzÚqT)ÚaxisÚignore_indexÚsort©Úindex)	r   r   r   r   ÚnpÚnanÚlocÚtmÚassert_frame_equal)Úselfr   Zframe1Zframe2Zv1r   Úexpected© r    úe/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/reshape/concat/test_index.pyÚtest_concat_ignore_index   s&    ÿ



üù	z(TestIndexConcat.test_concat_ignore_indexz#name_in1,name_in2,name_in3,name_out)Úidxr#   r#   r#   )r#   r#   NN)r#   NNN)Úidx1Úidx2NN)r$   r$   r%   N)r$   r%   Zidx3N)NNNNc           
      C   s¾   t dddg|d�t dddg|d�t dddg|d�g}dd„ t|d	d
dgƒD ƒ}t|dd�}t dddddg|d�}tdddtjtjgtjdddtjgtjtjdddgdœ|d�}	t ||	¡ d S )Nr	   r
   r   ©ÚnameÚdÚec                 S   s&   g | ]\}}t |d ddgi|d�‘qS )r   r   r   r   )r   )Ú.0Úir   r    r    r!   Ú
<listcomp>>   s    z@TestIndexConcat.test_concat_same_index_names.<locals>.<listcomp>r   r   r   r   ©r   r   r   )r   r   r   r   )r   Úzipr   r   r   r   r   r   )
r   Zname_in1Zname_in2Zname_in3Zname_outÚindicesÚframesÚresultZexp_indr   r    r    r!   Útest_concat_same_index_names+   s"    ýÿýú	z,TestIndexConcat.test_concat_same_index_namesc                 C   sÊ   t tj dd¡tdƒttdƒdd�d�}t tj dd¡tdƒttdƒdd�d�}t||gdd	gd
dgd�}t||gdd	gd
gd�}t|jjƒ}d|d< |jj	|dd� t
 ||¡ |jj|jjksÆt‚d S )Nr   ÚABCÚabcZindex_ar&   )Úcolumnsr   Zindex_bÚkey0Úkey1Zlvl0Zlvl1©ÚkeysÚnamesr   T)Zinplace)r   r   ÚrandomZrandÚlistr   r   r   r:   Z	set_namesr   r   ÚAssertionError)r   r	   r
   r1   Úexpr:   r    r    r!   Útest_concat_rename_indexO   s"    ýýz(TestIndexConcat.test_concat_rename_indexc                 C   s2   t ddgƒ}t||g|dd�}|j|jk	s.t‚d S )Nr   r   T©r   Úcopy)r   r   r   r=   )r   r   ZserÚcombr    r    r!   Útest_concat_copy_index_seriese   s    z-TestIndexConcat.test_concat_copy_index_seriesc                 C   sR   t ddgddggddgd�}t||g|dd	�}|j|jk	s>t‚|j|jk	sNt‚d S )
Nr   r   r   é   r	   r
   ©r5   Tr@   )r   r   r   r=   r5   )r   r   ÚdfrB   r    r    r!   Útest_concat_copy_index_framek   s    z,TestIndexConcat.test_concat_copy_index_framec                 C   s¨  t dddgdd�}t dddgd	d�}t||gdd
d�}t|jtjƒsHt‚tddgddgddggƒ}tj	||d
d
d� t dddgƒ}t dddgƒ}t||gddd�}t|jtjƒs´t‚tddgddgddggƒ}t d¡|_tj	||d
d
d� tddgddgdœƒ}tddgddgdœƒ}t||gdd
d�}tddgddgddgddggddgd�}tj	||d
d
d� t||gdd
d�}tddddgddddggƒ}tj	||d
d
d� d S )Nr   r   r   r   r&   rD   é   é   r   T)r   r   ©Zcheck_index_typeZcheck_column_typeF)ÚAÚBé   é   r   rK   rL   rE   )
r   r   Ú
isinstancer5   ÚpdÚ
RangeIndexr=   r   r   r   )r   Ús1Ús2Úresr>   Údf1Údf2r    r    r!   Útest_default_indexr   s*    (z"TestIndexConcat.test_default_indexc                 C   s$  t tjjdddd� dd¡ddddgd�}t||gd	d
�}t |jd d …d d…f |¡ t |jd d …dd …f |¡ t||gdd
�}t |jd d… |¡ t |jdd … |¡ tt tj 	dd¡ddddgd�t tjjdddd� dd¡ddgd�gd	d
�}t||gd	d
�}t |jd d …d d…f |¡ t |jd d …dd …f |¡ t||gdd
�}t |jd d… |¡ t |jdd … |¡ |jdd…d d …f  
|jdd … ¡}t ||¡ |jdd…d d …f  
|jdd… ¡ 
|jdd… ¡}t ||¡ t||gdd
�}| 
|¡}t ||¡ d S )Nr   é
   é(   )ÚsizerD   rK   ÚCrE   r   r-   rL   é   r   rI   rN   é	   )r   r   r;   ÚrandintZreshaper   r   r   ÚilocÚrandnÚ_append)r   rF   r1   r   r    r    r!   Útest_dups_index’   s@    
þ ÿþù
&6
zTestIndexConcat.test_dups_indexN)Ú__name__Ú
__module__Ú__qualname__r"   ÚpytestÚmarkÚparametrizer2   r?   rC   rG   rW   rb   r    r    r    r!   r      s$   ùþ
 r   c                   @   sL  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	d
ge
dƒgdge dd¡gdgddggdgejdddd�gg¡ej 	dd
ge
dƒgdge dd¡gdgddggdgejdddd�gg¡eedœdd„ƒƒZdd„ Zdd„ Zdd„ Zej 	d d!d"ggd!d"d"ggg¡d#d$„ ƒZd%d&„ Zd'd(„ Zd)d*„ Zej 	d+d,d-d.g¡d/d0„ ƒZd1d2„ Zd3S )4ÚTestMultiIndexConcatc                 C   sp   |}|j }t||gddgdgd�}|j jd|j ks8t‚t |jd |¡ t |jd |¡ |j jdkslt‚d S )Nr   r   Ú	iterationr8   )rj   r   )r   r   r:   r=   r   r   r   Znlevels)r   Z multiindex_dataframe_random_dataÚframer   r1   r    r    r!   Ú test_concat_multiindex_with_keysÃ   s    z5TestMultiIndexConcat.test_concat_multiindex_with_keysc           	      C   s:  t jdgtdƒgdd gd�}tdtdƒi|tjd�}t||gddgdgd	�}t jddgdgtdƒgddd gd�}tdttdƒƒd i|tjd�}t 	||¡ t||d d… gddgdgd	�}dgd dgd  }dgd
 }ttdƒƒttdƒƒ }tt
|||ƒƒ}t j|ddd gd�}td|i|tjd�}t 	||¡ d S )Nr   rH   Úlevel1©r:   Úcol)r   Údtyper   Úlevel2r8   rM   )r   Úfrom_productÚranger   r   Zint32r   r<   r   r   r.   Úfrom_tuples)	r   r   rF   r1   r   rq   rm   Zno_nameZtuplesr    r    r!   Ú/test_concat_multiindex_with_none_in_index_namesÍ   s"     ÿ  
zDTestMultiIndexConcat.test_concat_multiindex_with_none_in_index_namesc                 C   sª   t tj dd¡ƒ}tt d¡t d¡gt t d¡d¡t 	t d¡d¡gd�|_
t|jdddgd d …f |jdgd d …f gƒ}|jddddgd d …f }t ||¡ d S )Nr]   r   r   ©ÚlevelsÚcodesrD   rH   )r   r   r;   r`   r   rP   rQ   ÚrepeatÚarangeZtiler   r   r_   r   r   )r   rF   rT   r>   r    r    r!   Ú!test_concat_multiindex_rangeindexâ   s    "þ0z6TestMultiIndexConcat.test_concat_multiindex_rangeindexc                 C   sÜ   ddl m} t dgdgg¡}tdg|d�}t dgdgg¡}tdg|d�}||dœ}td	d
gdgddggddgddgddggdd d gd�}tdgdgg|d�}t||ƒdgd�}	t |	|¡ t|dgd�}
t |
|¡ d S )Nr   )Údeepcopyr	   r
   r   r   r   )rR   rS   rR   rS   Ztestname)rw   rx   r:   rn   )rA   r|   r   rr   r   r   r   r   )r   r|   Zexample_multiindex1Zexample_dataframe1Zexample_multiindex2Zexample_dataframe2Zexample_dictÚexpected_indexr   Zresult_copyZresult_no_copyr    r    r!   Ú(test_concat_multiindex_dfs_with_deepcopyñ   s     
ýz=TestMultiIndexConcat.test_concat_multiindex_dfs_with_deepcopyÚmi1_listr	   r   r
   g       @g      @r   rK   rL   r(   Z2017Z2018)ÚstartÚendZperiodsÚmi2_list)r   r‚   c           
   	   C   s  t  |¡}t  |¡}tt dt|ƒf¡|d�}tt dt|ƒf¡|d�}|d |d krŠt |d t|d ƒgddddgddddggd�}nDt |d |d  t|d ƒt|d ƒ gddddgddddggd�}tt dt|ƒf¡|d�}t d ¡� t	||fdd�}	W 5 Q R X t 
||	¡ d S )Nr   rE   r   rv   r   r   r-   )r   rr   r   r   ZzerosÚlenr<   r   Úassert_produces_warningr   r   )
r   r   r‚   Zmi1Zmi2rU   rV   Zexpected_miÚexpected_dfÚ	result_dfr    r    r!   Ú*test_concat_with_various_multiindex_dtypes  s&    

þþûz?TestMultiIndexConcat.test_concat_with_various_multiindex_dtypesc                 C   sˆ   t ddddgidddgd�}t|gdgd	�}dgdddgg}|j}t |¡}t ||¡ |}t ddddgit |¡d�}t ||¡ d S )
Nro   r	   r
   r   Ú1Ú2r   ÚX©r9   )r   r   r   r   rr   r   Úassert_index_equalr   )r   rF   Ú	iterablesZresult_indexr}   r†   r…   r    r    r!   Útest_concat_multiindex_8  s    
 ÿz,TestMultiIndexConcat.test_concat_multiindex_c              	   C   s¶  t ddgiƒ}t ddgiƒ}t ddgiƒ}t|||gdddgd�}tjtdd	�� |jd
d d …f }W 5 Q R X t ddddgitd
dd
gƒd�}tjtdd	�� |jd
 }W 5 Q R X t ||¡ t ddddgiƒ}t dddgiƒ}t dddgiƒ}t|||gdddgd�}tjtdd	�� |jd
d d …f }W 5 Q R X t dddddddgdddddddgtdƒdœƒ 	ddg¡}d d g|j
_tjtdd	�� |jd
d d …f }W 5 Q R X t ||¡ d S )Nr'   r   r   r   r   r   r‹   zindexing past lexsort depth©Úmatch)r   r   )r   r   r   r	   r
   r   r(   r   Zaababcd)r	   r
   r'   )r   r   r   r„   r   r   r   r   r<   Z	set_indexr   r:   )r   rU   rV   Zdf3Zdf_aZout_aZdf_bZout_br    r    r!   Útest_concat_with_key_not_uniqueI  sV     ÿ ÿ ÿ ÿýÿú ÿz4TestMultiIndexConcat.test_concat_with_key_not_uniquec              	   C   sh   t ddgidgd�}t ddgidgd�}d}tjt|d��$ t||gddgdddggd� W 5 Q R X d S )	NrK   r   r   r   r   z*Level values not unique: \['x', 'y', 'y'\]r�   )r9   rw   ©r   rf   ZraisesÚ
ValueErrorr   )r   rU   rV   Úmsgr    r    r!   Ú"test_concat_with_duplicated_levelsw  s
    z7TestMultiIndexConcat.test_concat_with_duplicated_levelsrw   r   r   c              	   C   sZ   t ddgidgd�}t ddgidgd�}d}tjt|d�� t||g|d� W 5 Q R X d S )	NrK   r   r   r   r   z+levels supported only when keys is not Noner�   )rw   r’   )r   rw   rU   rV   r”   r    r    r!   Ú&test_concat_with_levels_with_none_keys  s
    z;TestMultiIndexConcat.test_concat_with_levels_with_none_keysc                 C   sv   t dddgiƒ}t dddgiƒ}t||gddd�}t ddgddgdœƒ}t ||¡ t dd¡}tj|j|dd	� d S )
Nr	   r   r   r
   T)r   r   )r	   r
   r   )Úexact)r   r   r   r   rP   rQ   rŒ   r   )r   rU   rV   r1   r   r}   r    r    r!   Útest_concat_range_index_result‡  s    z3TestMultiIndexConcat.test_concat_range_index_resultc                 C   s�   t dddggtdddgdd�d�}t ddggtddgdd�d�}t||gdd	dd
�}t dddgddtjggtdddgdd�d�}t ||¡ d S )Nr   r   r   r   Úobject©rp   rE   TÚouter©r   Újoinr   ç      ð?©r   r   r   r   r   r   r   )r   rU   rV   r1   r   r    r    r!   Útest_concat_index_keep_dtype’  s    " ÿz1TestMultiIndexConcat.test_concat_index_keep_dtypec                 C   s�   t dddggtdddg|d�d�}t ddggtddg|d�d�}t||gdddd	�}t ddd
gddtjggtdddg|d�d�}t ||¡ d S )Nr   r   r   r   rš   rE   Tr›   rœ   rž   rŸ   )r   Zany_numeric_ea_dtyperU   rV   r1   r   r    r    r!   Ú'test_concat_index_keep_dtype_ea_numericœ  s    
 ÿþz<TestMultiIndexConcat.test_concat_index_keep_dtype_ea_numericrp   ZInt8ZInt16ÚInt32c                 C   s�   t dddggtdddg|d�d�}t ddggtddgdd�d�}t||gdd	dd
�}t dddgddtjggtdddgdd�d�}t ||¡ d S )Nr   r   r   r   rš   rE   r¢   Tr›   rœ   rž   rŸ   )r   rp   rU   rV   r1   r   r    r    r!   Útest_concat_index_find_common©  s    " ÿz2TestMultiIndexConcat.test_concat_index_find_commonc                 C   s¶   t dddgƒ}t ddgƒ}t ddddgƒ}t g td�}t||||gddddd	�}tdgd
 tjg dgd
 tjg dtjgd tjgd dg tjg gtd�}tj||ddd� d S )Nr	   r
   r   r(   rš   Fr›   r   )r   r�   r   r   r   r   TrJ   )r   r™   r   r   r   r   r   r   )r   rR   rS   Zs3Zs4r1   r   r    r    r!   Ú(test_concat_axis_1_sort_false_rangeindex´  s2    
    ÿüù	   ÿz=TestMultiIndexConcat.test_concat_axis_1_sort_false_rangeindexN)rc   rd   re   rl   ru   r{   r~   rf   rg   rh   rs   r   rz   rP   Z
date_ranger<   r‡   rŽ   r‘   r•   r–   r˜   r    r¡   r£   r¤   r    r    r    r!   ri   Â   sD   
üþ	üþ
 ÿ.



ri   )Únumpyr   rf   Zpandas.errorsr   ZpandasrP   r   r   r   r   r   Zpandas._testingZ_testingr   r   ri   r    r    r    r!   Ú<module>   s    2