o
    ŀg;%                     @   sZ   d dl m Z  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 )    )datetimeN)CategoricalDtype)Categorical	DataFrameSeriesc                   @   sl   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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 r7   `/var/www/html/myenv/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|s)tn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   keyszstring[pyarrow_numpy])FTFindexr	   )FFTcategory)TFF)r   r   r+   r,   dtypesobjectr/   assert_series_equal)	r1   using_infer_stringr@   r:   r;   r<   dfresultexpectedr7   r7   r8   test_categorical_concat_dtypes6   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/   r0   )r1   rK   r   r   r   rG   exp_idxr6   r7   r7   r8   test_concat_categoricalindexL   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/   rD   r(   r)   r   r.   r   r0   )r1   ss2r6   r5   r   r   r3   r7   r7   r8    test_categorical_concat_preserveb   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
   rX   rY   rZ   r\   aberJ   r   rL   )r   r(   r)   r]   r   r.   r   	set_indexr+   r,   r/   r0   r   set_axisr@   rC   )r1   r   r   r3   rG   rH   df3r7   r7   r8    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
   TrT   )rg   z
2017-01-02)r   r+   
date_ranger,   	Timestampr/   rD   )r1   r   r   rG   rH   r7   r7   r8   test_concat_categorical_tz   s   z0TestCategoricalConcat.test_concat_categorical_tzc                 C   s   t dttddddgddi}t dttddddgddi}t||g}t dttdddtdddgi}t|| d S )Nxi  r"   r   rA   rW   r   )r   r   r   r+   r,   r/   assert_equal)r1   r2   r3   rG   rH   r7   r7   r8    test_concat_categorical_datetime   s   z6TestCategoricalConcat.test_concat_categorical_datetimec                 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   r[   )r   namerM   )r   r"   r   r\   )r@   rn   r"   rL   r   r   r   r
   r   r   floatrZ   )r   r   r+   r,   r(   r-   r/   rl   )r1   rF   serrG   rH   r7   r7   r8   !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_gradert   grade)er   r   r   r   )r   r]   r   r:   set_categoriesr/   assert_index_equalrK   r+   r,   _append)r1   rF   r2   r3   dfxdfar7   r7   r8   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   )r}   r~   r   r~   )r   r   r+   r,   r/   rl   r   )r1   r   r   r5   r6   r7   r7   r8   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
   rV   r?   )
r   r   r.   r+   r,   r   r   
from_codesr/   r0   )r1   r2   r3   rG   r   rH   r7   r7   r8   '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)rK   ordered)r   r   r   r   r[   r"   r   r?   r   r   )r"   r   r   r   )r+   rN   r   r,   r/   r0   )r1   c1c2c3r2   r3   rG   rH   r7   r7   r8   7test_concat_categorical_same_categories_different_order  s   zMTestCategoricalConcat.test_concat_categorical_same_categories_different_orderN)__name__
__module____qualname__r9   rI   rP   r`   re   rj   rm   rq   r|   r   r   r   r7   r7   r7   r8   r      s    %r   )r   numpyr(   pandas.core.dtypes.dtypesr   pandasr+   r   r   r   pandas._testing_testingr/   r   r7   r7   r7   r8   <module>   s    