a
    oÝEbO+  ã                   @   sV   d dl Zd dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ G dd„ dƒZdS )é    N)Ú	DataFrameÚIndexÚSeriesÚ
date_rangec                	   @   sè   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	j
 dddejgddegddegddejgg¡dd„ ƒZdd„ Zdd„ Zd'dd„Ze	j
 dddg¡e	j
 dg d¢¡e	j
 ddd g¡e	j
 d!g d"¢¡d#d$„ ƒƒƒƒZd%d&„ ZdS )(ÚTestDataFrameAlignc                 C   s:  t ddddd�}t ddddd�}ttj t|ƒd¡|ƒ}ttj t|ƒd¡|ƒ}| |¡\}}|jj|jjksrJ ‚|jj|jjks†J ‚| 	d¡}| |¡\}}|jjt
jks°J ‚|jjt
jksÂJ ‚|j|d	 d	d
�\}}|jjt
jksêJ ‚|jjt
jksüJ ‚|d	 j|d	d
� |jjt
jk�s"J ‚|jjt
jk�s6J ‚d S )NZ2001é   ÚHz
US/Eastern)ZperiodsÚfreqÚtzZ2Hé   z
US/Centralr   ©Úaxis)r   r   ÚnpÚrandomZrandnÚlenÚalignÚindexr
   Z
tz_convertÚpytzÚUTC)ÚselfZidx1Zidx2Údf1Údf2Znew1Znew2Zdf1_central© r   úe/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/frame/methods/test_align.pyÚtest_frame_align_aware   s"    
z)TestDataFrameAlign.test_frame_align_awarec                    sº  |  |¡\}}|j|jusJ ‚|j |dd�\}}|j|ju s@J ‚|jd d…d d…f }|j |ddd�\}}t |j|j¡ |j |j¡}|j |¡}| 	|¡j
}|dk ¡ s°J ‚|j |ddd	�\}}t |j|j¡ t |j|j¡ t |j|j¡ |jd d…d d…f  ¡ }|j |d
d�\}}t |j|j¡ t |j|j¡ |j |j¡}|j |¡}| 	|¡j
}|dk ¡ �sxJ ‚|j |dd
d	�\}}t |j|j¡ |j |dd
dd�\}}t |j|j¡ |j |jd d …df dd
d d d�\}}t |jtg ƒ¡ |j |jd d …df dd
d dd�\}}t |jtg ƒ¡ d}tjt|d��. |j |jdd d…f ddd	� W d   ƒ n1 �sz0    Y  |j}	ttt|	ƒƒ|	d�‰ |j ˆ dd�\}
}t |
j|j¡ t |j|j¡ t|tƒ�sàJ ‚|j ˆ d
d�\}
}t |
j|j¡ ‡ fdd„|jD ƒ}t||j|jd�}t ||¡ tg d¢g d¢dœƒ}||d dk }tddggd
gddgd�}t ||¡ | |d dkd¡}tg d¢g d¢dœƒ}t ||¡ d S ) NF)Úcopyéûÿÿÿr   r   éÿÿÿÿ)r   Ú
fill_valueÚright)Újoinr   é   r   ÚinnerÚpad©r    r   Úmethod©r    r   r%   r   z)No axis named 2 for object type DataFrame)Úmatché   ©r   )Zbroadcast_axisc                    s   i | ]
}|ˆ “qS r   r   )Ú.0Úc©Úsr   r   Ú
<dictcomp>o   ó    z7TestDataFrameAlign.test_align_float.<locals>.<dictcomp>©r   Úcolumns)r!   r(   r   )é   r   é   ©ÚaÚbr5   r   r6   )r   r(   r   )r   r   r   )r   Z_mgrÚilocÚtmÚassert_index_equalr1   r   r    Ú
differenceÚreindexÚvaluesÚallr   r   ÚpytestZraisesÚ
ValueErrorr   Úranger   Ú
isinstancer   Úassert_frame_equalÚwhere)r   Úfloat_frameÚafÚbfÚotherZjoin_idxZdiff_aZdiff_a_valsÚmsgÚidxÚleftr   ÚexpectedÚdfÚresultr   r,   r   Útest_align_float*   st    ÿ
ÿ
>
ÿz#TestDataFrameAlign.test_align_floatc                 C   s>   t tdƒg d¢d�}|j|dddd�\}}t |j|j¡ d S )Nr   ©ÚAÚBÚCr0   r"   r!   r#   r$   )r   r@   r   r8   r9   r1   )r   Z	int_framerG   rE   rF   r   r   r   Útest_align_int   s    z!TestDataFrameAlign.test_align_intc                 C   s*   |j |dddd�\}}t |j|j¡ d S )Nr"   r!   r#   r$   )r   r8   r9   r1   )r   Zfloat_string_framerE   rF   r   r   r   Útest_align_mixed_type†   s    ÿ
z(TestDataFrameAlign.test_align_mixed_typec                 C   sP   t tdƒg d¢d�}|j|jd d …df ddd dd�\}}t |jtg ƒ¡ d S ©Nr   rO   r0   r   r"   r!   r&   ©r   r@   r   r7   r8   r9   r   r   )r   Zmixed_float_framerG   rE   rF   r   r   r   Útest_align_mixed_float�   s
    ÿ
z)TestDataFrameAlign.test_align_mixed_floatc                 C   sP   t tdƒg d¢d�}|j|jd d …df ddd dd�\}}t |jtg ƒ¡ d S rU   rV   )r   Zmixed_int_framerG   rE   rF   r   r   r   Útest_align_mixed_int–   s
    ÿ
z'TestDataFrameAlign.test_align_mixed_intzl_ordered,r_ordered,expectedTFc                 C   s¶   t tjddd�ttdƒƒ tjtdƒ|d�¡dœƒ d¡}t tjd	dd�ttd
ƒƒ tjtdƒ|d�¡dœƒ d¡}| 	|¡\}}t
|j|ƒs’J ‚t
|j|ƒs¢J ‚t |j|j¡ d S )Nr3   Úint64©ZdtypeZaabbcaZcab)Zordered)rP   rQ   rQ   r   Zbabca)r   r   Úaranger   ÚlistZastypeÚpdZCategoricalDtypeZ	set_indexr   rA   r   r8   r9   )r   Z	l_orderedZ	r_orderedrK   Zdf_1Zdf_2Z	aligned_1Z	aligned_2r   r   r   Útest_align_categoricalž   s,    ÿþÿùÿþÿù	z)TestDataFrameAlign.test_align_categoricalc                 C   st  t jjtdƒtdƒtdƒgdd�}ttdƒdd�}ttjddd	�|d
�}ttjddd	�|d
�}|j|dd�\}}|j|dd�\}}|}	t	 
|	|¡ t	 
|	|¡ tddddtjtjgd |d
�}
t	 
|
|¡ t	 
|
|¡ |j|dd�\}}|j|dd�\}}t jjtdƒtdƒtdƒgdd�}tg d¢|d
�}	t	 
|	|¡ t	 
|	|¡ tg d¢d |d
�}
t	 
|
|¡ t	 
|
|¡ d S )Nr(   r   )r5   r6   r+   )Únamesr6   )Únameé   rY   rZ   r)   rJ   )r    r   r   r!   )r   r!   r(   r   r3   é   é   é	   )r   r   r!   r!   )r]   Z
MultiIndexZfrom_productr@   r   r   r   r[   r   r8   rB   Únan)r   ZmidxrI   r   r   Zres1lZres1rZres2lZres2rZexplÚexprZexp_idxr   r   r   Útest_align_multiindex¿   s2    ÿ ÿz(TestDataFrameAlign.test_align_multiindexc                 C   sÚ   t g d¢g d¢dœtdƒd�}tg d¢tdƒdd�}|j|d	d
�\}}t dtjdtjdgdtjdtjdgdœtdƒd�}tddtjdtjgtdƒdd�}t ||¡ t ||¡ | |¡\}}t ||¡ t ||¡ d S )N)r!   r   r   r4   ZACEr)   )r!   r(   r2   ZABDÚx)r   r`   r   r   r!   r   r   ZABCDEr(   r2   )	r   r\   r   r   r   re   r8   rB   Zassert_series_equal)r   rL   r-   Zres1Zres2Zexp1Zexp2r   r   r   Útest_align_series_combinationsâ   s    $þ z1TestDataFrameAlign.test_align_series_combinationsNc                 C   sÜ   |j ||||||d�\}}	d\}
}|| }}|d u s<|dkrf|jj|j|d�}
|j|
d�}|j|
d�}|d u sv|dkr |jj|j|d�}|j|d�}|j|d�}|j|||d�}|j|||d�}t ||¡ t |	|¡ d S )	N)r   r    r%   ÚlimitÚ	fill_axis)NNr   )Úhowr)   r!   )r1   )r   r%   rj   )r   r   r    r;   r1   Zfillnar8   rB   )r   r5   r6   r   rk   rl   r%   rj   ZaaÚabZ
join_indexZjoin_columnsZeaZebr   r   r   Ú_check_alignö   s"    ÿ

zTestDataFrameAlign._check_alignÚmethr#   ZbfillÚax)r   r!   NÚfaxr   r!   rl   )r"   ÚouterrJ   r   c                 C   s   |}|   |||||¡ d S )N)Ú_check_align_fill)r   rl   ro   rp   rq   rD   rL   r   r   r   Útest_align_fill_method  s    z)TestDataFrameAlign.test_align_fill_methodc           	   	   C   sþ   |j dd…d d…f }|j dd …dd …f }|j d d…d d…f }| j||||||d� | j||||||dd� | j||||||d� | j||||||dd� | j||||||d� | j||||||dd� | j||||||d� | j||||||dd� d S )	Nr   r2   é
   r(   r3   )r   rk   rl   r%   r!   )r   rk   rl   r%   rj   )r7   rn   )	r   ÚframeÚkindro   rp   rq   rJ   r   Úemptyr   r   r   rs     s&    ÿÿÿÿz$TestDataFrameAlign._check_align_fill)N)Ú__name__Ú
__module__Ú__qualname__r   rN   rS   rT   rW   rX   r>   ÚmarkZparametrizer]   ZCategoricalIndexr   r^   rg   ri   rn   rt   rs   r   r   r   r   r      s0   U	

üþ	
#
r   )Únumpyr   r>   r   Zpandasr]   r   r   r   r   Zpandas._testingZ_testingr8   r   r   r   r   r   Ú<module>   s   