B
    `c(                 @   sJ   d dl Zd dl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)	DataFrameIndexSeriesc            
   @   s   e Z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jgddej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dddgej	
dddgej	
ddd d!d"gd#d$ Zd%d& ZdS )(TestDataFrameAlignc          	      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	|}|
|j}|
|j}	|dk st|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	|}|
|j}|
|j}	|dk st|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 Q R X |j}ttt||d |j  dd\}}t|j|j t|j|j t|tst|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   )axis
fill_valueright)joinr
      )r
   innerpad)r   r
   method)r   r
   r   r   z)No axis named 2 for object type DataFrame)match   )index)Zbroadcast_axisc                s   i | ]
} |qS  r   ).0c)sr   T/home/dcms/DCMS/lib/python3.7/site-packages/pandas/tests/frame/methods/test_align.py
<dictcomp>U   s    z7TestDataFrameAlign.test_align_float.<locals>.<dictcomp>)r   columns         )abr   r    )alignZ_mgrAssertionErroriloctmassert_index_equalr   r   r   
differencereindexvaluesallr   r   pytestZraises
ValueErrorr   rangelen
isinstancer   assert_frame_equalwhere)selffloat_frameafbfotherZjoin_idxZdiff_aZdiff_bZdiff_a_valsZdiff_b_valsmsgidxleftr   expecteddfresultr   )r   r   test_align_float
   sv    ""(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C)r   r   r   r   r   )r   r
   r   )r   r,   r!   r$   r%   r   )r1   Z	int_framer5   r3   r4   r   r   r   test_align_inte   s    z!TestDataFrameAlign.test_align_intc             C   s*   |j |dddd\}}t|j|j d S )Nr   r   r   )r   r
   r   )r!   r$   r%   r   )r1   Zfloat_string_framer3   r4   r   r   r   test_align_mixed_typel   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   r=   r>   r?   )r   r   r   r   r   )r   r
   r   r   )r   r,   r!   r#   r$   r%   r   r   )r1   Zmixed_float_framer5   r3   r4   r   r   r   test_align_mixed_floats   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 )
Nr   r=   r>   r?   )r   r   r   r   r   )r   r
   r   r   )r   r,   r!   r#   r$   r%   r   r   )r1   Zmixed_int_framer5   r3   r4   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|stt
|j|stt|j|j d S )Nr   int64)dtypeZaabbcaZcab)Zordered)r=   r>   r>   r   Zbabca)r   nparanger   listZastypepdZCategoricalDtypeZ	set_indexr!   r.   r   r"   r$   r%   )r1   Z	l_orderedZ	r_orderedr9   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 jtddd}t jtjddd	|d
}t jtjddd	|d
}|j|dd\}}|j|dd\}}|}	t	
|	| t	
|	| t j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 jddddddddg|d
}	t	
|	| t	
|	| t jddddgd |d
}
t	
|
| t	
|
| d S )Nr   r   )r   r    r   )namesr    )name   rD   )rE   )r   r8   )r   r   r   r   r         	   )rI   Z
MultiIndexZfrom_productr,   r   r   rF   rG   r!   r$   r/   nan)r1   Zmidxr7   Zdf1Zdf2Zres1lZres1rZres2lZres2rZexplexprZexp_idxr   r   r   test_align_multiindex   s.    "z(TestDataFrameAlign.test_align_multiindexc             C   s   t jdddgdddgdtdd}t jdddgtd	d
d}|j|dd\}}t jdtjdtjdgdtjdtjdgdtdd}t jddtjdtjgtdd
d}t|| t	|| ||\}}t	|| t|| d S )Nr   r   r   )r   r    ZACE)r   r   r   ZABDx)r   rL   r   )r
   ZABCDE)
rI   r   rH   r   r!   rF   rQ   r$   r/   Zassert_series_equal)r1   r:   r   Zres1Zres2Zexp1Zexp2r   r   r   test_align_series_combinations   s    $$"z1TestDataFrameAlign.test_align_series_combinationsNc             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   )how)r   r   )r   )r
   r   rV   )r!   r   r   r'   r   Zfillnar$   r/   )r1   r   r    r
   rW   rX   r   rV   ZaaabZ
join_indexZjoin_columnsZeaZebr   r   r   _check_align   s     
zTestDataFrameAlign._check_alignmethr   Zbfillaxr   r   faxrX   r   outerr8   r   c             C   s   |}|  ||||| d S )N)_check_align_fill)r1   rX   r[   r\   r]   r2   r:   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   r   
   r   r   )r
   rW   rX   r   r   )r
   rW   rX   r   rV   )r#   rZ   )	r1   framekindr[   r\   r]   r8   r   emptyr   r   r   r_      s    z$TestDataFrameAlign._check_align_fill)N)__name__
__module____qualname__r<   r@   rA   rB   rC   r*   markZparametrizerI   ZCategoricalIndexr   rJ   rS   rU   rZ   r`   r_   r   r   r   r   r   	   s&   [	


#
$r   )numpyrF   r*   ZpandasrI   r   r   r   Zpandas._testingZ_testingr$   r   r   r   r   r   <module>   s
   