U
    c"                     @   sN   d dl Zd dlmZ d dlZd dlmZmZmZ d dl	m
Z G dd dZdS )    N)CategoricalDtype)Categorical	DataFrameSeriesc                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestCategoricalConcatc                 C   s  t tjddddddddgd	}t tjd
ddddddgd	}dddddddg}tt||d< tj||fdd|d}t dddddddddddddgddddddtjtjtjtjtjtjtjgddddd
ddddddddgd gd | d}|d 	|d j
|d< t|| d S ) N   int64dtype      abc)columns         ZoneZtwohr   T)axisignore_indexsort	               
                     )r   r   r   r   )r   nparangeZreshaper   r   pdconcatnanastyper
   tmassert_frame_equal)selfr   df1df2Z
cat_valuesresexp r1   P/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/reshape/concat/test_categorical.pytest_categorical_concat   s<     "z-TestCategoricalConcat.test_categorical_concatc                 C   s   dddg}t dddg}tdddg}tddd	g}tjt|||gd|d
}|jdk}tdddg|d}t|| |jdk}tdddg|d}t|| |jdk}tdddg|d}t|| d S )Ncatobjnumr   r   r   r   r   r   )r   keysobjectFTindexr   category)r   r   r&   r'   Zdtypesr*   assert_series_equal)r,   r:   r4   r5   r6   dfresultexpectedr1   r1   r2   test_categorical_concat_dtypes4   s    



z4TestCategoricalConcat.test_categorical_concat_dtypesc                 C   s   dddddg}t dtjddg|dd}t dtjddg|dd}t dtjddg|dd}tj|||gdd}tjddddg|d}tddtjtjgtjddtjgtjtjddgd	dddg|d
}t|| d S )Nr   r   r   r   r   
categoriesr9   r   )r   r   r   )r   r:   )	r   r&   CategoricalIndexr'   r   r$   r(   r*   r+   )r,   rB   r   r   r   r>   Zexp_idxr0   r1   r1   r2   test_concat_categoricalindexI   s    	z2TestCategoricalConcat.test_concat_categoricalindexc                 C   s8  t tddd}t tddd}t td}tj||gdd}t|| t tddd}tj||gdd}t|| t tdd	d
dd	d
dgdd}t||g}t|| t tjddd}t td}t||	t
tdd}t||g}tt||gt||g	t
tdd}t|| d S )Nabcr;   r	   ZabdZabcabdTr   Zabcabcr   r   r   )r:   r
   r   r   aabbcacabAB)r   listr&   r'   r*   r<   r$   r%   r   r)   r   r+   )r,   ss2r0   r/   r   r   r.   r1   r1   r2    test_categorical_concat_preserve_   s*    z6TestCategoricalConcat.test_categorical_concat_preservec                 C   s   t tjddd}t td}t||ttddd}t	||g}tt	||gt	||gttddd}t
|| t|t|tdd	dd}t	||g}t	|j|jtd
d|j|jtd
dg}t
|| d S )Nr   r   r	   rH   rI   rJ   rL   ZaberA   r   rC   )r   r$   r%   rM   r   r)   r   Z	set_indexr&   r'   r*   r+   r   Zset_axisr:   r8   )r,   r   r   r.   r>   r?   Zdf3r1   r1   r2    test_categorical_index_preserver   s8    z6TestCategoricalConcat.test_categorical_index_preserverc                 C   sj   t tjdddd}t ddgdd}tj||gd	d
}t tjdddtjdddddg}t|| d S )Nz
2017-01-01r   z
US/Pacific)Zperiodstzr   r   r;   r	   TrG   )rR   z
2017-01-02)r   r&   Z
date_ranger'   Z	Timestampr*   r<   )r,   r   r   r>   r?   r1   r1   r2   test_concat_categorical_tz   s    z0TestCategoricalConcat.test_concat_categorical_tzc                 C   s   t tdddgddd}tddd	gddd
gdd}tj||gdd}t tdddtjgddtddtjd	gddd}t|| d S )Nr   r   r   r;   rK   )r
   namer   r   r   r   rL   )r:   rT   rC   r	   floatrJ   )r   r   r&   r'   r$   r(   r*   assert_equal)r,   r=   Zserr>   r?   r1   r1   r2   !test_concat_categorical_unchanged   s    z7TestCategoricalConcat.test_concat_categorical_unchangedc                 C   s   t ddddddgtdd}t|d	 |d
< |d
 jdddg |dd }|dd  }t|d
 jj|d
 jj t|d
 jj|d
 jj t	||g}t|d
 jj|d
 jj |
|}t|d
 jj|d
 jj d S )Nr   r   r   r   r!   r   Zabbaae)id	raw_graderY   Zgradeer   r   r   )r   rM   r   r4   Zset_categoriesr*   Zassert_index_equalrB   r&   r'   _append)r,   r=   r-   r.   ZdfxZdfar1   r1   r2   test_categorical_concat_gh7864   s    
z4TestCategoricalConcat.test_categorical_concat_gh7864c                 C   s   t dddgitddgd}t dddgitddgd}t||g}t dddddgiddddgd}t|| tddgtddgd}tddgtddgd}t||g}tddddgddddgd}t|| d S )	NZfoor   r   barr9   r   r   Zbaz)r   r   r&   r'   r*   rV   r   )r,   r   r   r/   r0   r1   r1   r2   test_categorical_index_upcast   s     z3TestCategoricalConcat.test_categorical_index_upcastc              	   C   s   t ddddgi}t dddgtdddgdd}tj||gdd	}tdg}t ddddddgtjd
d
d
dddg|ddddddddgd}t	|| d S )Nf1r   r   r   r   r;   )r_   f2T)r   r   r	   r9   )
r   r   r)   r&   r'   r   r   Z
from_codesr*   r+   )r,   r-   r.   r>   r
   r?   r1   r1   r2   'test_categorical_missing_from_one_frame   s    $
z=TestCategoricalConcat.test_categorical_missing_from_one_framec                 C   s   t jddgddgdd}t jddgddgdd}t jddddgddgdd}tdddgi|d}tdd	d
gi|d}t ||f}tdddd	d
gi|d}t|| d S )Nr   r   F)rB   ZorderedrK   r   r   r9   r   r   )r&   rD   r   r'   r*   r+   )r,   Zc1c2c3r-   r.   r>   r?   r1   r1   r2   7test_concat_categorical_same_categories_different_order   s    
  zMTestCategoricalConcat.test_concat_categorical_same_categories_different_orderN)__name__
__module____qualname__r3   r@   rE   rP   rQ   rS   rW   r\   r^   rb   re   r1   r1   r1   r2   r      s   % r   )Znumpyr$   Zpandas.core.dtypes.dtypesr   Zpandasr&   r   r   r   Zpandas._testingZ_testingr*   r   r1   r1   r1   r2   <module>   s
   