o
    gz                     @   sB  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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!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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)selfmethodr   data r+   b/home/ubuntu/cloudmapper/venv/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_join8   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/   r2   r1   r   r3   r5   r+   r+   r,   test_right_outer_join?      zTestJoin.test_right_outer_joinc                 C   r9   )Nr   outerr;   r1   r   r3   r5   r+   r+   r,   test_full_outer_joinF   r=   zTestJoin.test_full_outer_joinc                 C   r9   )Nr   innerr;   r1   r   r3   r5   r+   r+   r,   test_inner_joinM   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_overlapT   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   rB   )left_onright_onrC   rD   zkey2.barrE   rF   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	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arO   brP   cr   r   r   r   rO   rP   rQ   r   )r   r   r   r   r   rM   r   r   r      oner   columnsfoobartwothreerQ   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#   rG   expecteddf_adf_bdf_csource_copymsgr+   r+   r,   test_join_one   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frU   sizerO   rP   
   r   r   Flen\(left_on\) must equal the number of levels in the index of "right"r]   rO   TrI   right_indexr   r   r    choicer!   r$   makeCustomIndexrd   re   rh   r	   r(   r"   r#   ro   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 )Nrq   rr   rU   rs   ru   r   r   rv   zFlen\(right_on\) must equal the number of levels in the index of "left"r]   rP   T)rJ   
left_indexrz   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 )Nrq   rr   rU   rs   ru   rv   r   r   z)len\(right_on\) must equal len\(left_on\)r]   rO   rP   )rJ   rI   rz   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 )NrO   r   z.Can only merge Series or DataFrame objects, a z was passedr]   )rI   rJ   )r   typerd   re   	TypeErrorr	   )r(   r   r"   ro   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$   rb   )r(   rj   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_equalrX   len)r(   ri   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 )NrM   )rO   rO   drP   rP   rQ   r   r   r   rO   rP   r   r@   r;   r.   F)check_dtype)r   r`   notnar$   ra   r   r   r(   r"   r#   rG   rj   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 )NrM   rN   r   rR   rS   r   r.   r   r`   r$   rb   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$   rb   )r(   r   rj   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 )	NrO   r   r   rP   r   namer.   ru   r   )r   r   r`   r   r$   rb   )r(   r"   dsr   rj   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 )Nrv   r   TboolrY   stringr      r   int      ?floatr1   )r   r   aranger`   _join_by_handr$   rb   )r(   	join_typedf1r#   rG   rj   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   rY   Tr   Br   r   rv   rW   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`   rX   r   r$   rb   )r(   r   r#   rG   expected_columnsrj   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 )NrU   r   r   rW   r>   r1   )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   rO   rP   rX   rQ   r   q)r   r   r    r!   r   r`   )r(   rO   rQ   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)rO   rO   rO   rP   rP   rP   )r   r   rU   r   r   rU   firstsecondnames)rP   rP   rP   rQ   rQ   rQ      zvar X)r*   r   rX   zvar Yr   )levelr>   r1   r   )r   from_arraysr   r   r    r!   
sort_indexr`   r   valuesunionr   r   r   r$   rb   )r(   index1index2r   r#   rG   ex_indexrj   r+   r+   r,   test_join_multiindex:  s4   

zTestJoin.test_join_multiindexc           	      C   s"  g d}g d}t jt|}t|||d}tg dg dgg dg dgdd	g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sJ t	
|| d S )N)
rZ   rZ   rZ   rY   rY   bazr   quxr   snap)
r[   rV   r\   rV   r[   rV   r[   r[   r\   rV   )r   r   r*   )rY   rZ   r   r   )rV   r[   r\   )
r   r   r   r   r   r   r   rU   rU   rU   )
r   r   r   r   r   r   r   r   r   r   r   r   )levelscodesr   rv   rU   )j_onej_twoj_threerW   r   r   r@   r;   F)rI   rJ   r2   sortT)rJ   r   r2   r   r   axis)r   r    r!   r   r   r   r`   r	   reset_indexr$   rb   reindex_likedropr   is_monotonic)	r(   r   r   r*   r   to_joinrG   rj   	expected2r+   r+   r,   test_join_inner_multiindex]  sT   		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   rU   )r   r   r   rS   r   rO   rP   )   rv   r   rO   rP   r   T)inplacez.merging between different levels is deprecatedr]   r   ry   )rP   mean)r   groupbyaggr   r   sum	set_indexr$   assert_produces_warningFutureWarningr	   )r(   r"   new_dfother_dfro   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 )Nrv   r   rO   rP   )rX   r   r   rQ   float64float32r   r   d   r   rS   mdr   Trx   )r   r   r    r!   r   r   r`   dtypesrandintastyper	   r$   rb   )
r(   rO   rP   rG   rQ   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   rv      rS   r   r      r       )rO   rP   erO   rP   r>   r1   r;   r   )r   r   r   )rv   r   r   )r   r   r   )r   r   i,  )r  r  i  r@   )rY   rZ   rY   rZ   rY   rZ   rY   rY   )rV   rV   r[   r\   r[   r[   rV   r\      r   TESTr   r0   r:   )r   r   r`   r	   r   rX   rO   r   rP   r$   rb   locr   r    r!   r   repeatr   )r(   r   r#   df3idf1idf2idf3r   df_partially_mergedrj   r"   r   r@   r>   r0   r:   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)rY   rZ   r   rY   r   r   rU   r   rT   value2rS   )rZ   r   rY   r   rM   T)r/   r   )rZ   r   rY   rY   )r   rU   r   r   )rO   rP   rQ   rQ   )rM   r   r  )r   r   r   rU   Fr   )exact)r   r`   r$   rb   r   r   r   range)r(   r0   r:   rG   rj   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 )NrO   r  )r   r   rU   rO   r   rP   )r   r   r   r  )r   rU   rU   r   )r   r   rU   rU   r   r   r   r   ru   )r   r   rU   rU   rO   )r   r   r   rO   )r   r`   r   nanr$   rb   )r(   r   r#   r   rj   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pnumrW   r@   _df2)r2   r   r   r   r   pnum_df2rX   r   )pdperiod_ranger   listr  r   r   r`   r   tiler   r   r  reshaper   r   r$   rb   )r(   r   r"   r#   r   rj   r+   r+   r,   !test_join_non_unique_period_index  s   $z*TestJoin.test_join_non_unique_period_indexc                 C   sb   t tjddg dd}|ddd |ddd	 |d}| }| }|j|d
d d S )Nr   r   )rO   rP   rQ   r   r  rr   r   r   idr   dtrY   _rightr   )	r   r   r    r!   insertr   r   countr`   )r(   r"   grouped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 )Nrv   r   abcdefr   rO   rP   rQ   r   r  rr   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>B  s    zFTestJoin.test_join_many.<locals>._check_diff_index.<locals>.<listcomp>r   r   )r`   r$   rb   )df_listr   r5  	reindexedrj   r+   r4  r,   _check_diff_indexA  s   z2TestJoin.test_join_many.<locals>._check_diff_indexr>   r1   r@   r  z?Joining multiple DataFrames only supported for joining on indexr]   r.   )r   r   r    r!   r"  r`   r$   rb   r   rd   re   rh   )r(   r"   r7  rG   r9  ro   r+   r+   r,   test_join_many8  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   rY   rZ   rM   r   r   r   r   )r   r   r    r!   r  r`   r$   rb   )r(   r"   r   r#   r  r   r+   r+   r,   test_join_many_mixedT  s   zTestJoin.test_join_many_mixedc           	      C   sl  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	jtdd |j|ddd}W d    n1 sw   Y  t ||||gdd}g d|_t	
|| d S )Nrv   r   )r   r   r   r   r   r   r   rs   r   r   r   r   r   _2r)  r   yTr   r>   )r   ry   r2   F)check_stacklevel)x_xy_xx_yy_yr?  r@  rA  rB  )r   r   r   r    r!   r   r$  r`   rX   r$   rb   r	   r   r   )	r(   r"   rj   r   wr   r=  zdtar+   r+   r,   test_join_dups^  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   )rG  rH  numr   v1   r   v2c                 S   s   g | ]}d | qS )r   r+   )r3  ir+   r+   r,   r6        z5TestJoin.test_join_multi_to_multi.<locals>.<listcomp>r   r;   rw   r]   )r   from_productr"  r   r  r`   r   r	   r   r$   rb   rd   re   rh   )	r(   r   	leftindexr0   
rightindexr:   r   rj   ro   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)rV  vals_2rV  r.   r   tuvr  rY  )r   r   
date_ranger"  r`   r   rg   r   r   r  objectr$   rb   )r(   r   r#   r   rj   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Lrv   )r^  Jr   )
2013-04-06r_  r   )ra  r`     )r   r=  rO   r   r   )r^  r`  r   )ra  r_  r   )r   r=  rD  r   r   r  r=  r.   z2012-08-02 00:00:00r`  r   r   z2013-04-06 00:00:00r_  r   )r   r=  rD  rO   rW   )r   r   to_datetimer`   r   r   r$   rb   )r(   dfadfbr   rj   r+   r+   r,   test_join_datetime_string  s0   	z"TestJoin.test_join_datetime_string)-__name__
__module____qualname__r-   r8   r<   r?   rA   rH   rK   rp   r~   r   r   rd   markparametrizer   arrayr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r%  r/  r:  r;  rF  rR  r]  rf  r+   r+   r+   r,   r      sN    (

 #@6
!r   r0   _x_yc                 C   s2  |D ]}||    sJ q| |}||}	||D ]x\}
}t|| j|}t||j|}z||
}W n& ty] } z|dv rLtd|
 d|t|| j| W Y d }~n
d }~ww t	|| z|	|
}W n& ty } z|dv rtd|
 d|t||j| W Y d }~qd }~ww t	|| qd S )N)r0   r@   zkey z! should not have been in the join)r:   r@   )
r   r   r   _restrict_to_columnsrX   	get_grouprf   AssertionError_assert_all_na_assert_same_contents)r0   r:   r   r   r2   r   r   rQ   left_groupedright_grouped	group_keygroupl_joinedr_joinedlgrouperrrgroupr+   r+   r,   r4     sD   




r4   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)r3  rQ   rX   suffixr+   r,   r6    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   )rX   r  rename)rw  rX   r  foundr+   r  r,   ro    s   ro  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r3  rowr+   r+   r,   	<setcomp>  rN  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,   rs    s   rs  c                 C   s,   |D ]}||v r	q| |    sJ qd S r  )r   r   )r  source_columnsr   rQ   r+   r+   r,   rr    s
   rr  c           	      C   sZ   | j j|j |d}| |}||}| j|j}| D ]\}}|||< q|j|dS )Nr1   r   )r   r`   r   rX   appenditems)	rO   rP   r2   
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   rr   r   )r   rU   )rP   rQ   r@   r1   )r  rr   )r   r   r   rU   )rP   rO   r   rQ   r   r   r   from_tuplesr`   r$   rb   )r0   r:   r   rj   r+   r+   r,   .test_join_inner_multiindex_deterministic_order&  s   r  )	input_coloutput_colsrP   rO   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 )NrO   r   rU   r   crossrm  rn  )r2   r   r   r   )r   r   rU   rU   )rU   r   rU   r   r   )r  r  r0   r:   r   rj   r+   r+   r,   test_join_cross7  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 )NrQ   rU   )r   r   ru   r   r  r   r   )r   )rP   r1   )rQ   r   )r   r   rP   rO   r   r  )r   r0   r:   r   rj   r+   r+   r,   test_join_multiindex_one_levelC  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   )
categoriesr   r   )r   r   r   r   r   )r   r   r   )rU   r   r   _leftr(  r   rU   r   )r   r   
value_leftvalue_right)r   r   r   r`   r$   rb   )r  r   r0   r:   r   rj   r+   r+   r,   1test_join_multiindex_not_alphabetical_categoricalQ  s6   





r  )r0   rm  rn  )r0   )"numpyr   rd   pandasr   r   r   r   r   r   r   r   r	   pandas._testing_testingr$   %pandas.tests.reshape.merge.test_merger
   r   r   rl  a_r   r4   ro  rs  rr  r   r  rj  rk  r  r  r  r+   r+   r+   r,   <module>   sF    (
     
<&

	