U
    f/e%                     @   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                
   @   sj   e Zd Zdd Zejddddddd	d
gdd Zdd Zejdddg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   J/tmp/pip-unpacked-wheel-tiezk1ph/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_indextest_seriesTFc                 C   s   |r4t ddg}t||g|dd}|j|jk	stnNtddgddggddgd	}t||g|dd}|j|jk	srt|j|jk	std S )
Nr   r   T)r   copyr      r   r	   r4   )r   r   r   r<   r   r4   )r   r?   r   Zsercombdfr   r   r    test_concat_copy_indexc   s    z&TestIndexConcat.test_concat_copy_indexc                 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%   rA         r   T)r   r   )Zcheck_index_typeZcheck_column_typeF)AB      r   rH   rI   rB   )
r   r   
isinstancer4   pd
RangeIndexr<   r   r   r   )r   s1s2resr=   Zdf1Z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   
   (   )sizerA   rH   CrB   r   r,   rI      r   rG   rK   	   )r   r   r:   randintZreshaper   r   r   ilocrandnappend)r   rD   r0   r   r   r   r    test_dups_index   s@    
 
&6
zTestIndexConcat.test_dups_indexN)__name__
__module____qualname__r!   pytestmarkZparametrizer1   r>   rE   rR   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d	S )
TestMultiIndexConcatc                 C   s   t ddddgdddggdddd	d	d
d
dddg
dd	d
dd	d	d
dd	d
g
gddgd}ttjdd|tdddgddd}t||gdd	gdgd}|jjd|j kst	t
|jd | t
|jd	 | |jjdkst	d S )NZfoobarZbazZquxZoneZtwoZthreer   r   r   r   firstsecondlevelscodesr9   rS   rH   rI   rV   r=   r%   )r   r4   	iterationr7   )rj   )r   r   r   r:   r[   r   r   r   r9   r<   r   r   r   Znlevels)r   r   framer0   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   rF   level1r9   col)r   Zdtyper   level2r7   rJ   )r   from_productranger   r   Zint32r   r;   r   r   r-   from_tuples)	r   r   rD   r0   r   rp   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 )NrX   r   r   )rh   ri   rA   rF   )r   r   r:   r[   r   rM   rN   repeatZarangeZtiler   r   rZ   r   r   )r   rD   rQ   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   )rO   rP   rO   rP   Ztestnamerg   rn   )r@   rw   r   rq   r   r   r   r   )r   rw   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_deepcopyN)r^   r_   r`   rl   rt   rv   rx   r   r   r   r    rc      s   rc   )Znumpyr   ra   ZpandasrM   r   r   r   r   r   Zpandas._testingZ_testingr   r   rc   r   r   r   r    <module>   s    2