U
    >vf–  ã                   @   s®   d dl Zd dlZd dlZd dlmZmZ d dlm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gdggg g gg¡dd„ ƒZdd„ Zdd„ Zdd„ ZdS )é    N)ÚIndexÚ
MultiIndexc                 C   s´   |   t| d d… ƒ¡\}}t|tƒs(t‚|jddgks:t‚dd„ |jD ƒddgksVt‚|   t| ƒ¡\}}t|tƒsvt‚|d ks‚t‚|jddgks”t‚dd„ |jD ƒddgks°t‚d S )Né   ÚfirstÚsecondc                 S   s   g | ]
}|j ‘qS © ©Úname©Ú.0Úlevelr   r   úK/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/indexes/multi/test_reindex.pyÚ
<listcomp>   s     z test_reindex.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r   r   r
   r   r   r   r      s     )ÚreindexÚlistÚ
isinstancer   ÚAssertionErrorÚnamesÚlevels)ÚidxÚresultÚindexerr   r   r   Útest_reindex   s    r   c           
   	   C   sÞ   t dgƒ}| j|dd\}}|j| dd\}}| j|ddd}| j|ddd}| |¡s\t‚t ddd	g¡}tj||d
d | |¡sŠt‚t ddddddg¡}	tj||	d
d t	j
tdd | j| ddd W 5 Q R X d S )NZoner   ©r   Úright)r   ÚhowÚleftr   é   r   F)Zcheck_dtypeéÿÿÿÿzFill method not supported©ÚmatchÚpad)Úmethodr   )r   r   ÚjoinÚequalsr   ÚnpÚarrayÚtmÚassert_numpy_array_equalÚpytestÚraisesÚ	TypeError)
r   ÚindexÚtargetr   Ztarget2Zindexer2Z	exp_indexZ
exp_index2Zexp_indexerZexp_indexer2r   r   r   Útest_reindex_level   s    
r.   c                 C   sÄ  |   ¡ } |   ¡ }d d g | _|_t ddgddgg¡}|  g ¡d jd d gksRt‚|  t g ¡¡d jd d gkstt‚|  | ¡ ¡d jd d gks”t‚|  |j	¡d jd d gks²t‚|  | ¡ ¡d jd d gksÒt‚|  |j	¡d jd d gksðt‚ddg| _|  g ¡d jddgkst‚|  t g ¡¡d jddgks<t‚|  | ¡ ¡d jddgks^t‚|  |j	¡d jddgks~t‚|  | ¡ ¡d jddgks t‚|  |j	¡d jddgksÀt‚d S )Né   r   é   r   r   ÚfooÚbar)
Úcopyr   r   Úfrom_productr   r   r%   r&   ÚtolistÚvalues)r   r-   Zother_dtyper   r   r   Ú;test_reindex_preserves_names_when_target_is_list_or_ndarray.   s"    "  
$" "r7   c                  C   sb   t jddgddggddgd} | jg ddd jddgks>t‚| jg ddd jddgks^t‚d S )	Nr   r/   ÚaÚbr1   r2   )r   r   )r   r4   r   r   r   )r   r   r   r   Ú=test_reindex_lvl_preserves_names_when_target_is_list_or_arrayG   s     r:   c                  C   sÚ   t  ddgddgg¡} | jg ddd jd jjtjks<t‚| jg ddd jd jjtj	ksbt‚t
 ddg¡}t
jdd	d
d}t  ||g¡}|jg ddd jd j|jks²t‚|jg ddd jd j|jksÖt‚d S )Nr   r/   r8   r9   r   r1   r2   z
2016-01-01r   z
US/Pacific)ZperiodsÚtz)r   r4   r   r   ÚdtypeÚtyper%   Zint64r   Zobject_ÚpdZCategoricalZ
date_range)r   ÚcatZdtiÚmir   r   r   Ú@test_reindex_lvl_preserves_type_if_target_is_empty_list_or_arrayN   s    &&$rA   c              	   C   sT   t j| jt jd}|  | ¡}t ||¡ tjt	dd | j| dd W 5 Q R X d S )N©r<   zInvalid fill methodr   Úinvalid)r"   )
r%   ÚarangeÚsizeÚintpZget_indexerr'   r(   r)   r*   Ú
ValueError)r   ÚexpectedÚactualr   r   r   Útest_reindex_base\   s
    
rJ   c               	   C   sb   t  ddddg¡} tjt d¡| d}t  dddg¡}d}tjt|d | 	|¡ W 5 Q R X d S )N)r   r   )r/   r/   )r   r   r   ©r,   z'cannot handle a non-unique multi-index!r   )
r   Úfrom_tuplesr>   ÚSeriesr%   rD   r)   r*   rG   r   )r   r8   Únew_idxÚmsgr   r   r   Útest_reindex_non_uniquef   s    rP   r6   r8   Úxc                 C   sj   t  | ¡}|jt dg¡dd\}}t dg| d gg g gd}tjg |jd}t ||¡ t ||¡ d S )Nr9   r   r   r/   )r   ÚcodesrB   )	r   Zfrom_arraysr   r%   r&   r<   r'   Úassert_index_equalr(   )r6   r   r   Zresult_indexerrH   Zexpected_indexerr   r   r   Útest_reindex_empty_with_levelp   s    
rT   c                  C   sh   ddddg} t  | d d… ¡}t| ƒ}| |¡\}}t ||¡ tjddddgtjd	}t 	||¡ d S )
N)ÚirU   )rU   Új)rV   rU   rV   r   r   r/   r   rB   )
r   rL   r   r   r'   rS   r%   r&   rF   r(   )Úkeysr@   r   Úresr   rH   r   r   r   Útest_reindex_not_all_tuples{   s    rY   c                  C   sn   t  dddg¡} tjdddg| d}t  ddddd	d
dddg	¡}tjtdd |j|ddd W 5 Q R X d S )N)r0   ÚA)r   rZ   )r   ÚBg{®Gáz”?g{®Gáz„?gú~j¼t“ˆ?rK   )r0   r[   )r   ÚC)é   r[   )r]   r\   )é   r[   )r^   r\   zFlimit argument only valid if doing pad, backfill or nearest reindexingr   r   r/   )Z
fill_valueÚlimit)r   rL   r>   rM   r)   r*   rG   r   )r   ZdfrN   r   r   r   Ú&test_reindex_limit_arg_with_multiindex†   s&    ÷ÿþr`   c                  C   s^   t  ddg¡} t  ddg¡}tjddg| d}tjddg|d}| |¡}|}t ||¡ d S )N))r8   Nr/   ))r9   Nr   r/   r   rK   )r   rL   r>   Z	DataFrameZreindex_liker'   Zassert_frame_equal)r,   Úindex2Z	df1_dtypeZ	df2_dtyper   rH   r   r   r   Ú+test_reindex_with_none_in_nested_multiindex¢   s    
rb   )Znumpyr%   r)   Zpandasr>   r   r   Zpandas._testingZ_testingr'   r   r.   r7   r:   rA   rJ   rP   ÚmarkZparametrizerT   rY   r`   rb   r   r   r   r   Ú<module>   s    



