o
    5cG                     @   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g d	dg d
d}||}t|| d S )Nab   indexAB      abab)r      r   r   r   r   r      )r   ranger   listcombine_firsttmassert_frame_equal)selfr
   r   fgexpcombined r"   c/var/www/html/gps/gps/lib/python3.10/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s(J t|d |d  | }d|d< |d= | }d|d< |d= | |}|d dk	 sWJ t|d |d  t|d |d  t|d |d  |d d  |}}d|d< | |}|d d d dk	 sJ d|j
d d|jdf< | |}|d d d dk	 sJ |d d }|dd  }	| |	}t|d |j|d  t|d |	j|	d  | t }
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 s.J d S )Nr   r   r   Cr   r   D
   fazboor   r
   i  r   columns)r   reindexr   r   r   equalContentsr+   assert_series_equalcopyallilocget_locr   r   )r   float_frameheadtailr!   reordered_framefcopyfcopy2r   r   combdfdf2resultr"   r"   r#   test_combine_first#   sN   





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sZJ d S )	N)r
   r   ce)      @g      "      @g      Y@r   )      r   a   )col0col2col3)r
   r   r>   r   )col1rF   col5r   )r   r   r   r   lenr+   )r   idxser1ser2ser3frame1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)rA   r@   TF)r   r   bool1bool2r*   -   r   r   r   )r   r+   )r   r   )r   r   r   r   npnanloc)r   r:   otherr<   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 )NrR         @r@   rS         @r   rA         @g       @)r   r      r   r_   r^   r   r_   rC   r      )r   rW   rX   r   r   r   )r   df1r;   r<   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 )Nr\   Tgffffffr^   FgLE)g      g?Fr   r   r   )TTF)namedtype)r   rW   rX   r   boolr   r   r.   )r   ra   r;   rb   	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   r_   c                 C   s@   t d|it d|i}}||}t d|i}t|| d S )Nr
   r   r   r   r   )r   data1data2data_expectedra   r;   r<   rb   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s"J |d jd	ks+J ||}t tdtjgddgd
ddgd}t|| |d jdksRJ |d jd	ks[J |jd d |}t t	j
t	j
gddgd
ddgd}t|| |d jdksJ |d jd	ksJ d S )N
2011-01-01r   r
   r   r*   rC   r   zdatetime64[ns]int64r
   r   r   float64)r   pd	Timestampre   r   NaTr   r   r1   rW   rX   )r   dfa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scJ |d jdkslJ t	
|| t jdddd}td|i}t jdddd}td|i}||}t	
|| |d jdksJ 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	
|| t jdddd}td|i}t dd}td|i}||}t	
|| |d jd"ksJ 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s\J d S )%Nz20100101 01:01UTCUTCdatetimeabc20140627r   )periods)r+   datar   z20121212 12:12xyz20140628z2010-01-01 01:01)tzz2012-12-12 12:12z2010-01-01 01:01:00)r{   r|   r   r&   )r~   freq)r+   r   zdatetime64[ns, UTC]z
2015-01-01z
2015-01-05DATEz
2015-01-03)ro   ru   
2011-01-03
2011-01-04z
US/Easternr   r_   r   r   r   
2012-01-01
2012-01-02z
2012-01-03r   rC   r   )ro   r   ru   r   r   r   r   r   r_   rC   r   r   zdatetime64[ns, US/Eastern]z
2015-01-02object)rs   to_datetimetz_localizer   
date_ranger   rt   ru   re   r   r   DatetimeIndex)
r   rk   ra   rl   r;   rx   r    dts1dts2exp_dtsr"   r"   r#   test_combine_first_timezone   s   



z5TestDataFrameCombineFirst.test_combine_first_timezonec                 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sGJ d S )
N)1 dayru   3 day4dayTDr   r   )10 day11 dayz12 dayr   )r   r   ru   r   r   z4 dayr   ztimedelta64[ns])rs   TimedeltaIndexr   r   r   r   re   )r   rk   ra   rl   r;   rx   r   r    r"   r"   r#   test_combine_first_timedelta:  s   
z6TestDataFrameCombineFirst.test_combine_first_timedeltac           	   	   C   sF  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sNJ 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sJ d S )N)2011-01ru   2011-032011-04M)r   Pr   r   )r   2012-02z2012-03r   )r   z2012-01ru   r   r   r   r   r   r&   r   r   r   r   r   r   )	rs   PeriodIndexr   r   r   r   re   Periodru   )	r   rk   ra   rl   r;   rx   r   r    r   r"   r"   r#   test_combine_first_periodH  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   r_   r   rp   re   r   rC   )r   rC   r_   r   rj   )r   ra   r;   rg   expected_12rh   expected_21r"   r"   r#   test_combine_first_intg  s   

z0TestDataFrameCombineFirst.test_combine_first_intvalrR   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   rj   )r   r   ra   r;   rx   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 )
N96285r   rq   r   r
   r   T)inplace)r   rs   NA	set_indexr   r   r   )r   nullable_string_dtyper:   r;   r<   rb   r"   r"   r#   'test_combine_first_string_dtype_only_na  s   

zATestDataFrameCombineFirst.test_combine_first_string_dtype_only_naN)__name__
__module____qualname__r$   r=   rQ   r[   rc   ri   pytestmarkparametrizer   rs   ru   rn   ry   r   r   r   r   r   r   r"   r"   r"   r#   r	      sH    =        

[

r	   zscalar1, scalar2  r   r   z
2020-01-01r&   z
2020-01-02z89 daysz60 min)leftrightr_   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s3|jd |jd kr6| }n|}||}t |||ggg dd}	|	d ||	d< t||	 d S )Nr
   r   r*   r>   r   r
   r   r>   )r   r   dtypesr   r   astyper   r   )
scalar1scalar2nulls_fixturena_valueframerZ   common_dtyper   r<   rb   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   r>   r   )r   rs   ru   r   r   r   r   )r   rZ   r<   rb   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   r>   r
   )r   r   r_   rC   r   r   names)r   r   r   r   r   r   r   )r
   r   r>   r
   r   dr   )r   r   rC   r   r   r   r   r   r_   r   r   r   rR   rA   rS   r@   r\   r]   )r>   r   )	r   from_arraysrW   rX   r   r   r   r   r   )mi1r:   mi2srx   mi_expectedrb   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   rW   rX   r   r   r   )a_columnb_columnra   c_columnr;   rb   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   r_   r   r   r
   r   r   r   y)rB         )r   r   rC   r   g      "@g      $@g      &@g      (@g      *@g      ,@)r   r   )r   r   r_   rC   r@   r]   r^   )r   r   r   rW   rX   r   r   r   )ra   r;   rb   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   )rC   r   r   r   )r         )(   2   <   )rB   "   A   r   rj   )df_1df_2r<   rb   r"   r"   r#   ,test_combine_first_int64_not_cast_to_float64
  s
   
r   )r   numpyrW   r   pandas.core.dtypes.castr   r   pandasrs   r   r   r   r   pandas._testing_testingr   r	   r   r   r   	TimedeltaIntervalr   r   r   r   r   r   r"   r"   r"   r#   <module>   s0      |
	