o
    5c                     @   sV  d dl Zd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZ G dd dZd0d	d
Zdd Zdd Zdd Zd1ddZdd Zejddddgfdddgfgdd Zdd Zejddd gg d!fd"d#gg d$fd%d&gg d'fe
d(e
d)ge
d(e
d)e
d)gfgd*d+ Zejd,g d-d.d/ Z dS )2    N)Categorical	DataFrameIndex
MultiIndexSeries	Timestampconcatmerge)NGROUPSNget_test_datac                
   @   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dd Zdd Zejddddedd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d/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(dIdJ Z)dKdL Z*dMdN Z+dOdP Z,dQdR Z-dS )STestJoinc                 C   s   t t t tjttjtd| _| j| jd dk | _t ttd dttd td dtjtd d| _t	
 \}}t ||d	| _t |d
 |d d|d d	| _d S )N)key1key2data1data2r         )n   )ngroupsr   )r   r   valueindexAD)MergedAMergedDC)r   r   nprandomrandnr   dfr
   df2tmgetMixedTypeDicttargetsource)selfr   data r*   Z/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/reshape/merge/test_join.pysetup_method   s&   


zTestJoin.setup_methodc                 C   sV   t | j| jdd}t| j| j|dgdd t | j| j}t| j| j|ddgdd d S )Nr   onlefthowr   r	   r"   r#   _check_joinr(   joined_key2joined_bothr*   r*   r+   test_left_outer_join6   s   zTestJoin.test_left_outer_joinc                 C   \   t | j| jddd}t| j| j|dgdd t | j| jdd}t| j| j|ddgdd d S )Nr   rightr.   r1   r0   r   r2   r4   r*   r*   r+   test_right_outer_join=      zTestJoin.test_right_outer_joinc                 C   r8   )Nr   outerr:   r0   r   r2   r4   r*   r*   r+   test_full_outer_joinD   r<   zTestJoin.test_full_outer_joinc                 C   r8   )Nr   innerr:   r0   r   r2   r4   r*   r*   r+   test_inner_joinK   r<   zTestJoin.test_inner_joinc                 C   s0   t | j| jddd}d|v sJ d|v sJ d S )Nr   z.fooz.bar)r.   suffixeskey1.foozkey1.barr	   r"   r#   r(   joinedr*   r*   r+   test_handle_overlapR   s   zTestJoin.test_handle_overlapc                 C   s2   t | j| jdddd}d|v sJ d|v sJ d S )Nr   r   rA   )left_onright_onrB   rC   zkey2.barrD   rE   r*   r*   r+   !test_handle_overlap_arbitrary_keyX   s   z*TestJoin.test_handle_overlap_arbitrary_keyc                 C   s  | j }| j}|j|dd}tj|d |d dd tj|d |d dd td	g d
i}tdg dig dd}|j|d	d}tg d
g dd}t|| tdgdgdggg ddgd}tdgdggddgdgd}	tdgdggddgdgd}
|j|	dd}|j|
dd}t|d d sJ t|d d sJ t	j
tdd |j|dd W d    n1 sw   Y  | }d|d< d}t	j
t|d |j|dd W d    d S 1 sw   Y  d S ) Nr   r-   r   r   F)check_namesr   r   keyarN   brO   cr   r   r   r   rN   rO   rP   r   )r   r   r   r   r   rL   r   r   r      oner   columnsfoobartwothreerP   z^'E'$matchEr   zfYou are trying to merge on float64 and object columns. If you wish to proceed you should use pd.concat)r&   r'   joinr$   assert_series_equalr   assert_frame_equalr   isnanpytestraisesKeyErrorcopy
ValueError)r(   r&   r'   mergedr"   r#   rF   expecteddf_adf_bdf_csource_copymsgr*   r*   r+   test_join_onc   s:    "zTestJoin.test_join_onc                 C   s   t tjjddgddtjdd}t tjjddgddtjddtddd}d	}tjt	|d
 t
||ddd W d    d S 1 sIw   Y  d S )NmfrT   sizerN   rO   
   r   r   Flen\(left_on\) must equal the number of levels in the index of "right"r\   rN   TrH   right_indexr   r   r    choicer!   r$   makeCustomIndexrc   rd   rg   r	   r(   r"   r#   rn   r*   r*   r+   -test_join_on_fails_with_different_right_index   s     
"z6TestJoin.test_join_on_fails_with_different_right_indexc                 C   s   t tjjddgddtjddtddd}t tjjddgddtjdd}d	}tjt	|d
 t
||ddd W d    d S 1 sIw   Y  d S )Nrp   rq   rT   rr   rt   r   r   ru   zFlen\(right_on\) must equal the number of levels in the index of "left"r\   rO   T)rI   
left_indexry   r|   r*   r*   r+   ,test_join_on_fails_with_different_left_index   s    
 "z5TestJoin.test_join_on_fails_with_different_left_indexc                 C   s   t tjjddgddtjdd}t tjjddgddtjddtddd}d	}tjt	|d
 t
||dddgd W d    d S 1 sKw   Y  d S )Nrp   rq   rT   rr   rt   ru   r   r   z)len\(right_on\) must equal len\(left_on\)r\   rN   rO   )rI   rH   ry   r|   r*   r*   r+   /test_join_on_fails_with_different_column_counts   s     
"z8TestJoin.test_join_on_fails_with_different_column_counts
wrong_typer   strNr   r   c                 C   s   t dddgi}dt| d}tjt|d t||ddd W d    n1 s*w   Y  tjt|d t||ddd W d    d S 1 sJw   Y  d S )NrN   r   z.Can only merge Series or DataFrame objects, a z was passedr\   )rH   rI   )r   typerc   rd   	TypeErrorr	   )r(   r   r"   rn   r*   r*   r+   )test_join_on_fails_with_wrong_object_type   s   "z2TestJoin.test_join_on_fails_with_wrong_object_typec                 C   sF   | j j| jdd}|d= | j d}| j j| j|d}t|| d S )Nr   r-   )r&   r_   r'   popr$   ra   )r(   ri   join_colresultr*   r*   r+   test_join_on_pass_vector   s
   z!TestJoin.test_join_on_pass_vectorc                 C   s   | j j| jg dd}| jD ]}||v sJ ||   s!J q| j j| jg ddd}t|j|j t	|dks?J d S )Nr   r-   r?   r:   r   )
r&   r_   r'   reindexisnaallr$   assert_index_equalrW   len)r(   rh   colmerged2r*   r*   r+   test_join_with_len0   s   
zTestJoin.test_join_with_len0c                 C   s   t dg di}t dddgiddgd}|j|dd	d
}|j|dd}||d   }t|d |d  tj|d |d dd t|j|j d S )NrL   )rN   rN   drO   rO   rP   r   r   r   rN   rO   r   r?   r:   r-   F)check_dtype)r   r_   notnar$   r`   r   r   r(   r"   r#   rF   ri   r*   r*   r+   test_join_on_inner   s   zTestJoin.test_join_on_innerc                 C   sV   t dg di}t dg dig dd}|j|dgd}|j|dd}t|| d S )NrL   rM   r   rQ   rR   r   r-   r   r_   r$   ra   r   r*   r*   r+   test_join_on_singlekey_list   s
   z$TestJoin.test_join_on_singlekey_listc                 C   s>   | j j| jd dd}| j j| jdg dd}t|| d S )Nr   r   r-   )r&   r_   r'   r$   ra   )r(   r   ri   r*   r*   r+   test_join_on_series   s   zTestJoin.test_join_on_seriesc                 C   s\   t dddgi}tdgdgdd}|j|dd}t ddgddgd|jd}t|| d S )	NrN   r   r   rO   r   namer-   rt   r   )r   r   r_   r   r$   ra   )r(   r"   dsr   ri   r*   r*   r+   test_join_on_series_buglet   s
   z#TestJoin.test_join_on_series_bugletc                 C   s   t tdd}d|d< d|d< t tddd}d	|d
< d|d< |j||d}t|||d}t|| |j||d}t|||d}t|| d S )Nru   r   TboolrX   stringr      r   int      ?floatr0   )r   r   aranger_   _join_by_handr$   ra   )r(   	join_typedf1r#   rF   ri   r*   r*   r+   test_join_index_mixed   s   zTestJoin.test_join_index_mixedc                 C   s   t dddddtdg dd}|d jtjksJ |d	 jtjks%J t dddddtd
ddg dd}|j|ddd}g d}|d d |_|dd  |_t||}t	
|| d S )Nr   r   rX   Tr   Br   r   ru   rV   r   r   r   _one_twolsuffixrsuffix)A_oneB_oneC_oneD_oneA_twoB_twoC_twoD_two   )r   r   r   dtypeint64bool_r_   rW   r   r$   ra   )r(   r   r#   rF   expected_columnsri   r*   r*   r+   test_join_index_mixed_overlap  s$   

z&TestJoin.test_join_index_mixed_overlapc                 C   s(   t  }|jt dgdgdgddd d S )NrT   r   r   rV   r=   r0   )r   r_   )r(   xr*   r*   r+   test_join_empty_bug(  s   "zTestJoin.test_join_empty_bugc                 C   sb   t tjddddgd}ttjd}||d< t tjdddgd}|| || d S )	N   r   rN   rO   rW   rP   r   q)r   r   r    r!   r   r_   )r(   rN   rP   r   r*   r*   r+   test_join_unconsolidated-  s   
z!TestJoin.test_join_unconsolidatedc                 C   sl  t jg dg dgddgd}t jg dg dgddgd}ttjd|dgd	}ttjd|d
gd	}|jdd}|jdd}|j|dd}t|j	
t|j	}||||}|j|j_t|| |jj|jkssJ |jdd}|jdd}|j|ddjdd}t|j	
t|j	}||||}|j|j_t|| |jj|jksJ d S )N)rN   rN   rN   rO   rO   rO   )r   r   rT   r   r   rT   firstsecondnames)rO   rO   rO   rP   rP   rP      zvar X)r)   r   rW   zvar Yr   )levelr=   r0   r   )r   from_arraysr   r   r    r!   
sort_indexr_   r   valuesunionr   r   r   r$   ra   )r(   index1index2r   r#   rF   ex_indexri   r*   r*   r+   test_join_multiindex8  s4   

zTestJoin.test_join_multiindexc           
      C   s   g d}g d}t jt|}t|||d}|}tt jdd|g dd}|j|dd	gd
d}t|| dd	gddgd
dd}t||dd	gdd
dd}	t	||	
| t||dd	gdd
dd}	|jddgdd}|j|_|jjsvJ t	|| d S )N)
rY   rY   rY   rX   rX   bazr   quxr   snap)
rZ   rU   r[   rU   rZ   rU   rZ   rZ   r[   rU   )r   r   r)   ru   rT   )j_onej_twoj_threerV   r   r   r?   r:   r   r   F)rH   rI   r1   sortT)rI   r~   r1   r   r   axis)r   r    r!   r   r   r_   r	   reset_indexr$   ra   reindex_likedropr   is_monotonic_increasing)
r(   %lexsorted_two_level_string_multiindexr   r   r)   r   to_joinrF   ri   	expected2r*   r*   r+   test_join_inner_multiindex[  sL   		z#TestJoin.test_join_inner_multiindexc                 C   s   t ddgg dd}|dgdtjtjgi}t ddgg dd}|jdd	d
 d}tjt	|d t
||d	d	d}W d    n1 sFw   Y  d|v sQJ d|v sWJ d S )N)r   r   rT   )r   r   r   rR   r   rN   rO   )   ru   r   rN   rO   r   T)inplacez.merging between different levels is deprecatedr\   r~   rx   )rO   mean)r   groupbyaggr   r   sum	set_indexr$   assert_produces_warningFutureWarningr	   )r(   r"   new_dfother_dfrn   r   r*   r*   r+   test_join_hierarchical_mixed  s   z%TestJoin.test_join_hierarchical_mixedc           
      C   sh  t tjddddgtjd}t tjdddgtjd}||}|jd dks+J |jd dks4J |jd d	ks=J tjd
dd	d}tjd	d}tjd	d	}t |||d}t |||d}t tjd	d	dgd}|j
|ddd}|jd dksJ |jd dksJ |jd d	ksJ |jd d	ksJ |j
|ddd}	t||	 d S )Nru   r   rN   rO   )rW   r   r   rP   float64float32r   r   d   r   rR   mdr   Trw   )r   r   r    r!   r   r   r_   dtypesrandintastyper	   r$   ra   )
r(   rN   rO   rF   rP   r"   xpdfsrsxpr*   r*   r+   test_join_float64_float32  s&   
z"TestJoin.test_join_float64_float32c                 C   s  t ddgddgddgd}t ddgddgddgd}t ddgddgd	d
gd}|ddg}|ddg}|ddg}|j||gdd}t||ddgdd}t||ddgdd}	| }|	|j }	|	jd|	d< |	jd|	d< t	
||	 t g dg dg dd}t g dg dg dd}t g dg dg dd}|ddg}|ddg}|ddg}|j||gdd}t||ddgdd}t||ddgdd}	| }t	
||	jd d |jf  t g dg dtjdtjdd}
tttddttdddd}|
j|dd}|
j|dd}|
j|dd}|
j|dd}t	
|| t	
|| t	
|| d S ) Nr   ru      rR   r   r      r       )rN   rO   erN   rO   r=   r0   r:   r   )r   r   r   )ru   r   r   )r   r   r   )r   r   i,  )r   r   i  r?   )rX   rY   rX   rY   rX   rY   rX   rX   )rU   rU   rZ   r[   rZ   rZ   rU   r[      r   TESTr   r/   r9   )r   r   r_   r	   r   rW   rN   r   rO   r$   ra   locr   r    r!   r   repeatr   )r(   r   r#   df3idf1idf2idf3r   df_partially_mergedri   r"   r   r?   r=   r/   r9   r*   r*   r+   test_join_many_non_unique_index  sT   


"z(TestJoin.test_join_many_non_unique_indexc                 C   s   t g dg dd}t dg dig dd}|j|dd	d
}t g dg dg ddg dd}t|| |j|ddd
}tj|jttdd	d d S )N)rX   rY   r   rX   r   r   rT   r   rS   value2rR   )rY   r   rX   r   rL   T)r.   r   )rY   r   rX   rX   )r   rT   r   r   )rN   rO   rP   rP   )rL   r   r  )r   r   r   rT   Fr   )exact)r   r_   r$   ra   r   r   r   range)r(   r/   r9   rF   ri   r*   r*   r+   test_join_sort  s   zTestJoin.test_join_sortc                 C   s   t dg dig dd}t dg dig dd}||}t g dd	tjd
dtjgdg dd}t|| t dg dig dd}t dg dig dd}||}t g dd	d
d
tjgdg dd}t|| d S )NrN   r  )r   r   rT   rN   r   rO   )r   r   r   r  )r   rT   rT   r   )r   r   rT   rT   r   r   r   r   rt   )r   r   rT   rT   rN   )r   r   r   rN   )r   r_   r   nanr$   ra   )r(   r   r#   r   ri   r  df4r*   r*   r+    test_join_mixed_non_unique_index  s   

z)TestJoin.test_join_mixed_non_unique_indexc                 C   s   t jdddd}tttt||dgd}t||g}|j|ddd	}tt	tj
dtjd
ddddddg| jd}t|| d S )Nz
2016-01-01   M)periodsfreqpnumrV   r?   _df2)r1   r   r   r   r   pnum_df2rW   r   )pdperiod_ranger   listr  r   r   r_   r   tiler   r   r  reshaper   r   r$   ra   )r(   r   r"   r#   r   ri   r*   r*   r+   !test_join_non_unique_period_index  s   $z*TestJoin.test_join_non_unique_period_indexc                 C   s   t tjddg dd}|ddd |ddd	 |d}d
}tjt|d |	 }W d    n1 s8w   Y  |
 }|j|dd d S )Nr   r   )rN   rO   rP   r   r  rq   r   r   idr   dtrX   z!The default value of numeric_onlyr\   _rightr   )r   r   r    r!   insertr   r$   r   r   r   countr_   )r(   r"   groupedrn   mncnr*   r*   r+    test_mixed_type_join_with_suffix%  s   

z)TestJoin.test_mixed_type_join_with_suffixc                 C   sr  t tjddtdd}|ddg |ddg |d	d
g g}|d |dd  }t|| |ddg d d |ddg dd  |d	d
g dd g}dd }|d j|dd  dd}||||j |d |dd  }||||d j |d j|dd  dd}||||jdd  d}t	j
t|d |d j|dd  dd W d    d S 1 sw   Y  d S )Nru   r   abcdefr   rN   rO   rP   r   r  rq   r   r   r   	   c                    s8    fdd| D }|d  |dd  }t|| d S )Nc                    s   g | ]}|  qS r*   )r   ).0r   	exp_indexr*   r+   
<listcomp>>  s    zFTestJoin.test_join_many.<locals>._check_diff_index.<locals>.<listcomp>r   r   )r_   r$   ra   )df_listr   r3  	reindexedri   r*   r2  r+   _check_diff_index=  s   z2TestJoin.test_join_many.<locals>._check_diff_indexr=   r0   r?   r  z?Joining multiple DataFrames only supported for joining on indexr\   r-   )r   r   r    r!   r   r_   r$   ra   r   rc   rd   rg   )r(   r"   r5  rF   r7  rn   r*   r*   r+   test_join_many4  s    ":"zTestJoin.test_join_manyc                 C   s   t tjddg dd}ddgd |d< |jd d dd	gf }|jd d d
dgf }|jd d dgf }|||g}t|| d S )Nr  r   r   r   rX   rY   rL   r   r   r   r   )r   r   r    r!   r  r_   r$   ra   )r(   r"   r   r#   r  r   r*   r*   r+   test_join_many_mixedP  s   zTestJoin.test_join_many_mixedc           	      C   sh  t ttjddg ddttjjddddddd	d
gdgdd}t ||gdd}|j|dd}|j|_t	
|| ttjddddgd}ttjddddgd}ttjddddgd}ttjddddgd}|j|dddj|dddd}t	t |j|ddd}W d    n1 sw   Y  t ||||gdd}g d|_t	
|| d S )Nru   r   )r   r   r   r   r   r   r   rr   r   r   r   r   r   _2r'  r   yTr   r=   )r~   rx   r1   )x_xy_xx_yy_yr<  r=  r>  r?  )r   r   r   r    r!   r   r"  r_   rW   r$   ra   r	   r   r   )	r(   r"   ri   r   wr   r;  zdtar*   r*   r+   test_join_dupsZ  s2   

zTestJoin.test_join_dupsc           	      C   sF  t jtdtdddggg dd}tdtdi|d	}t jtdtdgddgd}td
dd tddD i|d	}|j|ddg|d}| j| ddg|dg d}t	
|| d}tjt|d |j|d|d W d    n1 szw   Y  tjt|d |j|ddg|d W d    d S 1 sw   Y  d S )Nabcxyr   r   )rD  rE  numr   v1   r   v2c                 S   s   g | ]}d | qS )r   r*   )r1  ir*   r*   r+   r4        z5TestJoin.test_join_multi_to_multi.<locals>.<listcomp>r   r:   rv   r\   )r   from_productr   r   r  r_   r   r	   r   r$   ra   rc   rd   rg   )	r(   r   	leftindexr/   
rightindexr9   r   ri   rn   r*   r*   r+   test_join_multi_to_multi{  s,    
"z!TestJoin.test_join_multi_to_multic                 C   s   t tjddddtdd}t tjddddtdd	}|j|d
d
d}| }ttj	gd td t
d|d< t|| d S )Nz
2018-01-01r   zAmerica/Chicago)startr  tzabcde)datevalsz
2018-01-03tuvwx)rS  vals_2rS  r-   r   tuvr  rV  )r   r  
date_ranger   r_   r   rf   r   r   r  objectr$   ra   )r(   r   r#   r   ri   r*   r*   r+   #test_join_on_tz_aware_datetimeindex  s$   	 z,TestJoin.test_join_on_tz_aware_datetimeindexc                 C   s   t g dg dg dg dgg dd}t|d |d< t g dg d	gg d
ddgd}t|d |d< |j|ddgddgd}t tddddgtddddggddgg dd}t|| d S )N)
2012-08-02Lru   )r[  Jr   )
2013-04-06r\  r   )r^  r]     )r   r;  rN   r   r   )r[  r]  r   )r^  r\  r   )r   r;  rA  r   r   r  r;  r-   z2012-08-02 00:00:00r]  r   r   z2013-04-06 00:00:00r\  r   )r   r;  rA  rN   rV   )r   r  to_datetimer_   r   r   r$   ra   )r(   dfadfbr   ri   r*   r*   r+   test_join_datetime_string  s0   	z"TestJoin.test_join_datetime_stringc                 C   s   ddg}t j||d}t jt|t|d}td|i|d}tdt|i|d}||}tddgddgdt jddgddgdd}t|| d S )NrN   rO   
categoriesc1r   c2)rf  rg  )r  CategoricalIndexreversedr   r_   r$   ra   )r(   ixid1id2r   r#   r   ri   r*   r*   r+    test_join_with_categorical_index  s   
z)TestJoin.test_join_with_categorical_index).__name__
__module____qualname__r,   r7   r;   r>   r@   rG   rJ   ro   r}   r   r   rc   markparametrizer   arrayr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r#  r-  r8  r9  rC  rO  rZ  rc  rm  r*   r*   r*   r+   r      sP    (

 #<6
!r   r/   _x_yc                 C   sF  |D ]}||    sJ q| |}||}	|t|dkr#|n|d D ]x\}
}t|| j|}t||j|}z||
}W n& tyg } z|dv rVtd|
 d|t	|| j| W Y d }~n
d }~ww t
|| z|	|
}W n& ty } z|dv rtd|
 d|t	||j| W Y d }~q(d }~ww t
|| q(d S )Nr   r   )r/   r?   zkey z! should not have been in the join)r9   r?   )r   r   r   r   _restrict_to_columnsrW   	get_groupre   AssertionError_assert_all_na_assert_same_contents)r/   r9   r   r   r1   r   r   rP   left_groupedright_grouped	group_keygroupl_joinedr_joinedlgrouperrrgroupr*   r*   r+   r3     sH   




r3   c                    sR    fdd| j D }| jd d |f } | jfddd} | jd d  f } | S )Nc                    s(   g | ]}| v s| d  v r|qS ) replace)r1  rP   rW   suffixr*   r+   r4    s    z(_restrict_to_columns.<locals>.<listcomp>c                    s   |   dS )Nr  r  )r   )r  r*   r+   <lambda>  s    z&_restrict_to_columns.<locals>.<lambda>r   )rW   r  rename)r~  rW   r  foundr*   r  r+   rv    s   rv  c                    sd   d}|  | j}| | j}dd |D  t t|ks#J t fdd|D s0J d S )Niy)c                 S   s   h | ]}t |qS r*   tupler1  rowr*   r*   r+   	<setcomp>  rK  z(_assert_same_contents.<locals>.<setcomp>c                 3   s    | ]	}t | v V  qd S Nr  r  rowsr*   r+   	<genexpr>  s    z(_assert_same_contents.<locals>.<genexpr>)fillnadrop_duplicatesr   r   r   )
join_chunkr'   NA_SENTINELjvaluessvaluesr*   r  r+   rz    s   rz  c                 C   s,   |D ]}||v r	q| |    sJ qd S r  )r   r   )r  source_columnsr   rP   r*   r*   r+   ry    s
   ry  c           	      C   sZ   | j j|j |d}| |}||}| j|j}| D ]\}}|||< q|j|dS )Nr0   r   )r   r_   r   rW   appenditems)	rN   rO   r1   
join_indexa_reb_reresult_columnsr   r   r*   r*   r+   r   &  s   


r   c                  C   sx   t dditjdgddd} t dditjd	gd
dd}| j|dd}t dgdgdtjdgddd}t|| d S )Nr  r   )r   r   r   r   r   r)   r   rq   r   )r   rT   )rO   rP   r?   r0   )r  rq   )r   r   r   rT   )rO   rN   r   rP   r   r   r   from_tuplesr_   r$   ra   )r/   r9   r   ri   r*   r*   r+   .test_join_inner_multiindex_deterministic_order3  s   r  )	input_coloutput_colsrO   rN   a_xa_yc                 C   sb   t dddgi}t | ddgi}|j|dddd}t |d	 g d
|d g di}t|| d S )NrN   r   rT   r   crossrt  ru  )r1   r   r   r   )r   r   rT   rT   )rT   r   rT   r   r   )r  r  r/   r9   r   ri   r*   r*   r+   test_join_crossD  s
    r  c                 C   s|   t dditjdgddd}t dditjd	gd
dd}|j|| d}t dgdgdtjdgddgdd}t|| d S )NrP   rT   )r   r   rt   r   r  r   r   )r   )rO   r0   )rP   r   )r   r   rO   rN   r   r  )r   r/   r9   r   ri   r*   r*   r+   test_join_multiindex_one_levelP  s   r  zcategories, valuesYX)r  r  r  r   r   )r   r   r         @      ?)r  r  r  z
2020-12-31z
2019-12-31c                 C   s   t ddgt| | dddgdddg}t g dt|| dg d	dddg}|j|d
dd}t ddgt| | dddgddgdddg}t|| d S )Nr   rd  r   r   )r   r   r   r   r   )r   r   r   )rT   r   r   _leftr&  r   rT   r   )r   r   
value_leftvalue_right)r   r   r   r_   r$   ra   )re  r   r/   r9   r   ri   r*   r*   r+   1test_join_multiindex_not_alphabetical_categorical^  s6   





r  zleft_empty, how, exp)
)Fr/   r/   )Fr9   empty)Fr?   r  )Fr=   r/   )Fr  r  )Tr/   r  )Tr9   r9   )Tr?   r  )Tr=   r9   )Tr  r  c                 C   s  t ddgddgdddd}t dgd	gd
ddd}| r&|d}n|d}|j||d}|dkrLt ddgddgtjtjgd}|d}n.|dkrbt tjgdgd	gd}|d}n|dkrzt tg ddgdd}|dkrz|d}t	|| d S )Nr   r   rT   r   )r   r   r   r  r   r   )r   r   r   r0   r/   )r   r   r   r9   )r   r   r   r  r   r   )r   rW   r   r  )
r   r   headr_   r   r  r   rename_axisr$   ra   )
left_emptyr1   expr/   r9   r   ri   r*   r*   r+   test_join_empty  s"    
 
r  )r/   rt  ru  )r/   )!numpyr   rc   pandasr  r   r   r   r   r   r   r   r	   pandas._testing_testingr$   %pandas.tests.reshape.merge.test_merger
   r   r   r   r3   rv  rz  ry  r   r  rq  rr  r  r  r  r  r*   r*   r*   r+   <module>   sN    (
     
I(

	
