U
    `»{j¢9  ã                   @   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„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd5d#d$„Ze	j
 d%d&d'g¡e	j
 d(d)d*d"g¡e	j
 d+d)d*g¡e	j
 d,d-d.d/d0g¡d1d2„ ƒƒƒƒZd3d4„ Zd"S )6Ú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srt	‚|jj|jjks†t	‚| 
d¡}| |¡\}}|jjtjks°t	‚|jjtjksÂt	‚|j|d	 d	d
�\}}|jjtjksêt	‚|jjtjksüt	‚|d	 j|d	d
� |jjtjk�s"t	‚|jjtjk�s6t	‚d S )NZ2001é   ÚHz
US/Eastern)ZperiodsÚfreqÚtzZ2Hé   z
US/Centralr   ©Úaxis)r   r   ÚnpÚrandomZrandnÚlenÚalignÚindexr
   ÚAssertionErrorZ
tz_convertÚpytzÚUTC)ÚselfZidx1Zidx2Údf1Údf2Znew1Znew2Zdf1_central© r   úd/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/frame/methods/test_align.pyÚtest_frame_align_aware   s"    
z)TestDataFrameAlign.test_frame_align_awarec              	      s¬  |  |¡\}}|j|jk	st‚|j |dd�\}}|j|jks@t‚|jd d…d d…f }|j |ddd�\}}t |j|j¡ |j |j¡}|j 	|¡}| 
|¡j}|dk ¡ s°t‚|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 ¡ �sxt‚|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 5 Q R X |j}	ttt|	ƒƒ|	d�‰ |j ˆ dd�\}
}t |
j|j¡ t |j|j¡ t|tƒ�sÊt‚|j ˆ d
d�\}
}t |
j|j¡ ‡ fdd„|jD ƒ}t||j|jd�}t ||¡ td
ddgdddgdœƒ}||d dk }tddggd
gddgd�}t ||¡ | |d dkd¡}tdddgdddg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   s      z7TestDataFrameAlign.test_align_float.<locals>.<dictcomp>©r   Úcolumnsé   r   é   ©ÚaÚbr6   r7   )r   Z_mgrr   ÚilocÚtmÚassert_index_equalr2   r   r!   Ú
differenceÚreindexÚvaluesÚallr   r   ÚpytestÚ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*   sˆ        ÿ
    ÿ
(  ÿz#TestDataFrameAlign.test_align_floatc                 C   s@   t tdƒdddgd�}|j|dddd	�\}}t |j|j¡ d S )
Nr   ÚAÚBÚCr1   r#   r"   r$   r%   )r   rB   r   r9   r:   r2   )r   Z	int_framerI   rG   rH   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   r9   r:   r2   )r   Zfloat_string_framerG   rH   r   r   r   Útest_align_mixed_type†   s       ÿ
z(TestDataFrameAlign.test_align_mixed_typec                 C   sR   t tdƒdddgd�}|j|jd d …df ddd dd	�\}}t |jtg ƒ¡ d S ©
Nr   rQ   rR   rS   r1   r   r#   r"   r'   ©r   rB   r   r8   r9   r:   r   r   )r   Zmixed_float_framerI   rG   rH   r   r   r   Útest_align_mixed_float�   s        ÿ
z)TestDataFrameAlign.test_align_mixed_floatc                 C   sR   t tdƒdddgd�}|j|jd d …df ddd dd	�\}}t |jtg ƒ¡ d S rV   rW   )r   Zmixed_int_framerI   rG   rH   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’t‚t
|j|ƒs¢t‚t |j|j¡ d S )Nr4   Úint64©ZdtypeZaabbcaZcab)Úordered)rQ   rR   rR   r   Zbabca)r   r   Úaranger   ÚlistZastypeÚpdZCategoricalDtypeZ	set_indexr   rC   r   r   r9   r:   )r   Z	l_orderedZ	r_orderedrM   Zdf_1Zdf_2Z	aligned_1Z	aligned_2r   r   r   Útest_align_categoricalž   s,    ÿþÿùÿþÿù	z)TestDataFrameAlign.test_align_categoricalc              	   C   s„  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ddddddddg|d
�}	t	 
|	|¡ t	 
|	|¡ tddddgd |d
�}
t	 
|
|¡ t	 
|
|¡ d S )Nr*   r   )r6   r7   r-   )Únamesr7   ©Únameé   rZ   r[   r+   rL   )r!   r    r   r"   r4   é   é   é	   )r_   Ú
MultiIndexÚfrom_productrB   r   r   r   r]   r   r9   rD   Únan)r   ZmidxrK   r   r   Zres1lZres1rZres2lZres2rZexplÚexprZexp_idxr   r   r   Útest_align_multiindex¿   s6     ÿ  ÿz(TestDataFrameAlign.test_align_multiindexc                 C   sà   t dddgdddgdœtdƒd�}tdddg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 )Nr"   r   r   r5   ZACEr+   r*   r3   ZABDÚx©r   rc   r   r   ZABCDE)	r   r^   r   r   r   rj   r9   rD   Úassert_series_equal)r   rN   r/   Zres1Zres2Zexp1Zexp2r   r   r   Útest_align_series_combinationsâ   s    "$þ z1TestDataFrameAlign.test_align_series_combinationsc                 C   sœ   t dddgdd�}t ddgdd�}tddg|dd�}td	t d
¡itj ||g¡d�}tddgd |jdd�}|j	|dd�\}}t
 ||¡ t
 ||¡ d S )Nr"   r*   r   Úfoorb   ÚbarÚ
foo_seriesrn   Úcolr4   r+   r   r   ©r   r   r   r   r]   r_   rh   ri   r   r   r9   rD   ro   ©r   Ú	foo_indexÚ	bar_indexÚseriesrN   Z
expected_rZresult_lZresult_rr   r   r   Ú7test_multiindex_align_to_series_with_common_index_levelö   s    þzJTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_levelc                 C   s°   t dddgdd�}t ddgdd�}tddddgt ddddgdd�dd	�}td
t d¡itj ||g¡d�}tddgd |jdd	�}|j	|dd�\}}t
 ||¡ t
 ||¡ d S )Nr"   r*   r   rq   rb   rr   r3   rs   rn   rt   r4   r+   r   r   ru   rv   r   r   r   ÚGtest_multiindex_align_to_series_with_common_index_level_missing_in_left  s    
  ÿþzZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_leftc                 C   s´   t dddgdd�}t ddddgdd�}tddgt ddgdd�dd	�}td
t d¡itj ||g¡d�}tddtjtjgd |j	dd	�}|j
|dd�\}}t ||¡ t ||¡ d S )Nr"   r*   r   rq   rb   r3   rr   rs   rn   rt   rd   r+   r   r   ©r   r   r   r   r]   r_   rh   ri   rj   r   r   r9   rD   ro   rv   r   r   r   ÚHtest_multiindex_align_to_series_with_common_index_level_missing_in_right  s    þ  ÿz[TestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_rightc                 C   s²   t dddgdd�}t dddgdd�}tdddgt dddgdd�dd	�}td
t d¡itj ||g¡d�}tdtjdgd |j	dd	�}|j
|dd�\}}t ||¡ t ||¡ d S )Nr"   r*   r   rq   rb   r3   rr   rs   rn   rt   rg   r+   r   r   r|   rv   r   r   r   ÚGtest_multiindex_align_to_series_with_common_index_level_missing_in_both-  s      ÿþzZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_bothc                 C   s°   t dddgdd�}t ddgdd�}tddg|dd�}tt d	¡ d
d¡tj ||g¡d�}dddg|_	tddgd |j
dd�}|j|dd�\}}t ||¡ t |j	|j	¡ d S )Nr"   r*   r   rq   rb   rr   rs   rn   é   r4   r+   ZcfooZcbarr   r   )r   r   r   r   r]   Úreshaper_   rh   ri   r2   r   r   r9   ro   r:   )r   rw   rx   ry   rN   rM   Zresult_leftZresult_rightr   r   r   ÚGtest_multiindex_align_to_series_with_common_index_level_non_unique_cols@  s    þzZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_non_unique_colsc              	   C   sJ   t t d¡ d¡ƒ}tt d¡ƒ}tjtdd�� | |¡ W 5 Q R X d S )Né2   )é
   r   r   zaxis=0 or 1r(   )	r   r   r]   r€   r   r?   r@   rA   r   )r   rN   ry   r   r   r   Ú)test_missing_axis_specification_exceptionR  s    z<TestDataFrameAlign.test_missing_axis_specification_exceptionNc                 C   sÜ   |j ||||||d�\}}	d\}
}|| }}|d ks<|dkrf|jj|j|d�}
|j|
d�}|j|
d�}|d k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"   )r2   )r   r&   r…   )r   r   r!   r<   r2   Zfillnar9   rD   )r   r6   r7   r   r†   r‡   r&   r…   ZaaÚabZ
join_indexZjoin_columnsZeaZebr   r   r   Ú_check_alignY  s,         ÿ

zTestDataFrameAlign._check_alignÚmethr$   ZbfillÚaxr   r"   Úfaxr‡   r#   ÚouterrL   r    c                 C   s   |}|   |||||¡ d S )N)Ú_check_align_fill)r   r‡   rŠ   r‹   rŒ   rF   rN   r   r   r   Útest_align_fill_methodq  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   r3   rƒ   r*   r4   )r   r†   r‡   r&   r"   )r   r†   r‡   r&   r…   )r8   r‰   )	r   ÚframeÚkindrŠ   r‹   rŒ   rL   r    Úemptyr   r   r   rŽ   y  sV          ÿ      ÿ      ÿ      ÿz$TestDataFrameAlign._check_align_fill)N)Ú__name__Ú
__module__Ú__qualname__r   rP   rT   rU   rX   rY   r?   ÚmarkZparametrizer_   ZCategoricalIndexr   r`   rl   rp   rz   r{   r}   r~   r�   r„   r‰   r�   rŽ   r   r   r   r   r      s<   U	

üþ	
#
r   )Únumpyr   r?   r   Zpandasr_   r   r   r   r   Zpandas._testingZ_testingr9   r   r   r   r   r   Ú<module>   s   