a
    PfM                     @   s  d dl m Z  d dlZd dlZd dlmZ d dlm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ejde d	d
d
e d	d
dfe	dde	ddfe	de	dfe	jd d
de	jddddf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S )%    )datetimeN)find_common_type)is_dtype_equal)	DataFrameIndex
MultiIndexSeriesc                   @   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edddedddedddgejejejgedddedddedddgfejejejgedddedddedddgedddedddedddgfedddejejgedddedddedddgedddedddedddgfedddedddedddgedddejejgedddedddedddgff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d$d% Ze	j
d&dd'gd(d) Zd*d+ Zd,S )-TestDataFrameCombineFirstc                 C   s   t ddgtdd}t tdtdd}t||d}t ddgtddd}t tdtddd}t||d}ttdg d	dg d
d}||}t|| d S )Nab   indexAB      Zabab)r      r   r   r   r   r      )r   ranger   listcombine_firsttmassert_frame_equal)selfr
   r   fgexpcombined r!   f/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/frame/methods/test_combine_first.pytest_combine_first_mixed   s    
z2TestDataFrameCombineFirst.test_combine_first_mixedc                 C   s  |d d |dd   }}| |}||j}t|| t|j|j t|d |d  | }d|d< |d= | }d|d< |d= | |}|d dk	 sJ t|d |d  t|d |d  t|d |d  |d d  | }}d|d< | |}|d d d dk	 s,J d|j
d d|jdf< | |}|d d d dk	 snJ |d d }	|dd  }
|	 |
}t|d |	j|	d  t|d |
j|
d  |rtnd }tj|d	d
 | t }W d    n1 s0    Y  t|| t  |}t||  | tddgd}d|jv s^J tddgitdddgd}tdgd}| |}d|v sJ d S )Nr   r   r   Cr   r   D
   zempty entries)matchZfazboor   r
   i  r   columns)r   Zreindexr   r   r   Zassert_index_equalr*   assert_series_equalcopyallilocZget_locFutureWarningZassert_produces_warningr   Z
sort_indexr   )r   Zfloat_frameZusing_infer_stringheadtailr    Zreordered_frameZfcopyZfcopy2r   r   warningcombdfdf2resultr!   r!   r"   test_combine_first!   sR    




,
z,TestDataFrameCombineFirst.test_combine_firstc                 C   s   t g d}tg d|d}tg d|d}tg d|d}t|||d}t g d}tg d|d}tg d|d}tg d|d}t|||d}||}t|jdksJ d S )	N)r
   r   ce)      @g      "      @g      Y@r   )      r   a   )Zcol0col2Zcol3)r
   r   r8   r   )Zcol1r?   Zcol5r   )r   r   r   r   lenr*   )r   idxZser1Zser2Zser3Zframe1Zframe2r    r!   r!   r"   test_combine_first_mixed_bug`   s    
z6TestDataFrameCombineFirst.test_combine_first_mixed_bugc                 C   s|   t g dg dgg dd}t ddggdgddgd	}||}t|| tj|jd
< ||}d|jd
< t|| d S )N)      ?       @FT)r;   r:   TF)r   r   Zbool1Zbool2r)   -   r   r   r   )r   r*   )r   r   )r   r   r   r   npnanloc)r   r4   otherr6   r!   r!   r"   $test_combine_first_same_as_in_updater   s    


z>TestDataFrameCombineFirst.test_combine_first_same_as_in_updatec                 C   s   t dtjddtjgtjddtjdgd}t dddtjddgtjtjdddd	gd}||}t g d
tjdddddgd}t|| d S )NrC         @r:   rD         @r   r;         @g       @)r   r      r   rN   rM   r   rN   r=   r      )r   rF   rG   r   r   r   )r   df1r5   r6   expectedr!   r!   r"   test_combine_first_doc_example   s    $
 z8TestDataFrameCombineFirst.test_combine_first_doc_examplec                 C   s   t tjddgdtjdgtjddgg}t dtjdgg dgdd	gd
}tg dd	td}||d	 }t|| ||d	 }t|| d S )NrK   TgffffffrM   FgLE)g      g?Fr   r   r   )TTF)namedtype)r   rF   rG   r   boolr   r   r+   )r   rP   r5   rQ   	result_12	result_21r!   r!   r"   -test_combine_first_return_obj_type_with_bools   s      zGTestDataFrameCombineFirst.test_combine_first_return_obj_type_with_boolszdata1, data2, data_expectedi  r   r   rN   c                 C   s@   t d|it d|i }}||}t d|i}t|| d S )Nr
   r   r   r   r   )r   data1data2Zdata_expectedrP   r5   r6   rQ   r!   r!   r"   -test_combine_first_convert_datatime_correctly   s    
zGTestDataFrameCombineFirst.test_combine_first_convert_datatime_correctlyc                 C   s$  t tddggddgd}t dgdggdgd}|d jdksDJ |d jd	ksVJ ||}t tdtjgddgd
ddgd}t|| |d jdksJ |d jd	ksJ |jd d |}t t	j
t	j
gddgd
ddgd}t|| |d jdksJ |d jd	ks J d S )N
2011-01-01r   r
   r   r)   r=   r   zdatetime64[ns]int64r
   r   r   Zfloat64)r   pd	TimestamprT   r   NaTr   r   r.   rF   rG   )r   ZdfaZdfbresr   r!   r!   r"   test_combine_first_align_nan   s"    
"z6TestDataFrameCombineFirst.test_combine_first_align_nanc                 C   s  t dd|}tddg|t jdddd}t d	d|}tdd
g|t jdddd}|dg |}tt jdddt jdddgt jdddt jgdddgt jddddd| dd}|d j	d| dksJ |d j	d| dksJ t
|| d S )Nz20100101 01:01UTCUTCdatetimeabcZ20140627r   )periods)r*   datar   z20121212 12:12ZxyzZ20140628z2010-01-01 01:01tzz2012-12-12 12:12z2010-01-01 01:01:00)rf   rg   r   r%   )rh   freqdatetime64[, UTC])r*   r   rT   )r`   to_datetimeZtz_localizeas_unitr   
date_ranger   ra   rb   rT   r   r   )r   unitrZ   rP   r[   r5   rc   r   r!   r!   r"   test_combine_first_timezone   s4    
z5TestDataFrameCombineFirst.test_combine_first_timezonec                 C   sp   t jddd|d}td|i}t jddd|d}td|i}||}t|| |d jd| dkslJ d S )	N
2015-01-01
2015-01-05re   rk   rr   DATE
2015-01-03rm   rn   r`   rq   r   r   r   r   rT   )r   rr   dts1rP   dts2r5   rc   r!   r!   r"   test_combine_first_timezone2   s    
z6TestDataFrameCombineFirst.test_combine_first_timezone2c           	      C   s   t jg ddd|}td|ig dd}t jg ddd|}td|ig dd}||}t jg d	dd|}td|ig d
d}t|| d S )N)r]   rb   
2011-01-03
2011-01-04
US/Easternrj   rw   r   rN   r   r   r   
2012-01-01
2012-01-02z
2012-01-03r   r=   r   )r]   r   rb   r   r}   r~   r   r   rN   r=   r   r   )r`   ZDatetimeIndexrp   r   r   r   r   	r   rr   rz   rP   r{   r5   rc   exp_dtsr   r!   r!   r"   test_combine_first_timezone3
  s*    

z6TestDataFrameCombineFirst.test_combine_first_timezone3c                 C   s`   t jdddd}td|i}t dd}td|i}||}t|| |d jdks\J d S )Nrt   ru   r   rj   rw   rx   zdatetime64[ns, US/Eastern]ry   )r   rz   rP   r{   r5   rc   r!   r!   r"   test_combine_first_timezone4$  s    
z6TestDataFrameCombineFirst.test_combine_first_timezone4c           	      C   s   t jddd|d}td|i}t jdd|d}td|i}||}t jdddt jdddt dg}td|i}t|| |d jd	ksJ d S )
Nrt   z
2015-01-02r   rv   rw   rx   )rr   rj   object)r`   rq   r   r   ra   r   r   rT   r   r!   r!   r"   test_combine_first_timezone50  s    
z6TestDataFrameCombineFirst.test_combine_first_timezone5c                 C   s   t g d}td|ig dd}t g d}td|ig dd}||}t g d}td|ig dd}t|| |d jd	ksJ d S )
N)1 dayrb   3 dayZ4dayZTDr   r   )10 day11 dayz12 dayr   )r   r   rb   r   r   z4 dayr   ztimedelta64[ns])r`   ZTimedeltaIndexr   r   r   r   rT   )r   rZ   rP   r[   r5   rc   r   r   r!   r!   r"   test_combine_first_timedelta@  s    
z6TestDataFrameCombineFirst.test_combine_first_timedeltac           	   	   C   sH  t jg ddd}td|ig dd}t jg ddd}td|ig dd}||}t jg d	dd}td|ig d
d}t|| |d j|jksJ t jg ddd}td|ig dd}||}t jdddt jdddt jt jdddt jdddt jdddg}td|ig d
d}t|| |d jdksDJ d S )N)2011-01rb   2011-032011-04M)rl   Pr   r   )r   2012-02z2012-03r   )r   z2012-01rb   r   r   r   r   r   r%   r   r   r   r   r   r   )	r`   ZPeriodIndexr   r   r   r   rT   Periodrb   )	r   rZ   rP   r[   r5   rc   r   r   r{   r!   r!   r"   test_combine_first_periodN  s0    

z3TestDataFrameCombineFirst.test_combine_first_periodc                 C   sx   t dg didd}t dddgidd}||}t dg di}t|| ||}t dg di}t|| d S )Nr
   )r   r   rN   r   r^   rT   r   r=   )r   r=   rN   r   rY   )r   rP   r5   rV   Zexpected_12rW   Zexpected_21r!   r!   r"   test_combine_first_intm  s    

z0TestDataFrameCombineFirst.test_combine_first_intvalrC   c                 C   sH   t d|gi}t ddgi}||}t dg|gd}t|| d S )NisNumisBoolT)r   r   rY   )r   r   rP   r5   rc   r   r!   r!   r"   (test_combine_first_with_asymmetric_other{  s
    
zBTestDataFrameCombineFirst.test_combine_first_with_asymmetric_otherc                 C   s   t ddgtjgd d|d}t dgtjgd|d}|jddgdd	 |jddgdd	 ||}t ddgtjgd d|dddg}t|| d S )
NZ962Z85r   r_   r   r
   r   T)Zinplace)r   r`   ZNAZ	set_indexr   r   r   )r   Znullable_string_dtyper4   r5   r6   rQ   r!   r!   r"   'test_combine_first_string_dtype_only_na  s    
zATestDataFrameCombineFirst.test_combine_first_string_dtype_only_naN)__name__
__module____qualname__r#   r7   rB   rJ   rR   rX   pytestmarkparametrizer   r`   rb   r\   rd   rs   r|   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r	      sN   ?        

 

r	   zscalar1, scalar2  r   r   z
2020-01-01r%   z
2020-01-02z89 daysz60 min)leftrightrN   r   )r   r   closedc           
      C   s   |}t ||ggddgd}t | |ggddgd}t|jd |jd g}t|dsf|jd |jd krl| }n|}||}t |||ggg dd}	|	d ||	d< t||	 d S )Nr
   r   r)   r8   r   r
   r   r8   )r   r   Zdtypesr   r   Zastyper   r   )
Zscalar1Zscalar2Znulls_fixtureZna_valueframerI   Zcommon_dtyper   r6   rQ   r!   r!   r"    test_combine_first_timestamp_bug  s    
r   c                  C   s   t tjtjggddgd} t tdddtdddggddgd}| |}t tjtdddtdddggg dd}t|| d S )	Nr
   r   r)   r   r   r   r8   r   )r   r`   rb   r   r   r   r   )r   rI   r6   rQ   r!   r!   r"   $test_combine_first_timestamp_bug_NaT  s    
"r   c                  C   s  t jdddddtjgg dgddgd} tdg di| d}t jg dg dgddgd}tg d|d}|td	|i}t jdddddddddd	tjgg d
gddgd}ttjtjdddddtjdtjdgddtjddtjtjdtjdtjgd|d}t|| d S )Nr   r8   r
   )r   r   rN   r=   r   r   names)r   r   r   r   r   r   r   )r
   r   r8   r
   r   dr   )r   r   r=   r   r   r   r   r   rN   r   r   r   rC   r;   rD   r:   rK   rL   )r8   r   )	r   from_arraysrF   rG   r   r   r   r   r   )Zmi1r4   Zmi2src   Zmi_expectedrQ   r!   r!   r"   &test_combine_first_with_nan_multiindex  s,     "r   c                  C   s   t ddgtdd} t tdtdd}t| |d}t ddgtddd}t tdd	tddd}t||d
}tddtjtjgg dtjtjddgdg dd}||}t|| d S )Nr
   r   r   r   r   r   r   r   )r   r$   )r   r   r   r   r   r   r$   r   )r   r   r   rF   rG   r   r   r   )Za_columnZb_columnrP   Zc_columnr5   rQ   r    r!   r!   r"   test_combine_preserve_dtypes  s    
r   c                  C   s   t dg ditjg dtjddggddgdd	} t d
g ditjg dtjddggddgdd	}t dddtjgddtjdgdtjg dtjdddggddgdd	}| |}t|| d S )Nx)	   r&      r   r   rN   r   r   r
   r   r   r   y)r<         )r   r   r=   r   g      "@g      $@g      &@g      (@g      *@g      ,@)r   r   )r   r   rN   r=   )r   r   r   rF   rG   r   r   r   )rP   r5   rQ   r    r!   r!   r"   7test_combine_first_duplicates_rows_for_nan_index_values  s$    
 
 	
r   c                  C   sh   t g dg dd} t g dg dg dd}| |}t g dg dg dd}t|| d S )Nr   )r=   r   r   r   )r         )(   2   <   )r<   "   A   r   rY   )Zdf_1Zdf_2r6   rQ   r!   r!   r"   ,test_combine_first_int64_not_cast_to_float64  s
    
r   c                  C   s   t ddgtjtjgg} t ddgtjtjgg}tdd dgi| d}tdddgi|d}||}t g dtjtjtjtjgg}tdtjdddgi|d}t|| d S )Nr   r   r
   r=   r   rN   )r   r   r   r   )r   r   rF   rG   r   r   r   r   )ZmidxZmidx2rP   r5   r6   Zexpected_midxrQ   r!   r!   r"   test_midx_losing_dtype  s    
r   c                  C   sD   t ddgd} t ddgd}| |}t g dd}t|| d S )Nr
   r   r)   r8   r   rY   )r   r   r6   rQ   r!   r!   r"    test_combine_first_empty_columns'  s
    
r   )r   numpyrF   r   Zpandas.core.dtypes.castr   Zpandas.core.dtypes.commonr   Zpandasr`   r   r   r   r   Zpandas._testingZ_testingr   r	   r   r   r   Z	TimedeltaZIntervalr   r   r   r   r   r   r   r   r!   r!   r!   r"   <module>   s6      	
	