o
    d>                     @   sZ   d dl m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 )    )timezoneN)	DataFrameIndexSeries
date_rangec                	   @   s0  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d9d#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/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd"S ):TestDataFrameAlignc                 C   s6  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s9J |jj|jjksCJ |	d}||\}}|jjt
ju sXJ |jjt
ju saJ |j|d	 d	d
\}}|jjt
ju suJ |jjt
ju s~J |d	 j|d	d
 |jjt
ju sJ |jjt
ju sJ d S )N2001   Hz
US/Eastern)periodsfreqtz2H   z
US/Centralr   axis)r   r   nprandomrandnlenalignindexr   
tz_convertr   utc)selfidx1idx2df1df2new1new2df1_central r"   j/var/www/html/visualizacion-main/env/lib/python3.10/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\}}|s#|j|ju s"J n|j|jus+J |jd dd df }|j |ddd\}}t|j|j |j|j}|j|}|	|j
}|dk scJ |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 sJ |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 sGw   Y  |j}
ttt|
|
d |j  dd\}}t|j|j t|j|j t|tszJ |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)copyr   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   )broadcast_axisc                    s   i | ]}| qS r"   r"   ).0csr"   r#   
<dictcomp>s   s    z7TestDataFrameAlign.test_align_float.<locals>.<dictcomp>r   columnsr+   r3   r   )   r	      abrA   r	   rB   )r   r3   r   )r   r	   r   )r   _mgriloctmassert_index_equalr<   r   r*   
differencereindexvaluesallr%   r   pytestraises
ValueErrorr   ranger   
isinstancer   assert_frame_equalwhere)r   float_frameusing_copy_on_writeafbfotherjoin_idxdiff_adiff_a_valsmsgidxleftr)   expecteddfresultr"   r8   r#   test_align_float+   sz   

 
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Cr;   r,   r+   r-   r.   )r   rN   r   rE   rF   r<   )r   	int_framerV   rT   rU   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   rE   rF   r<   )r   float_string_framerT   rU   r"   r"   r#   test_align_mixed_type   s   
z(TestDataFrameAlign.test_align_mixed_typec                 C   P   t tdg dd}|j|jd d df ddd dd\}}t|jtg  d S Nr	   ra   r;   r   r,   r+   r0   r   rN   r   rD   rE   rF   r   r   )r   mixed_float_framerV   rT   rU   r"   r"   r#   test_align_mixed_float   s
   
z)TestDataFrameAlign.test_align_mixed_floatc                 C   ri   rj   rk   )r   mixed_int_framerV   rT   rU   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|sIJ t
|j|sQJ t|j|j d S )Nr?   int64dtypeaabbcacab)ordered)rb   rc   rc   r	   babca)r   r   aranger   listastypepdCategoricalDtype	set_indexr   rO   r   rE   rF   )r   	l_ordered	r_orderedr]   df_1df_2	aligned_1	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 )Nr3   r   )rA   rB   r7   )namesrB   name   rp   rq   r4   r\   )r*   r)   r   r+   )r   r+   r3   r   r?         	   )r   r   r+   r+   )rz   
MultiIndexfrom_productrN   r   r   r   rw   r   rE   rP   nan)r   midxr[   r   r   res1lres1rres2lres2rexplexpr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	   r@   ACEr4   r+   r3   r>   ABDxr   r   r   r   r+   r   r	   ABCDEr3   r>   )	r   rx   r   r   r   r   rE   rP   assert_series_equal)r   r^   r9   res1res2exp1exp2r"   r"   r#   test_align_series_combinations   s   $ z1TestDataFrameAlign.test_align_series_combinationsc                 C   s   t g d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=   foor   r+   r3   bar
foo_seriesr   colr?   r4   r   r   r   r   r   r   r   rw   rz   r   r   r   r   rE   rP   r   r   	foo_index	bar_indexseriesr^   
expected_rresult_l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 g ddd}t ddgdd}tg dt g d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   r+   r3   r   r+   r3   r   r>   r   r   r   r?   r4   r   r   r   r   r   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 g ddd}t g d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   r   r   r+   r3   r   r   r   r   r4   r   r   r   r   r   r   r   rw   rz   r   r   r   r   r   rE   rP   r   r   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 g ddd}t g ddd}tg dt g d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   )r+   r   r>   r   r   r   r   r   r   r4   r+   r   r   r   r   r   r"   r"   r#   Gtest_multiindex_align_to_series_with_common_index_level_missing_in_both0  s   zZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_bothc                 C   s   t g ddd}t ddgdd}tddg|dd}ttd	d
dtj||gd}g d|_	tddgd |j
dd}|j|dd\}}t|| t|j	|j	 d S )Nr=   r   r   r+   r3   r   r   r      r?   r   r4   )cfoocbarr   r   r   )r   r   r   r   rw   reshaperz   r   r   r<   r   r   rE   r   rF   )r   r   r   r   r^   r]   result_leftresult_rightr"   r"   r#   Gtest_multiindex_align_to_series_with_common_index_level_non_unique_colsC  s   
zZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_non_unique_colsc                 C   s`   t tdd}ttd}tjtdd || W d    d S 1 s)w   Y  d S )N2   )
   r	   r	   zaxis=0 or 1r1   )	r   r   rw   r   r   rK   rL   rM   r   )r   r^   r   r"   r"   r#   )test_missing_axis_specification_exceptionU  s
   "z<TestDataFrameAlign.test_missing_axis_specification_exceptionNc                 C   s   |j ||||||d\}}	d\}
}||}}|d u s|dkr3|jj|j|d}
|j|
d}|j|
d}|d u s;|dkrP|jj|j|d}|j|d}|j|d}|j|||d}|j|||d}t|| t|	| d S )	N)r   r*   r/   limit	fill_axis)NNr   )howr4   r+   )r<   )r   r/   r   )r   r   r*   rH   r<   fillnarE   rP   )r   rA   rB   r   r   r   r/   r   aaab
join_indexjoin_columnseaebr"   r"   r#   _check_align\  s"   

zTestDataFrameAlign._check_alignmethr-   bfillax)r   r+   Nfaxr   r+   r   )r,   outerr\   r)   c                 C   s   |}|  ||||| d S N)_check_align_fill)r   r   r   r   r   rR   r^   r"   r"   r#   test_align_fill_methodt  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   r3   r?   )r   r   r   r/   r+   )r   r   r   r/   r   )rD   r   )	r   framekindr   r   r   r\   r)   emptyr"   r"   r#   r   |  s&   
z$TestDataFrameAlign._check_align_fillc                 C   sR   t dddgi}tdgdd}| }|j|dd\}}d|jd< t|| d S )Nr   r+   r3   r   r   d   )r   r   r%   r   rD   rE   r   )r   r^   serr]   r_   rV   r"   r"   r#   test_align_series_check_copy  s   
z/TestDataFrameAlign.test_align_series_check_copyc                 C   sb   t dddgi}tddg}|j|dd\}}t|| t|| ||us)J ||us/J d S )NrA   r+   r3   r   r>   r   r   r   r   r   rE   rP   r   r   r^   r   r_   result2r"   r"   r#   %test_align_identical_different_object  s   z8TestDataFrameAlign.test_align_identical_different_objectc                 C   sf   t dddgi}tdgdgd}|j|dd\}}t|| t|| ||us+J ||us1J d S )NrA   r+   r3   r4   r   r   r   r"   r"   r#   -test_align_identical_different_object_columns  s   z@TestDataFrameAlign.test_align_identical_different_object_columnsr   )__name__
__module____qualname__r$   r`   rf   rh   rm   ro   rK   markparametrizerz   CategoricalIndexr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r      sD    X	


	#
	
r   )datetimer   numpyr   rK   pandasrz   r   r   r   r   pandas._testing_testingrE   r   r"   r"   r"   r#   <module>   s    