U
    +ifB                      @   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                   @   s\   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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         one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 r3   _/home/mars/bis/venv/lib/python3.8/site-packages/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<   r6   r7   r8   dfresultexpectedr3   r3   r4   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   
categoriesr;   r   )r   r    r   )r   r<   )	r   r(   ZCategoricalIndexr)   r   r&   r*   r,   r-   )r.   rD   r   r   r   r@   Zexp_idxr2   r3   r3   r4   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s2r2   r1   r   r   r0   r3   r3   r4    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	   rI   rJ   rK   rM   ZaberC   r   rE   )r   r&   r'   rN   r   r+   r   Z	set_indexr(   r)   r,   r-   r   Zset_axisr<   r:   )r.   r   r   r0   r@   rA   Zdf3r3   r3   r4    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	   TrH   )rS   z
2017-01-02)r   r(   Z
date_ranger)   	Timestampr,   r>   )r.   r   r   r@   rA   r3   r3   r4   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=   rL   )r
   namer   r    r   r   rM   )r<   rV   rE   r	   floatrK   )r   r   r(   r)   r&   r*   r,   assert_equal)r.   r?   Zserr@   rA   r3   r3   r4   !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_grader[   Zgradeer   r   r   )r   rN   r   r6   Zset_categoriesr,   Zassert_index_equalrD   r(   r)   _append)r.   r?   r/   r0   ZdfxZdfar3   r3   r4   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   barr;   r   r   Zbaz)r   r   r(   r)   r,   rX   r   )r.   r   r   r1   r2   r3   r3   r4   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=   )ra   f2T)r   r   r	   r;   )
r   r   r+   r(   r)   r   r   Z
from_codesr,   r-   )r.   r/   r0   r@   r
   rA   r3   r3   r4   'test_categorical_missing_from_one_frame   s    $
z=TestCategoricalConcat.test_categorical_missing_from_one_frameN)__name__
__module____qualname__r5   rB   rF   rQ   rR   rU   rY   r^   r`   rd   r3   r3   r3   r4   r      s   % r   )numpyr&   Zpandas.core.dtypes.dtypesr   Zpandasr(   r   r   r   Zpandas._testingZ_testingr,   r   r3   r3   r3   r4   <module>   s
   