U
    *ifsG                     @   s  d dl m Z  d dlZd dlZd dlmZ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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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d	d
d	d
gdd	d
ddgd}||}t|| d S )Nab   indexAB      Zababr         )r   ranger   listcombine_firsttmassert_frame_equal)selfr
   r   fgexpcombined r    `/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/frame/methods/test_combine_first.pytest_combine_first_mixed   s    &
z2TestDataFrameCombineFirst.test_combine_first_mixedc                 C   sZ  |d d |dd   }}| |}||j}t|| t|j|jsPtt|d |d  |	 }d|d< |d= |	 }d|d< |d= | |}|d dk
 stt|d |d  t|d |d  t|d |d  |d d 	 | }}d|d< | |}|d d d dk
 s0td|d d d< | |}|d d d dk
 sht|d d }|dd  }	| |	}t|d |j|d  t|d |	j|	d  | t }
t|
| t  |}
t|
| | td	d
gd}
d	|
jksttddgitdddgd}tdgd}| |}d|ksVtd S )Nr   r   r   Cr   r   D
   Zfazboor   r
   i  r   columns)r   Zreindexr   r   r   ZequalContentsr(   AssertionErrorassert_series_equalcopyallr   r   )r   Zfloat_frameheadtailr   Zreordered_frameZfcopyZfcopy2r   r   combdfdf2resultr    r    r!   test_combine_first#   sN    





z,TestDataFrameCombineFirst.test_combine_firstc                 C   s   t ddddg}tddddg|d	}tddddg|d	}td
dddg|d	}t|||d}t ddddg}tddddg|d	}tddddg|d	}td
dddg|d	}t|||d}||}t|jdkstd S )Nr
   r   ce      @g      "      @g      Y@r         r   a   )Zcol0col2Zcol3r   )Zcol1r;   Zcol5)r   r   r   r   lenr(   r)   )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 ddddgddddggddd	d
gd}t ddggdgddgd}||}t|| tj|jd< ||}d|jd< t|| d S )N      ?       @FTr7   r6   r   r   Zbool1Zbool2r'   -   r   )r   r(   )r   r   )r   r   r   r   npnanloc)r   r0   otherr2   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 d
dddddgtjdddddgd}t|| d S )Nr?         @r6   r@         @r   r7         @g       @r   r      r   r9   r      )r   rB   rC   r   r   r   )r   df1r1   r2   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dddggd	d
gd}tdddgd
td}||d
 }t|| ||d
 }t|| d S )NrG   TgffffffrI   FgLEg      g?r   r   r   )namedtype)r   rB   rC   r   boolr   r   r*   )r   rL   r1   rM   	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   rJ   c                 C   s@   t d|it d|i }}||}t d|i}t|| d S )Nr
   r   r   r   r   )r   data1data2Zdata_expectedrL   r1   r2   rM   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sDt|d jd	ksVt||}t tdtjgddgd
ddgd}t|| |d jdkst|d jd	kst|j	d d |}t t
jt
jgddgd
ddgd}t|| |d jdkst|d jd	ks td S )N
2011-01-01r   r
   r   r'   r9   r   zdatetime64[ns]int64r
   r   r   Zfloat64)r   pd	TimestamprP   r)   r   NaTr   r   ZilocrB   rC   )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 jdkst	|d jdkst	t
|| t jdddd}td|i}t jdddd}td|i}||}t
|| |d jdksFt	t jddddgdd}td|iddd d!gd"}t jd#d$d%gdd}td|idd&d gd"}||}t jdd#dd$ddgdd}	td|	idddd&d d!gd"}t
|| t jdddd}td|i}t dd}td|i}||}t
|| |d jd'ksHt	t jdd(dd}td|i}t 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st	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)rb   rc   r   r$   )rd   freq)r(   r   zdatetime64[ns, UTC]z
2015-01-01z
2015-01-05ZDATEz
2015-01-03rY   r^   z
2011-01-03z
2011-01-04z
US/EasternrJ   r   r   r   
2012-01-01
2012-01-02
2012-01-03r9   zdatetime64[ns, US/Eastern]z
2015-01-02object)r\   to_datetimeZtz_localizer   Z
date_ranger   r]   r^   rP   r)   r   r   ZDatetimeIndex)
r   rV   rL   rW   r1   r_   r   Zdts1dts2exp_dtsr    r    r!   test_combine_first_timezone   s    

  


z5TestDataFrameCombineFirst.test_combine_first_timezonec                 C   s   t ddddg}td|idddd	gd
}t dddg}td|idddgd
}||}t ddddddg}td|idddddd	gd
}t|| |d jdkstd S )Nz1 dayr^   z3 dayZ4dayZTDr   rJ   r   r   r   z10 dayz11 dayz12 dayr   r9   z4 dayztimedelta64[ns])r\   ZTimedeltaIndexr   r   r   r   rP   r)   )r   rV   rL   rW   r1   r_   rn   r   r    r    r!   test_combine_first_timedelta:  s    
z6TestDataFrameCombineFirst.test_combine_first_timedeltac           	   	   C   sp  t jddddgdd}td|idd	d
dgd}t jdddgdd}td|iddd
gd}||}t jddddddgdd}td|iddd	dd
dgd}t|| |d j|jkstt jdddgdd}td|iddd
g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ddd	dd
dgd}t|| |d jdksltd S )Nz2011-01r^   z2011-03z2011-04M)rg   Pr   rJ   r   r   r   rh   z2012-02z2012-03r   r9   z2012-01ri   rj   r$   rk   )
r\   ZPeriodIndexr   r   r   r   rP   r)   Periodr^   )	r   rV   rL   rW   r1   r_   rn   r   rm   r    r    r!   test_combine_first_periodH  s2    
 
z3TestDataFrameCombineFirst.test_combine_first_periodc                 C   s   t dddddgidd}t dddgidd}||}t dddddgi}t|| ||}t dddddgi}t|| d S )	Nr
   r   r   rJ   r   rZ   rP   r9   rU   )r   rL   r1   rR   Zexpected_12rS   Zexpected_21r    r    r!   test_combine_first_intg  s    

z0TestDataFrameCombineFirst.test_combine_first_intvalr?   c                 C   sH   t d|gi}t ddgi}||}t dg|gd}t|| d S )NisNumisBoolT)ry   rx   rU   )r   rw   rL   r1   r_   r   r    r    r!   (test_combine_first_with_asymmetric_otheru  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[   ru   r
   r   T)Zinplace)r   r\   ZNAZ	set_indexr   r   r   )r   Znullable_string_dtyper0   r1   r2   rM   r    r    r!   'test_combine_first_string_dtype_only_na  s     
 zATestDataFrameCombineFirst.test_combine_first_string_dtype_only_naN)__name__
__module____qualname__r"   r3   r>   rF   rN   rT   pytestmarkparametrizer   r\   r^   rX   r`   ro   rp   rt   rv   rz   r{   r    r    r    r!   r	      sF   =        

[

r	   zscalar1, scalar2  r   r   z
2020-01-01r$   z
2020-01-02z89 daysz60 min)leftrightrJ   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dddgd}	|	d ||	d< t||	 d S )Nr
   r   r'   r4   rk   )r   r   Zdtypesr   r   Zastyper   r   )
Zscalar1Zscalar2Znulls_fixtureZna_valueframerE   Zcommon_dtyperw   r2   rM   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dddgd}t|| d S )Nr
   r   r'   r   r   r   r4   )r   r\   r^   r   r   r   r   )r   rE   r2   rM   r    r    r!   $test_combine_first_timestamp_bug_NaT  s     
 r   c                  C   sH  t jdddddtjgdddddd	ggddgd
} tdddddddgi| d}t jddddddgddddddggddgd
}tdddddd	g|d}|td|i}t jddddddddddtjgddddddddddd	g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   r4   r
   r   r   rJ   r9   r   r   namesr   dr?   r7   r@   r6   rG   rH   )r4   r   )	r   from_arraysrB   rC   r   r   r   r   r   )Zmi1r0   Zmi2sr_   Zmi_expectedrM   r    r    r!   &test_combine_first_with_nan_multiindex  s0        "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dd	ddgtjtjddgddd	ddgd}||}t|| d S )Nr
   r   r   r   r   r   r   r   )r   r#   r   r   r   r#   r   )r   r   r   rB   rC   r   r   r   )Za_columnZb_columnrL   Zc_columnr1   rM   r   r    r    r!   test_combine_preserve_dtypes  s    


r   c                  C   s   t ddddgitjdddgtjdd	ggd
dgdd} t ddddgitjdddg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ddddgtjdddggd
dgdd}| |}t|| d S )Nx	   r%      r   r   rJ   r   r   r
   r   r   r   yr8         r9   r   g      "@g      $@g      &@g      (@g      *@g      ,@)r   r   r6   rH   rI   )r   r   r   rB   rC   r   r   r   )rL   r1   rM   r   r    r    r!   7test_combine_first_duplicates_rows_for_nan_index_values  s&    "" 	
r   c                  C   sx   t dddgdddgd} t ddd	gd
ddgdddgd}| |}t dddgdddgdddgd}t|| d S )Nr   r   rJ   r9   r   r   r         (   2   <   r8   "   A   r   rU   )Zdf_1Zdf_2r2   rM   r    r    r!   ,test_combine_first_int64_not_cast_to_float64
  s
    "
"r   )r   numpyrB   r   Zpandas.core.dtypes.castr   r   Zpandasr\   r   r   r   r   Zpandas._testingZ_testingr   r	   r   r   rs   Z	TimedeltaZIntervalr   r   r   r   r   r   r    r    r    r!   <module>   s.     |	
