U
    f/eEC                     @   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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    Q/tmp/pip-unpacked-wheel-tiezk1ph/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fazZ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      ?       @FTr6   r5   r   r   Zbool1Zbool2r&   -   r   )r   r'   )r   r   )r   r   r   r   npnanloc)r   r/   otherr1   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>         @r5   r?         @r   r6         @g       @r   r      r   r8   r      )r   rA   rB   r   r   r   )r   df1r0   r1   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 )NrF   TgffffffrH   FgLEg      g?r   r   r   )namedtype)r   rA   rB   r   boolr   r   r)   )r   rK   r0   rL   	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   rI   c                 C   s@   t d|it d|i }}||}t d|i}t|| d S )Nr
   r   r   r   r   )r   data1data2Zdata_expectedrK   r0   r1   rL   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&   r8   r   zdatetime64[ns]int64r
   r   r   Zfloat64)r   pd	TimestamprO   r(   r   NaTr   r   ZilocrA   rB   )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)ra   rb   r   r$   )rc   freq)r'   r   zdatetime64[ns, UTC]z
2015-01-01z
2015-01-05ZDATEz
2015-01-03rX   r]   z
2011-01-03z
2011-01-04z
US/EasternrI   r   r   r   
2012-01-01
2012-01-02
2012-01-03r8   zdatetime64[ns, US/Eastern]z
2015-01-02object)r[   Zto_datetimeZtz_localizer   Z
date_ranger   r\   r]   rO   r(   r   r   ZDatetimeIndex)
r   rU   rK   rV   r0   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   rI   r   r   r   z10 dayz11 dayz12 dayr   r8   z4 dayztimedelta64[ns])r[   ZTimedeltaIndexr   r   r   r   rO   r(   )r   rU   rK   rV   r0   r^   rl   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)rf   Pr   rI   r   r   r   rg   z2012-02z2012-03r   r8   z2012-01rh   ri   r$   rj   )
r[   ZPeriodIndexr   r   r   r   rO   r(   Periodr]   )	r   rU   rK   rV   r0   r^   rl   r   rk   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   rI   r   rY   rO   r8   rT   )r   rK   r0   rQ   Zexpected_12rR   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)rw   rv   rT   )r   ru   rK   r0   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   rZ   rs   r
   r   T)Zinplace)r   r[   ZNAZ	set_indexr   r   r   )r   Znullable_string_dtyper/   r0   r1   rL   r    r    r!   'test_combine_first_string_dtype_only_na  s     
 zATestDataFrameCombineFirst.test_combine_first_string_dtype_only_naN)__name__
__module____qualname__r"   r2   r=   rE   rM   rS   pytestmarkparametrizer   r[   r]   rW   r_   rm   rn   rr   rt   rx   ry   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rightrI   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&   r3   rj   )r   r   Zdtypesr   r   Zastyper   r   )
Zscalar1Zscalar2Znulls_fixtureZna_valueframerD   Zcommon_dtyperu   r1   rL   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   r3   )r   r[   r]   r   r   r   r   )r   rD   r1   rL   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   r3   r
   r   r   rI   r8   r   r   )namesr   dr>   r6   r?   r5   rF   rG   )r3   r   )	r   Zfrom_arraysrA   rB   r   r   r   r   r   )Zmi1r/   Zmi2sr^   Zmi_expectedrL   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   rA   rB   r   r   r   )Za_columnZb_columnrK   Zc_columnr0   rL   r   r    r    r!   test_combine_preserve_dtypes  s    


r   )r   ZnumpyrA   r}   Zpandas.core.dtypes.castr   r   Zpandasr[   r   r   r   r   Zpandas._testingZ_testingr   r	   r~   r   rq   Z	TimedeltaZIntervalr   r   r   r   r    r    r    r!   <module>   s*     |	
