o
    _~#gF                     @   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                   @   s  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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ejd(d)d*gejd+g d,ejd-d.d/gejd0g d1ejd2ed3ed4ged.ed.ggejd5ed6d7ed8d7ged.ed.ggejd9d/d7gd:d; Zd<d= Zd>d? Zd@dA Zd7S )BTestDataFrameAlignc              	   C   s   t ddtjdgi}d}d}tjt|d5 tjt|d |j	|j
d d d dd	 W d    n1 s5w   Y  W d    d S W d    d S 1 sMw   Y  d S )
NA      zInvalid fill methodz/The 'method', 'limit', and 'fill_axis' keywordsmatchasfreq)method)r   npnanpytestraises
ValueErrortmassert_produces_warningFutureWarningaligniloc)selfdfmsgmsg2 r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_align.pytest_align_asfreq_method_raises   s   "z2TestDataFrameAlign.test_align_asfreq_method_raisesc                 C   sF  t ddddd}t ddddd}ttjdt|df|}ttjdt|df|}||\}}|jj	|jj	ksAJ |jj	|jj	ksKJ |
d	}||\}}|jj	tju s`J |jj	tju siJ |j|d
 d
d\}}|jj	tju s}J |jj	tju sJ |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2hr
      z
US/Centralr   axis)r   r   r   randomdefault_rngstandard_normallenr   indexr&   
tz_convertr   utc)r   idx1idx2df1df2new1new2df1_centralr   r   r   test_frame_align_aware   s"     
z)TestDataFrameAlign.test_frame_align_awarec           
      C   sL  | |\}}|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 d}	tjt|	d |j |dd
dd\}}W d    n1 sw   Y  t|j|j d}	tjt|	d |j |jd d df dd
d d d\}}W d    n	1 s,w   Y  t|jtg |jj d}	tjt|	d |j |jd d df dd
d dd\}}W d    n	1 sgw   Y  t|jtg |jj d}	tjt|	d |j |jdd df ddd	 W d    d S 1 sw   Y  d S )NF)copyr(   r   r   )r*   
fill_valueright)joinr*   r	   r)   innerQThe 'method', 'limit', and 'fill_axis' keywords in DataFrame.align are deprecatedr   padr>   r*   r   r>   r*   r   r<   z)No axis named 2 for object type DataFramer
   )r   _mgrr   r   assert_index_equalcolumnsr/   r>   
differencereindexvaluesallr:   r   r   r   astypedtyper   r   r   )
r   float_frameusing_copy_on_writeafbfotherjoin_idxdiff_adiff_a_valsr   r   r   r   test_align_float3   sj    $z#TestDataFrameAlign.test_align_floatc                    s   |j }ttt||d |j dd\}}t|j |j  t|j |j  t|ts-J d}tjt	|d |j dd\}}W d    n1 sJw   Y  t|j |j   fdd	|j
D }t||j |j
d
}t|| d S )Nr/   r   r)   z=The 'broadcast_axis' keyword in DataFrame.align is deprecatedr   r	   )broadcast_axisc                    s   i | ]}| qS r   r   ).0csr   r   
<dictcomp>   s    zCTestDataFrameAlign.test_align_frame_with_series.<locals>.<dictcomp>r/   rF   )r/   r   ranger.   r   r   rE   
isinstancer   r   rF   r   assert_frame_equal)r   rM   idxleftr=   r   expectedr   rZ   r   test_align_frame_with_series   s    
z/TestDataFrameAlign.test_align_frame_with_seriesc                 C   s   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 )Nr	   r
   r(   )   r"      abri   r
   r"   r	   rj   r]   r   )r   r
   r   )r   r"   r   )r   r   r`   where)r   r   resultrc   r   r   r   test_align_series_condition   s   z.TestDataFrameAlign.test_align_series_conditionc                 C   sp   t tdg dd}d}tjt|d |j|dddd	\}}W d    n1 s)w   Y  t|j|j d S )
Nr"   r   BCr]   r@   r   r?   r	   rA   rB   )r   r^   r   r   r   r   rE   rF   )r   	int_framerQ   r   rO   rP   r   r   r   test_align_int   s   z!TestDataFrameAlign.test_align_intc                 C   s\   d}t jt|d |j|dddd\}}W d    n1 sw   Y  t |j|j d S )Nr@   r   r?   r	   rA   rB   )r   r   r   r   rE   rF   )r   float_string_framer   rO   rP   r   r   r   test_align_mixed_type   s   z(TestDataFrameAlign.test_align_mixed_typec                 C      t tdg dd}d}tjt|d |j|jd d df ddd dd	\}}W d    n1 s1w   Y  t|jt	g  d S 
Nr"   rn   r]   r@   r   r   r?   r	   rC   
r   r^   r   r   r   r   r   rE   r/   r   )r   mixed_float_framerQ   r   rO   rP   r   r   r   test_align_mixed_float   s   z)TestDataFrameAlign.test_align_mixed_floatc                 C   ru   rv   rw   )r   mixed_int_framerQ   r   rO   rP   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 )Nrg   int64rL   aabbcacab)ordered)r   ro   ro   r"   babca)r   r   aranger   listrK   pdCategoricalDtype	set_indexr   r_   r/   r   rE   )r   	l_ordered	r_orderedrc   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 )Nr
   r(   )ri   rj   rY   )namesrj   name   r|   r}   rV   rb   )r>   r=   r   r	   )r   r	   r
   r(   rg         	   )r   r   r	   r	   )r   
MultiIndexfrom_productr^   r   r   r   r   r   r   r`   r   )r   midxra   r4   r5   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"   rh   ACErV   r	   r
   rf   ABDxr/   r   r   r)   r	   r(   r"   ABCDEr
   rf   )	r   r   r   r   r   r   r   r`   assert_series_equal)r   r   r[   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 )Nre   foor   r	   r
   bar
foo_seriesr   colrg   rV   r(   r   r)   r   r   r   r   r   r   r   r   r/   r   r   r`   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 )Nre   r   r   r	   r
   r   r	   r
   r(   rf   r   r   r   rg   rV   r(   r   r)   r   r   r   r   r   Gtest_multiindex_align_to_series_with_common_index_level_missing_in_left9  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 )Nre   r   r   r   r   r	   r
   r   r   r   r   rV   r(   r   r)   r   r   r   r   r   r   r   r   r   r/   r   r   r`   r   r   r   r   r   Htest_multiindex_align_to_series_with_common_index_level_missing_in_rightL  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 )Nre   r   r   )r	   r(   rf   r   r   r   r   r   r   rV   r	   r(   r   r)   r   r   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 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 )Nre   r   r   r	   r
   r   r   r      rg   r(   rV   )cfoocbarr   r   r)   )r   r   r   r   r   reshaper   r   r   rF   r/   r   r   r   rE   )r   r   r   r   r   rc   result_leftresult_rightr   r   r   Gtest_multiindex_align_to_series_with_common_index_level_non_unique_colsr  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 1r   )	r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )test_missing_axis_specification_exception  s
   "z<TestDataFrameAlign.test_missing_axis_specification_exceptionr   rA   bfillr*   )r   r	   N	fill_axisr   r	   how)r?   outerrb   r=   
left_slicerf   r   right_slicer
   Nrg   limitc	              	   C   sp  |}	|	j |d |d f }
|	j |d |d f }d}tjt|d |
j||||||d\}}W d    n1 s9w   Y  d\}}|
|}}|d u sO|dkrd|
jj|j|d}|j|d}|j|d}|d u sl|dkr|
jj|j|d}|j|d	}|j|d	}d
}tjt|d |j	|||d}|j	|||d}W d    n1 sw   Y  t
|| t
|| d S )Nr   r	   r@   r   )r*   r>   r   r   r   )NN)r   rV   )rF   z,DataFrame.fillna with 'method' is deprecated)r*   r   r   )r   r   r   r   r   r/   r>   rH   rF   fillnar`   )r   r   r   r*   r   rM   r   r   r   framerb   r=   r   aaab
join_indexjoin_columnseaebr   r   r   test_align_fill_method  s@   

z)TestDataFrameAlign.test_align_fill_methodc                 C   sR   t dddgi}tdgdd}| }|j|dd\}}d|jd< t|| d S )Nr   r	   r
   r   r)   d   )r   r   r:   r   r   r   r   )r   r   serrc   rl   rQ   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 )Nri   r	   r
   r(   rf   r   r)   r   r   r   r   r`   r   r   r   r   rl   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 )Nri   r	   r
   rV   r)   r   r   r   r   r   -test_align_identical_different_object_columns  s   z@TestDataFrameAlign.test_align_identical_different_object_columns) __name__
__module____qualname__r    r9   rU   rd   rm   rr   rt   ry   r{   r   markparametrizer   CategoricalIndexr   r   r   r   r   r   r   r   r   r   slicer   r   r   r   r   r   r   r   r      s`    L


	#+	
r   )datetimer   numpyr   r   pandasr   r   r   r   r   pandas._testing_testingr   r   r   r   r   r   <module>   s    