U
    +if*                     @   s`   d dl Zd dl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)	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   Y/home/mars/bis/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st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   r9   Z	set_namesr   r   AssertionError)r   r   r	   r0   expr9   r   r   r    test_concat_rename_indexM   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_seriesc   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	   r4   Tr?   )r   r   r   r<   r4   )r   r   dfrA   r   r   r    test_concat_copy_index_framei   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st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%   rC         r   T)r   r   )Zcheck_index_typeZcheck_column_typeF)AB      r   rI   rJ   rD   )
r   r   
isinstancer4   pd
RangeIndexr<   r   r   r   )r   s1s2resr=   df1df2r   r   r    test_default_indexp   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   
   (   )sizerC   rI   CrD   r   r,   rJ      r   rH   rL   	   )r   r   r:   randintZreshaper   r   r   ilocrandn_append)r   rE   r0   r   r   r   r    test_dups_index   s@    
 
&6
zTestIndexConcat.test_dups_indexN)__name__
__module____qualname__r!   pytestmarkparametrizer1   r>   rB   rF   rU   r`   r   r   r   r    r      s$   
 r   c                   @   s   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S )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   	iterationr7   )rh   r   )r   r   r9   r<   r   r   r   Znlevels)r   Z multiindex_dataframe_random_dataframer   r0   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   rG   level1r9   col)r   Zdtyper   level2r7   rK   )r   from_productranger   r   Zint32r   r;   r   r   r-   from_tuples)	r   r   rE   r0   r   rn   rk   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codesrC   rG   )r   r   r:   r^   r   rN   rO   repeatarangeZtiler   r   r]   r   r   )r   rE   rR   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   )rP   rQ   rP   rQ   Ztestname)rt   ru   r9   rl   )r@   ry   r   ro   r   r   r   r   )r   ry   Zexample_multiindex1Zexample_dataframe1Zexample_multiindex2Zexample_dataframe2Zexample_dictZ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
   rI   rJ   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rt |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   rD   r   rs   r   r   r,   )r   ro   r   r   Zzeroslenr;   r   Zassert_produces_warningr   r   )
r   r{   r~   Zmi1Zmi2rS   rT   Zexpected_miZexpected_dfZ	result_dfr   r   r    *test_concat_with_various_multiindex_dtypes  s&    

z?TestMultiIndexConcat.test_concat_with_various_multiindex_dtypesN)ra   rb   rc   rj   rr   rx   rz   rd   re   rf   rp   r   rw   rN   Z
date_ranger;   r   r   r   r   r    rg      s.   
	
 rg   )numpyr   rd   ZpandasrN   r   r   r   r   r   Zpandas._testingZ_testingr   r   rg   r   r   r   r    <module>   s    2