o
    5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g dd}t tjdddd	d
ddgd}g d}tt||d< tj||fdd|d}t g dddd	dddtjtjtjtjtjtjtjgg dd gd | d}|d 	|d j
|d< t|| d S )N   int64dtype      abc)columns         r   r   )oner   twor   r   r   r   hr   T)axisignore_indexsort)r   r   r   	         r   r      r      
   r      r   r          )r      r      r      r!   r   r$   r   r   r%   r"   )r   r   r   r   )r   nparangereshaper   r   pdconcatnanastyper
   tmassert_frame_equal)selfr   df1df2
cat_valuesresexp r6   b/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/reshape/concat/test_categorical.pytest_categorical_concat   s:   "z-TestCategoricalConcat.test_categorical_concatc                 C   s   g d}t g d}tg d}tg d}tjt|||gd|d}|jdk}tg d|d}t|| |jd	k}tg d
|d}t|| |jdk}tg d|d}t|| d S )N)catobjnumr   r!   r   r   r!   )r   keysobject)FTFindexr   )FFTcategory)TFF)r   r   r*   r+   dtypesr.   assert_series_equal)r0   r@   r9   r:   r;   dfresultexpectedr6   r6   r7   test_categorical_concat_dtypes4   s   


z4TestCategoricalConcat.test_categorical_concat_dtypesc                 C   s   g d}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g d
|d}tddtjtjgtjddtjgtjtjddgdg d|d}t|| d S )N)r   r   r!   r   r   r!   r   r   
categoriesr?   r   r   r   )r   r   r!   r   r   r!   r   )r   r@   )	r   r*   CategoricalIndexr+   r   r'   r,   r.   r/   )r0   rI   r   r   r   rE   exp_idxr5   r6   r6   r7   test_concat_categoricalindexI   s   	z2TestCategoricalConcat.test_concat_categoricalindexc                 C   s0  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g d	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abcrA   r	   abdabcabdTr   abcabcr   r!   r   r   r!   r   )r@   r
   r   r   aabbcacabAB)r   listr*   r+   r.   rC   r'   r(   r   r-   r   r/   )r0   ss2r5   r4   r   r   r2   r6   r6   r7    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	   rU   rV   rW   rY   aberH   r   rJ   )r   r'   r(   rZ   r   r-   r   	set_indexr*   r+   r.   r/   r   set_axisr@   r>   )r0   r   r   r2   rE   rF   df3r6   r6   r7    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)periodstzr   r   rA   r	   TrR   )rd   z
2017-01-02)r   r*   
date_ranger+   	Timestampr.   rC   )r0   r   r   rE   rF   r6   r6   r7   test_concat_categorical_tz   s   z0TestCategoricalConcat.test_concat_categorical_tzc                 C   s   t tg dddd}tg dg d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   rA   rX   )r
   namerK   )r   r!   r   rY   )r@   rh   r!   rJ   r   r   r   r	   r   r   floatrW   )r   r   r*   r+   r'   r,   r.   assert_equal)r0   rD   serrE   rF   r6   r6   r7   !test_concat_categorical_unchanged   s   z7TestCategoricalConcat.test_concat_categorical_unchangedc                 C   s   t g dtdd}t|d |d< |d jg d |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 )	N)r!   r   r   r   r$   r   abbaae)id	raw_gradero   grade)er   r   r   r   )r   rZ   r   r9   set_categoriesr.   assert_index_equalrI   r*   r+   _append)r0   rD   r1   r2   dfxdfar6   r6   r7   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g d	ig d
d}t|| tddgtddgd}tddgtddgd}t||g}tg d	g d
d}t|| d S )Nfoor!   r   barr?   r   r   baz)r!   r   r   r   )rx   ry   rz   ry   )r   r   r*   r+   r.   rj   r   )r0   r   r   r4   r5   r6   r6   r7   test_categorical_index_upcast   s   z3TestCategoricalConcat.test_categorical_index_upcastc                 C   s   t dg di}t g dtg ddd}tj||gdd}td	g}t g d
tjg d|ddg dd}t	|| d S )Nf1r<   )r   r   r!   )r   r   r   rA   )r|   f2T)r   r   )r!   r   r   r   r   r!   )r~   r~   r   r   r   r	   rT   r?   )
r   r   r-   r*   r+   r   r   
from_codesr.   r/   )r0   r1   r2   rE   r
   rF   r6   r6   r7   '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g dddgdd}tdddgi|d	}tdd
dgi|d	}t ||f}tdg di|d	}t|| d S )Nr   r   F)rI   ordered)r   r   r   r   rX   r!   r   r?   r   r   )r!   r   r   r   )r*   rL   r   r+   r.   r/   )r0   c1c2c3r1   r2   rE   rF   r6   r6   r7   7test_concat_categorical_same_categories_different_order   s   zMTestCategoricalConcat.test_concat_categorical_same_categories_different_orderN)__name__
__module____qualname__r8   rG   rN   r]   rb   rg   rl   rw   r{   r   r   r6   r6   r6   r7   r      s    % r   )numpyr'   pandas.core.dtypes.dtypesr   pandasr*   r   r   r   pandas._testing_testingr.   r   r6   r6   r6   r7   <module>   s    