U
    b_y                     @   sH  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 ejZG dd dZd)d	d
Zdd Zdd Zdd Zd*d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dd d gfd!d"gd!d"d"gfd#d$gd#d$d$gfe
d%e
d&ge
d%e
d&e
d&gfgd'd( Z!dS )+    N)Categorical	DataFrameIndex
MultiIndexSeries	Timestampconcatmerge)NGROUPSNget_test_datac                
   @   sT  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,dS )Q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key2Zdata1Zdata2r         )n   )Zngroupsr   )r   r   valueindexAD)MergedAMergedDC)r   r   nprandomrandnr   dfr
   df2tmZgetMixedTypeDicttargetsource)selfmethodr   data r'   H/tmp/pip-unpacked-wheel-ck39h295/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$   Zjoined_key2Zjoined_bothr'   r'   r(   test_left_outer_join8   s    zTestJoin.test_left_outer_joinc                 C   s\   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+   r.   r-   r   r/   r1   r'   r'   r(   test_right_outer_join?   s    zTestJoin.test_right_outer_joinc                 C   s\   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   outerr4   r-   r   r/   r1   r'   r'   r(   test_full_outer_joinF   s    zTestJoin.test_full_outer_joinc                 C   s\   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   innerr4   r-   r   r/   r1   r'   r'   r(   test_inner_joinM   s    zTestJoin.test_inner_joinc                 C   s0   t | j| jddd}d|ks td|ks,td S )Nr   z.fooz.bar)r+   suffixeskey1.foozkey1.barr	   r   r    AssertionErrorr$   joinedr'   r'   r(   test_handle_overlapT   s    zTestJoin.test_handle_overlapc                 C   s2   t | j| jdddd}d|ks"td|ks.td S )Nr   r   r:   )left_onright_onr;   r<   zkey2.barr=   r?   r'   r'   r(   !test_handle_overlap_arbitrary_keyZ   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	d
d
dddgi}tddddgid
ddgd}|j|d	d}td
d
dddgdddddgd}t|| tdgdgdggd
ddg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 sFt	t|d d s^t	t
jtdd |j|dd W 5 Q R X | }d|d< d}t
jt|d |j|dd W 5 Q R X d S )Nr   r*   r   r   F)Zcheck_namesr   r   keyabcr   r   r   r   r   rE   r      oner   columnsfoobartwothreez^'E'$matchEzfYou 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   isnanr>   pytestraisesKeyErrorcopy
ValueError)r$   r"   r#   mergedr   r    r@   expectedZdf_aZdf_bZdf_cZsource_copymsgr'   r'   r(   test_join_one   s6    "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 5 Q R X d S )NmfrJ   sizerF   rG   
   r   r   Flen\(left_on\) must equal the number of levels in the index of "right"rR   rF   TrB   right_indexr   r   r   choicer   r!   ZmakeCustomIndexrY   rZ   r]   r	   r$   r   r    r`   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 5 Q R X d S )Nrb   rc   rJ   rd   rf   r   r   rg   zFlen\(right_on\) must equal the number of levels in the index of "left"rR   rG   T)rC   
left_indexrk   rm   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 5 Q R X d S )Nrb   rc   rJ   rd   rf   rg   r   r   z)len\(right_on\) must equal len\(left_on\)rR   rF   rG   )rC   rB   rk   rm   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   sx   t dddgi}dt| d}tjt|d t||ddd W 5 Q R X tjt|d t||ddd W 5 Q R X d S )NrF   r   z.Can only merge Series or DataFrame objects, a z was passedrR   )rB   rC   )r   typerY   rZ   	TypeErrorr	   )r$   rr   r   r`   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"   rU   r#   popr!   rW   )r$   r_   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 ]$}||ks.t||   stq| j j| jg ddd}t|j	|j	 t
|dks~td S )Nr   r*   r8   r4   r   )r"   rU   r#   reindexr>   isnaallr!   assert_index_equalrM   len)r$   r^   colZmerged2r'   r'   r(   test_join_with_len0   s    
zTestJoin.test_join_with_len0c                 C   s   t dddddddg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 )NrE   rF   drG   rH   r   r   r   r   r8   r4   r*   F)Zcheck_dtype)r   rU   notnar!   rV   r~   r   r$   r   r    r@   r_   r'   r'   r(   test_join_on_inner   s    zTestJoin.test_join_on_innerc                 C   s`   t ddddddgi}t ddddgidddgd	}|j|dgd
}|j|dd
}t|| d S )NrE   rF   rG   rH   r   r   r   r   r   r*   r   rU   r!   rW   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"   rU   r#   r!   rW   )r$   ry   r_   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 )	NrF   r   r   rG   r   namer*   rf   r   )r   r   rU   r   r!   rW   )r$   r   Zdsry   r_   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 )Nrg   r   TboolrN   stringr      r   int      ?floatr-   )r   r   arangerU   _join_by_handr!   rW   )r$   	join_typedf1r    r@   r_   r'   r'   r(   test_join_index_mixed   s    zTestJoin.test_join_index_mixedc                 C   s   t dddddtdddd	d
gd}|d jtjks:t|d
 jtjksNtt dddddtdddddd	d
gd}|j|ddd}ddddddddg}|d d |_|dd  |_t	||}t
|| d S )Nr   r   rN   Tr   Br   r   rg   r   r   r   r   rL   r   Z_oneZ_twolsuffixrsuffixZA_oneZB_oneZC_oneZD_oneZA_twoZB_twoZC_twoZD_two   )r   r   r   dtypeint64r>   Zbool_rU   rM   r   r!   rW   )r$   r   r    r@   Zexpected_columnsr_   r'   r'   r(   test_join_index_mixed_overlap
  s4    



z&TestJoin.test_join_index_mixed_overlapc                 C   s(   t  }|jt dgdgdgddd d S )NrJ   r   r   rL   r6   r-   )r   rU   )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   rF   rG   rM   rH   r   q)r   r   r   r   r   rU   )r$   rF   rH   r   r'   r'   r(   test_join_unconsolidated/  s    
z!TestJoin.test_join_unconsolidatedc                 C   s  t jddddddgddddddggddgd}t jdddd	d	d	gddddddg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st|jdd}|jdd}|j|ddjdd}t|j	
t|j	}||||}|j|j_t|| |jj|jkstd S )NrF   rG   r   r   rJ   firstsecondnamesrH      zvar X)r&   r   rM   zvar Yr   )levelr6   r-   )r   Zfrom_arraysr   r   r   r   
sort_indexrU   r   valuesunionr{   r   r   r!   rW   r>   )r$   Zindex1index2r   r    r@   Zex_indexr_   r'   r'   r(   test_join_multiindex:  s4    

zTestJoin.test_join_multiindexc           
   
   C   s   ddddddddddg
}ddddddddddg
}t jt|}t|||d	}|}tt jd
d|dddg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stt	|| d S )NrO   rN   bazZquxZsnaprP   rK   rQ   )r   r   r&   rg   rJ   Zj_oneZj_twoZj_threerL   r   r   r8   r4   r   r   F)rB   rC   r.   sortT)rC   ro   r.   r   r   Zaxis)r   r   r   r   r   rU   r	   reset_indexr!   rW   Zreindex_likeZdropr   Zis_monotonicr>   )
r$   Z%lexsorted_two_level_string_multiindexr   r   r&   r   Zto_joinr@   r_   Z	expected2r'   r'   r(   test_join_inner_multiindex]  sd      		z#TestJoin.test_join_inner_multiindexc              	   C   s   t ddgdddgd}|dgdtjtjgi}t ddgdddgd}|jdd	d
 d}tjt	|d t
||d	d	d}W 5 Q R X d|kstd|kstd S )N)r   r   rJ   )r   r   r   rF   rG   rH   r   )   rg   r   r   T)Zinplacez.merging between different levels is deprecatedrR   ro   rj   )rG   mean)r   groupbyZaggr   r   sum	set_indexr!   assert_produces_warningFutureWarningr	   r>   )r$   r   Znew_dfZother_dfr`   ry   r'   r'   r(   test_join_hierarchical_mixed  s    z%TestJoin.test_join_hierarchical_mixedc           
      C   sp  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sVt|jd dksht|jd d	kszt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st|jd dks(t|jd d	ks<t|jd d	ksPt|j|ddd}	t||	 d S )Nrg   r   rF   rG   )rM   r   r   rH   float64float32r   r   d   r   rF   rG   rH   Zmdr   Tri   )r   r   r   r   r   r   rU   Zdtypesr>   randintastyper	   r!   rW   )
r$   rF   rG   r@   rH   r   ZxpdfsrsZ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 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ddgdddgd	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}	| }t	
||	jd d |jf  t ddddddddgddddddddg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   rg      r   r   r      rF   rG   r   i  i  )rF   rG   erF   rG   r6   r-   r4   r   r   i,  i  r8   rN   rO   rK   rP   rQ      r   ZTESTr   r,   r3   )r   r   rU   r	   r   rM   rF   r   rG   r!   rW   locr   r   r   r   repeatr   )r$   r   r    df3Zidf1Zidf2Zidf3ry   Zdf_partially_mergedr_   r   r   r8   r6   r,   r3   r'   r'   r(   test_join_many_non_unique_index  sX    
"""

  z(TestJoin.test_join_many_non_unique_indexc                 C   s   t ddddgddddgd}t d	d
ddgidddgd}|j|ddd}t ddddgddddgd
dddgdddddgd}t|| |j|ddd}tj|jttddd d S )NrN   rO   r   r   r   rJ   r   rI   value2rF   rG   rH   r   rE   T)r+   r   )rE   r   r   r   F)exact)r   rU   r!   rW   r~   r   r   range)r$   r,   r3   r@   r_   r'   r'   r(   test_join_sort  s    



zTestJoin.test_join_sortc                 C   s  t dddddgiddddgd}t ddd	d
dgiddddgd}||}t dddddgdtjd	d
tjgddddddgd}t|| t dddddgiddddgd}t ddd	d
dgiddddgd}||}t ddddgdd	d	tjgdddddgd}t|| d S )NrF   r   r   rJ   r   r   rG   r   r   r   r   rf   )r   rU   r   nanr!   rW   )r$   r   r    ry   r_   r   Z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freqZpnumrL   r8   Z_df2)r.   r   r   r   r   Zpnum_df2rM   r   )pdZperiod_ranger   listr   r   r   rU   r   Ztiler   r   r   reshaper   r   r!   rW   )r$   r   r   r    ry   r_   r'   r'   r(   !test_join_non_unique_period_index  s    $z*TestJoin.test_join_non_unique_period_indexc                 C   sj   t tjddddddddgd	}|d
dd
 |ddd |d}| }| }|j|dd d S )Nr   r   rF   rG   rH   r   r   rc   r   r   idr   dtrN   _rightr   )	r   r   r   r   insertr   r   countrU   )r$   r   ZgroupedmnZcnr'   r'   r(    test_mixed_type_join_with_suffix'  s    "
z)TestJoin.test_mixed_type_join_with_suffixc              	   C   s\  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 5 Q R X d S )Nrg   r   Zabcdefr   rF   rG   rH   r   r   rc   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   )rU   r!   rW   )df_listry   r   Z	reindexedr_   r'   r   r(   _check_diff_index=  s    z2TestJoin.test_join_many.<locals>._check_diff_indexr6   r-   r8   r   z?Joining multiple DataFrames only supported for joining on indexrR   r*   )r   r   r   r   r   rU   r!   rW   r   rY   rZ   r]   )r$   r   r   r@   r   r`   r'   r'   r(   test_join_many4  s    ":zTestJoin.test_join_manyc                 C   s   t tjddddddg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   r   r   r   rN   rO   rE   )r   r   r   r   r   rU   r!   rW   )r$   r   r   r    r   ry   r'   r'   r(   test_join_many_mixedP  s    zTestJoin.test_join_many_mixedc           	   	   C   sd  t ttjddddddg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 5 Q R X t ||||gdd}ddddddddg|_t	
|| d S )Nrg   r   r   r   r   r   r   rd   r   r   r   r   Z_2r   r   yTr   r6   )ro   rj   r.   Zx_xZy_xZx_yZy_y)r   r   r   r   r   r   r   rU   rM   r!   rW   r	   r   r   )	r$   r   r_   ry   wr   r   zZdtar'   r'   r(   test_join_dupsZ  s8     
   zTestJoin.test_join_dupsc           	   	   C   s   t jtdtdddggdddg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dddg}t	
|| d}tjt|d |j|d|d W 5 Q R X tjt|d |j|ddg|d W 5 Q R X d S )NabcZxyr   r   numr   Zv1   r   Zv2c                 S   s   g | ]}d | qS )r   r'   )r   ir'   r'   r(   r     s     z5TestJoin.test_join_multi_to_multi.<locals>.<listcomp>r   r4   rh   rR   )r   Zfrom_productr   r   r   rU   r   r	   r   r!   rW   rY   rZ   r]   )	r$   r   Z	leftindexr,   Z
rightindexr3   ry   r_   r`   r'   r'   r(   test_join_multi_to_multi{  s2         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   tzZabcde)datevalsz
2018-01-03Ztuvwx)r   vals_2r   r*   r   Ztuvr   r  )r   r   Z
date_ranger   rU   r   r\   r   r   r   objectr!   rW   )r$   r   r    ry   r_   r'   r'   r(   #test_join_on_tz_aware_datetimeindex  s,      	   z,TestJoin.test_join_on_tz_aware_datetimeindexc                 C   s   t dddgdddgdddgdddggd	d
dgd}t|d	 |d	< t dddgdddggd	d
dg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d	d
ddgd}t|| d S )Nz
2012-08-02Lrg   Jr   z
2013-04-06r      r   r   rF   r   r   r   r   r   r   r*   z2012-08-02 00:00:00z2013-04-06 00:00:00rL   )r   r   Zto_datetimerU   r   r   r!   rW   )r$   ZdfaZdfbry   r_   r'   r'   r(   test_join_datetime_string  s0    	
z"TestJoin.test_join_datetime_string)-__name__
__module____qualname__r)   r2   r5   r7   r9   rA   rD   ra   rn   rp   rq   rY   markparametrizer   arrayrv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r'   r'   r'   r(   r      sL   (

 #<6
!r   r,   _x_yc                 C   s2  |D ]}||    stq| |}||}	||D ]\}
}t|| j|}t||j|}z||
}W nJ tk
r } z,|dkrtd|
 d|t|| j| W 5 d }~X Y nX t	|| z|	|
}W nN tk
r  } z.|dkrtd|
 d|t||j| W 5 d }~X Y q<X t	|| q<d S )N)r,   r8   zkey z! should not have been in the join)r3   r8   )
r   r}   r>   r   _restrict_to_columnsrM   Z	get_groupr[   _assert_all_na_assert_same_contents)r,   r3   ry   rx   r.   r   r   rH   Zleft_groupedZright_groupedZ	group_keygroupZl_joinedZr_joinedZlgrouperrZrgroupr'   r'   r(   r0     s:    


 


 r0   c                    sR    fdd| j D }| jd d |f } | jfddd} | jd d  f } | S )Nc                    s(   g | ] }| ks | d  kr|qS ) replace)r   rH   rM   suffixr'   r(   r     s      z(_restrict_to_columns.<locals>.<listcomp>c                    s   |   dS )Nr  r  )r   )r  r'   r(   <lambda>      z&_restrict_to_columns.<locals>.<lambda>r   )rM   r   rename)r  rM   r  foundr'   r  r(   r    s    r  c                    sd   d}|  | j}| | j}dd |D  t t|ksFtt fdd|D s`td S )Niy)c                 S   s   h | ]}t |qS r'   tupler   rowr'   r'   r(   	<setcomp>	  s     z(_assert_same_contents.<locals>.<setcomp>c                 3   s   | ]}t | kV  qd S Nr  r   Zrowsr'   r(   	<genexpr>  s     z(_assert_same_contents.<locals>.<genexpr>)ZfillnaZdrop_duplicatesr   r   r>   r}   )
join_chunkr#   ZNA_SENTINELZjvaluesZsvaluesr'   r$  r(   r    s    r  c                 C   s,   |D ]"}||krq| |    stqd S r#  )r|   r}   r>   )r&  Zsource_columnsrx   rH   r'   r'   r(   r    s    r  c           	      C   sZ   | j j|j |d}| |}||}| j|j}| D ]\}}|||< q<|j|dS )Nr-   r   )r   rU   r{   rM   appenditems)	rF   rG   r.   Z
join_indexZa_reZb_reZ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   rc   r   )r   rJ   )rG   rH   r8   r-   )r   rc   )r   r   r   rJ   )rG   rF   r   rH   r   r   r   from_tuplesrU   r!   rW   )r,   r3   ry   r_   r'   r'   r(   .test_join_inner_multiindex_deterministic_order"  s     r,  )	input_coloutput_colsrG   rF   Za_xZa_yc                 C   sj   t dddgi}t | ddgi}|j|dddd}t |d	 ddddg|d ddddgi}t|| d S )
NrF   r   rJ   r   Zcrossr  r  )r.   r   r   r   r   )r-  r.  r,   r3   ry   r_   r'   r'   r(   test_join_cross3  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 )NrH   rJ   )r   r   rf   r   r)  r   r   )r   )rG   r-   )rH   r   )r   r   rG   rF   r   r*  )r   r,   r3   ry   r_   r'   r'   r(   test_join_multiindex_one_level?  s     r0  zcategories, valuesYXr   r   g      @g      ?z
2020-12-31z
2019-12-31c                 C   s   t ddgt| | dddgdddg}t dddgt|| dd	d
dg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   )
categoriesr   r   )r   r   r   r   r   r   rJ   r   r   _leftr   r   )r   r   Z
value_leftZvalue_right)r   r   r   rU   r!   rW   )r3  r   r,   r3   ry   r_   r'   r'   r(   1test_join_multiindex_not_alphabetical_categoricalM  s6    


r5  )r,   r  r  )r,   )"Znumpyr   rY   Zpandasr   r   r   r   r   r   r   r   r	   Zpandas._testingZ_testingr!   Z%pandas.tests.reshape.merge.test_merger
   r   r   r  Za_r   r0   r  r  r  r   r,  r  r  r/  r0  r5  r'   r'   r'   r(   <module>   sF   (
     8
&
 
	