ó
šxŠ\c           @   sM  d  d l  m Z d  d l Z d  d l m Z d  d l Z d  d l m Z	 d  d l
 j Z d  d l
 m Z d  d l Z d  d l m Z m Z m Z m Z m Z m Z d  d l m Z m Z m Z d  d l j j Z d  d l m Z e j Z e j  j! d	 ƒ d
 e" f d „  ƒ  Yƒ Z# d d d d „ Z$ d „  Z% d „  Z& d „  Z' d d „ Z( d S(   iÿÿÿÿ(   t   catch_warningsN(   t   randn(   t   join(   t   lrange(   t	   DataFramet   Indext
   MultiIndext   Seriest   concatt   merge(   t   NGROUPSt   Nt   get_test_data(   t   assert_frame_equals   ignore:\nPanel:FutureWarningt   TestJoinc           B   s²  e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z e j j d d d d/ e j d d g ƒ g ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d  „  Z# d! „  Z$ d" „  Z% d# „  Z& d$ „  Z' d% „  Z( d& „  Z) d' „  Z* d( „  Z+ d) „  Z, d* „  Z- d+ „  Z. d, „  Z/ d- „  Z0 d. „  Z1 RS(0   c         C   s  t  i t ƒ  d 6t ƒ  d 6t j j t ƒ d 6t j j t ƒ d 6ƒ |  _ |  j |  j d d k |  _ t  i t d t d ƒ d 6t d t d	 d t d ƒ d 6t j j t d ƒ d
 6ƒ |  _ t	 j
 ƒ  \ } } t  | d | ƒ|  _ t  i | d d 6| d d 6d | d ƒ|  _ d  S(   Nt   key1t   key2t   data1t   data2i   t   ni   t   ngroupsi   t   valuet   indext   At   MergedAt   Dt   MergedDt   C(   R   R   t   npt   randomR   R   t   dfR
   t   df2t   tmt   getMixedTypeDictt   targett   source(   t   selft   methodR   t   data(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   setup_method   s    
 c   
      C   s£  t  d d d d d d d d d d d g d t j ƒ} t  d d d d d d d g d t j ƒ} d } t j | | | ƒ \ } } | j d d	 ƒ } | j d d	 ƒ } t  d d d d d d d d d d d d d
 d
 d d d d d d g ƒ } t  d d d d d d d d d d d d d d d d d d d d g ƒ }	 | j | ƒ } d | | d k <| j |	 ƒ } d | |	 d k <t j | | d t	 ƒt j | | d t	 ƒd  S(   Ni    i   i   i   t   dtypei   i   t   kindt	   mergesorti   i   i   i	   i
   iÿÿÿÿt   check_dtype(
   t   a_R   t   int64t   libjoint   left_outer_joint   argsortt   takeR    t   assert_numpy_array_equalt   False(
   R$   t   leftt   rightt	   max_groupt   lst   rst   exp_lst   exp_rst   exp_lit   exp_ri(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_cython_left_outer_join/   s     6*'!'!c   
      C   s  t  d d d d d d d d d d d g d t j ƒ} t  d d d d d d d g d t j ƒ} d } t j | | | ƒ \ } } | j d d	 ƒ } | j d d	 ƒ } t  d d d d d d d d d d d d d
 d d d
 d d d g ƒ } t  d d d d d d d d d d d d d d d d d d d
 g ƒ }	 | j | ƒ } d | | d k <| j |	 ƒ } d | |	 d k <t j | | d t	 ƒt j | | d t	 ƒd  S(   Ni    i   i   i   R(   i   i   R)   R*   i   i   i   iÿÿÿÿR+   (
   R,   R   R-   R.   R/   R0   R1   R    R2   R3   (
   R$   R4   R5   R6   R8   R7   R9   R:   R;   R<   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_cython_right_outer_joinG   s     6*''c   
      C   sš  t  d d d d d d d d d d d g d t j ƒ} t  d d d d d d d d g d t j ƒ} d } t j | | | ƒ \ } } | j d d	 ƒ } | j d d	 ƒ } t  d d d d d d d d d d d d d
 d
 d d d d g ƒ } t  d d d d d d d d d d d d d d d d d d g ƒ }	 | j | ƒ } d | | d k <| j |	 ƒ } d | |	 d k <t j | | d t	 ƒt j | | d t	 ƒd  S(   Ni    i   i   i   R(   i   i   R)   R*   i   i   i   iÿÿÿÿR+   (
   R,   R   R-   R.   t
   inner_joinR0   R1   R    R2   R3   (
   R$   R4   R5   R6   R7   R8   R9   R:   R;   R<   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_cython_inner_joina   s     6-''c         C   s{   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(   Nt   onR   t   howR4   R   (   R	   R   R   t   _check_join(   R$   t   joined_key2t   joined_both(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_left_outer_joiny   s
    "c         C   s‡   t  |  j |  j d 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(   NRA   R   RB   R5   R   (   R	   R   R   RC   (   R$   RD   RE   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_right_outer_join   s
    !"c         C   s‡   t  |  j |  j d 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(   NRA   R   RB   t   outerR   (   R	   R   R   RC   (   R$   RD   RE   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_full_outer_join‰   s
    !"c         C   s‡   t  |  j |  j d 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(   NRA   R   RB   t   innerR   (   R	   R   R   RC   (   R$   RD   RE   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_inner_join‘   s
    !"c         C   sO   t  |  j |  j d d d d d g ƒ} d | k s9 t ‚ d | k sK t ‚ d  S(   NRA   R   t   suffixess   .foos   .bars   key1.foos   key1.bar(   R	   R   R   t   AssertionError(   R$   t   joined(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_handle_overlap™   s    c      
   C   sU   t  |  j |  j d d d d d d d g ƒ} d | k s? t ‚ d	 | k sQ t ‚ d  S(
   Nt   left_onR   t   right_onR   RL   s   .foos   .bars   key1.foos   key2.bar(   R	   R   R   RM   (   R$   RN   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt!   test_handle_overlap_arbitrary_key    s
    c      	   C   s|  |  j  } |  j } | j | d d ƒ} t j | d | d d t ƒt j | d | d d t ƒt i d d d	 d	 d
 g d 6ƒ } t i d d d g d 6d d d	 d
 g ƒ} | j | d d ƒ} t i d d d	 d	 d
 g d 6d d d d d g d 6ƒ } t | | ƒ t d g d g d g g d d d	 d
 g d d g ƒ} t d g d g g d d d g d d g ƒ}	 t d g d g g d d d g d d g ƒ}
 | j |	 d d ƒ} | j |
 d d ƒ} t j	 | d d
 ƒ sát
 ‚ t j	 | d d
 ƒ sþt
 ‚ t j t d d ƒ | j | d d ƒWd  QX| j ƒ  } d | d <d } t j t d | ƒ | j | d d ƒWd  QXd  S(   NRA   R   R   R   t   check_namesR   R   t   at   bt   ct   keyi    i   i   R   R   i   t   columnst   onet   foot   bart   twot   threet   matchs   ^'E'$t   Esf   You are trying to merge on float64 and object columns. If you wish to proceed you should use pd.concat(   R"   R#   R   R    t   assert_series_equalR3   R   R   R   t   isnanRM   t   pytestt   raisest   KeyErrort   copyt
   ValueError(   R$   R"   R#   t   mergedR   R   RN   t   expectedt   df_at   df_bt   df_ct   source_copyt   msg(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_on§   s<    		"+*!!
c         C   sÍ   t  i t j j d d g d d ƒd 6t j j d ƒ d 6ƒ } t  i t j j d d g d d ƒd 6t j j d ƒ d 6d t j d d	 ƒ ƒ} d
 } t j t	 d | ƒ t
 | | d d d t ƒWd  QXd  S(   Nt   mt   ft   sizei   RT   RU   i
   R   i   sF   len\(left_on\) must equal the number of levels in the index of "right"R^   RP   t   right_index(   R   R   R   t   choiceR   R    t   makeCustomIndexRb   Rc   Rf   R	   t   True(   R$   R   R   Rm   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt-   test_join_on_fails_with_different_right_indexÑ   s    %%c         C   sÍ   t  i t j j d d g d d ƒd 6t j j d ƒ d 6d t j d d ƒ ƒ} t  i t j j d d g d d	 ƒd 6t j j d	 ƒ d 6ƒ } d
 } t j t	 d | ƒ t
 | | d d d t ƒWd  QXd  S(   NRo   Rp   Rq   i   RT   RU   R   i   i
   sF   len\(right_on\) must equal the number of levels in the index of "left"R^   RQ   t
   left_index(   R   R   R   Rs   R   R    Rt   Rb   Rc   Rf   R	   Ru   (   R$   R   R   Rm   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt,   test_join_on_fails_with_different_left_indexÜ   s    %%c         C   sÓ   t  i t j j d d g d d ƒd 6t j j d ƒ d 6ƒ } t  i t j j d d g d d ƒd 6t j j d ƒ d 6d t j d d	 ƒ ƒ} d
 } t j t	 d | ƒ$ t
 | | d d d d d g ƒWd  QXd  S(   NRo   Rp   Rq   i   RT   RU   i
   R   i   s)   len\(right_on\) must equal len\(left_on\)R^   RQ   RP   (   R   R   R   Rs   R   R    Rt   Rb   Rc   Rf   R	   (   R$   R   R   Rm   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt/   test_join_on_fails_with_different_column_countsç   s    %%t
   wrong_typei   t   stri    i   c         C   s¢   t  i d d g d 6ƒ } d j t t | ƒ ƒ ƒ } t j t d | ƒ t | | d d d d ƒWd  QXt j t d | ƒ t | | d d d d ƒWd  QXd  S(   Ni   RT   s;   Can only merge Series or DataFrame objects, a {} was passedR^   RP   RQ   (   R   t   formatR{   t   typeRb   Rc   t	   TypeErrorR	   (   R$   Rz   R   Rm   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt)   test_join_on_fails_with_wrong_object_typeñ   s    c         C   s`   |  j  j |  j d d ƒ} | d =|  j  j d ƒ } |  j  j |  j d | ƒ} t | | ƒ d  S(   NRA   R   (   R"   R   R#   t   popR   (   R$   Rh   t   join_colt   result(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_on_pass_vector   s
    c         C   sÂ   |  j  j |  j j g  ƒ d d ƒ} x? |  j D]4 } | | k sF t ‚ | | j ƒ  j ƒ  s. t ‚ q. W|  j  j |  j j g  ƒ d d d d ƒ} t j | j	 | j	 ƒ t
 | ƒ d k s¾ t ‚ d  S(   NRA   R   RB   RJ   i    (   R"   R   R#   t   reindexRM   t   isnat   allR    t   assert_index_equalRX   t   len(   R$   Rg   t   colt   merged2(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_with_len0  s    $ !	c         C   sä   t  i d d d d d d g d 6ƒ } t  i d d g d 6d	 d d g ƒ} | j | d
 d d d ƒ} | j | d
 d ƒ} | | d j ƒ  } t j | d | d d t ƒt j | d | d d t ƒt j | j | j ƒ d  S(   NRT   t   dRU   RV   RW   i    i   R   R   RA   RB   RJ   R+   (   R   R   t   notnaR    R`   R3   R‡   R   (   R$   R   R   RN   Rh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_on_inner  s    %%c         C   s‹   t  i d d d d d g d 6ƒ } t  i d d d g d 6d	 d d d g ƒ} | j | d
 d g ƒ} | j | d
 d ƒ} t | | ƒ d  S(   NRT   RU   RV   RW   i    i   i   R   R   RA   (   R   R   R   (   R$   R   R   RN   Rh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_on_singlekey_list"  s
    "+c         C   sR   |  j  j |  j d d d ƒ} |  j  j |  j d g d d ƒ} t | | ƒ d  S(   NR   RA   R   (   R"   R   R#   R   (   R$   R‚   Rh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_on_series,  s    "c         C   s   t  i d d g d 6ƒ } t d g d d g d d ƒ} | j | d d ƒ} t  i d d g d 6d d g d 6d | j ƒ} t j | | ƒ d  S(   Ni   RT   i   R   t   nameRU   RA   (   R   R   R   R   R    R   (   R$   R   t   dsR‚   Rh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_on_series_buglet1  s    c         C   sÍ   t  d t j d ƒ ƒ } t | d <d | d <t  d t j d d ƒ ƒ } d | d	 <d
 | d <| j | d | ƒ} t | | d | ƒ} t | | ƒ | j | d | ƒ} t | | d | ƒ} t | | ƒ d  S(   NR   i
   t   boolRZ   t   stringi   i   i   t   intg      ð?t   floatRB   (   R   R   t   arangeRu   R   t   _join_by_handR   (   R$   t	   join_typet   df1R   RN   Rh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_index_mixed:  s    



c      	   C   sC  t  i d d 6d d 6d d 6t d 6d t j d	 ƒ d
 d d d d g ƒ} | d j t j k se t ‚ | d j t j k s t ‚ t  i d d 6d d 6d d 6t d 6d t j d d	 d ƒ d
 d d d d g ƒ} | j | d d d d ƒ} d d d d d d d d g } | d  | _	 | d | _	 t
 | | ƒ } t | | ƒ d  S(   Ng      ð?R   i   t   BRZ   R   R   R   i
   RX   i    t   lsuffixt   _onet   rsuffixt   _twot   A_onet   B_onet   C_onet   D_onet   A_twot   B_twot   C_twot   D_twoi   (   R   Ru   R   R˜   R(   R-   RM   t   bool_R   RX   R™   R   (   R$   R›   R   RN   t   expected_columnsRh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_index_mixed_overlapL  s    %%c         C   s;   t  ƒ  } | j t  d g d d g d d g ƒd d ƒd  S(   Ni   R   i    RX   R   RB   RH   (   R   R   (   R$   t   x(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_empty_bug`  s    	c         C   sy   t  t d d ƒ d d d g ƒ} t t d ƒ ƒ } | | d <t  t d d ƒ d d g ƒ} | j | ƒ | j | ƒ d  S(	   Ni   i   RX   RT   RU   RV   i   t   q(   R   R   R   R   (   R$   RT   RV   RŒ   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_unconsolidatede  s    !
c         C   sR  t  j d d d d d d g d d d d d d g g d d d g ƒ} t  j d d d d	 d	 d	 g d d d d d d g g d d d g ƒ} t d
 t j j d ƒ d | d d g ƒ } t d
 t j j d ƒ d | d d g ƒ } | j d d ƒ } | j d d ƒ } | j | d d ƒ} t | j	 ƒ j
 t | j	 ƒ ƒ } | j | ƒ j | j | ƒ ƒ } | j | j _ t | | ƒ | j j | j k st ‚ | j d d ƒ } | j d d ƒ } | j | d d ƒj d d ƒ } t | j	 ƒ j
 t | j	 ƒ ƒ } | j | ƒ j | j | ƒ ƒ } | j | j _ t | | ƒ | j j | j k sNt ‚ d  S(   NRT   RU   i   i   i   t   namest   firstt   secondRV   R&   i   R   RX   s   var Xs   var Yt   leveli    RB   RH   (   R   t   from_arraysR   R   R   R   t
   sort_indexR   R   t   valuest   unionR„   R±   R   R   RM   (   R$   t   index1t   index2R›   R   RN   t   ex_indexRh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_multiindexp  s4    !!!!!c   	      C   sC  d d d d d d d d d d g
 } d d d d d d d d d d g
 } t  j j t | ƒ ƒ } t i | d	 6| d
 6| d 6ƒ } t d d d d d g d d d g g d d d d d d d d d d d g
 d d d d d d d d d d g
 g d d d g ƒ } t t  j j d d ƒ d | d d d d g ƒ} | j | d d	 d
 g d d ƒ} t | | j ƒ  d d	 d
 g d d d g d d d  t	 ƒ} t | | d d	 d
 g d! t
 d d d  t	 ƒ} t | | j | ƒ ƒ t | | d d	 d
 g d! t
 d d d  t	 ƒ} | j d d g d" d ƒ} | j | _ | j j s2t ‚ t | | ƒ d  S(#   NR[   RZ   t   bazt   quxt   snapR\   RY   R]   R   R   R&   t   levelst   codesi    i   i   i   R±   R²   R³   i
   R   RX   t   j_onet   j_twot   j_threeRA   RB   RJ   RP   RQ   t   sortRw   t   axis(   R   R   R   Rˆ   R   R   R   R	   t   reset_indexR3   Ru   R   t   reindex_liket   dropR   t   is_monotonicRM   (	   R$   R   R   R&   R   t   to_joinRN   Rh   t	   expected2(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_inner_multiindex“  s:    !'!	c         C   sÜ   t  d d g d d d	 d
 g ƒ} | j d g ƒ j i t j t j g d	 6ƒ } t  d d g d d d	 d g ƒ} | j d d t ƒt j	 t
 ƒ   t | | d t d t ƒ} Wd  QXd | k sÆ t ‚ d	 | k sØ t ‚ d  S(   Ni   i   i   i   i   i   RX   RT   RU   RV   i   i
   RŒ   t   inplaceRw   Rr   t   mean(   i   i   i   (   i   i   i   (   i   i   i   (   i   i
   i   (   RU   RÏ   (   R   t   groupbyt   aggR   RÏ   t   sumt	   set_indexRu   R    t   assert_produces_warningt   UserWarningR	   RM   (   R$   R   t   new_dft   other_dfR‚   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_hierarchical_mixed»  s    !.!c   
      C   s  t  t d d ƒ d d d g d t j ƒ} t  t d d ƒ d d g d t j ƒ} | j | ƒ } | j d d	 k sy t ‚ | j d d	 k s’ t ‚ | j d d
 k s« t ‚ t j j	 d d d ƒ j
 d ƒ } t j j d ƒ j
 d	 ƒ } t j j d ƒ j
 d
 ƒ } t  i | d 6| d 6| d 6ƒ } t  i | d 6| d 6| d 6ƒ } t  t j j d ƒ j
 d
 ƒ d d g ƒ} | j | d d d t ƒ} | j d d k s¢t ‚ | j d d	 k s»t ‚ | j d d
 k sÔt ‚ | j d d
 k sít ‚ | j | d d d t ƒ}	 t | |	 ƒ d  S(   Ni
   i   RX   RT   RU   R(   i   RV   t   float64t   float32i    i   id   R-   t   mdRP   Rr   (   R   R   R   RÙ   RÚ   R   t   dtypesRM   R   t   randintt   astypeR	   Ru   R   (
   R$   RT   RU   RN   RV   R   t   xpdft   sR8   t   xp(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_float64_float32È  s&    *'!!!*c      
   C   s7  t  i d d g d 6d d g d 6d d g d 6ƒ } t  i d d g d 6d d g d 6d d	 g d
 6ƒ } t  i d d g d 6d d g d 6d d g d 6ƒ } | j d d g ƒ } | j d d g ƒ } | j d d g ƒ } | j | | g d d ƒ} t | | d d d g d d ƒ} t | | d d d g d d ƒ}	 | j ƒ  } |	 | j }	 |	 j j d ƒ |	 d <|	 j j d ƒ |	 d <t	 | |	 ƒ t  i d d d g d 6d d d g d 6d d d g d 6ƒ } t  i d d d g d 6d d d g d 6d d	 d g d
 6ƒ } t  i d d d g d 6d d d g d 6d d d g d 6ƒ } | j d d g ƒ } | j d d g ƒ } | j d d g ƒ } | j | | g d d ƒ} t | | d d d g d d ƒ} t | | d d d g d d ƒ}	 | j ƒ  } t	 | |	 j
 d  d  … | j f ƒ t  i d d d d d d d d g d 6d d d d d d d d g d 6t j j d ƒ d 6t j j d ƒ d 6ƒ }
 t t j t j d ƒ d ƒ d  t j t j d ƒ d ƒ d! d" ƒ} |
 j | d d ƒ} |
 j | d d ƒ} |
 j | d d# ƒ} |
 j | d d$ ƒ} t	 | | ƒ t	 | | ƒ t	 | | ƒ d  S(%   Ni   RT   RU   i
   i   RV   i   id   iÈ   RŒ   iè  iÐ  t   eRB   RH   RA   R-   i   i,  i¸  RJ   RZ   R[   R   RY   R\   R]   R   i   R   R   R   R‘   t   TESTR4   R5   (   R   RÓ   R   R	   RÇ   RX   RT   RÞ   RU   R   t   locR   R   R   R   t   repeatR˜   (   R$   R›   R   t   df3t   idf1t   idf2t   idf3R‚   t   df_partially_mergedRh   R   Rà   RJ   RH   R4   R5   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_many_non_unique_indexà  sR    333!!<<9!!#$c         C   s  t  i d d d d g d 6d d d d g d	 6ƒ } t  i d
 d d g d 6d d d d g ƒ} | j | d d d t ƒ} t  i d d d d g d 6d d d d g d	 6d
 d d d g d 6d d d d d g ƒ} t | | ƒ | j | d d d t ƒ} t j | j t j	 t
 d ƒ ƒ ƒ d  S(   NRZ   R[   R½   RW   i   i   i   i   R   RT   RU   RV   t   value2R   RA   RÅ   i    (   R   R   Ru   R   R3   R    R‡   R   t   pdR   R   (   R$   R4   R5   RN   Rh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_sort  s    c         C   s   t  i d d d d g d 6d d d d d g ƒ} t  i d d d	 d
 g d 6d d d d d g ƒ} | j | ƒ } t  i d d d d d g d 6d t j d d	 t j g d 6d d d d d d g ƒ} t j | | ƒ t  i d d d d g d 6d d d d d g ƒ} t  i d d d	 d
 g d 6d d d d d g ƒ} | j | ƒ } t  i d d d d g d 6d d d t j g d 6d d d d d g ƒ} t j | | ƒ d  S(   Ni   i   i   i   RT   R   i   i   i   i   RU   (   R   R   R   t   nanR    R   (   R$   R›   R   R‚   Rh   Rç   t   df4(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt    test_join_mixed_non_unique_index%  s    11112c         C   sð   t  j d d d d d ƒ} t g  t t | ƒ ƒ D] } | ^ q1 d | d d g ƒ} t | | g ƒ } | j | d	 d
 d d ƒ} t t j t j	 d d t j
 ƒj d ƒ j d d ƒ d ƒ d d d g d | j ƒ  j ƒ} t j | | ƒ d  S(   Ns
   2016-01-01t   periodsi   t   freqt   MR   RX   t   pnumRB   RJ   R    t   _df2R(   i   iÿÿÿÿi   t   pnum_df2(   Rî   t   period_rangeR   t   rangeRˆ   R   R   R   t   tileR˜   R-   Ræ   t   reshapeR¶   R   R    R   (   R$   R   t   iR   R   R‚   Rh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt!   test_join_non_unique_period_index6  s    (9c      	   C   s—   t  t j j d d ƒ d d d d d d d	 g ƒ} | j d
 d d
 ƒ | j d d d ƒ | j d ƒ } | j ƒ  } | j ƒ  } | j | d d ƒd  S(   Ni   i   RX   RT   RU   RV   RŒ   Rã   Rp   i    t   idi   t   dtRZ   R    t   _right(	   R   R   R   R   t   insertRÐ   RÏ   t   countR   (   R$   R   t   groupedt   mnt   cn(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt    test_mixed_type_join_with_suffixB  s    c         C   s–  t  t j j d d ƒ d t d ƒ ƒ} | d d g | d d g | d	 d
 g g } | d j | d ƒ } t j | | ƒ | d d g d  | d d g d | d	 d
 g d d !g } d „  } | d j | d d d ƒ} | | | | j ƒ | d j | d ƒ } | | | | d j ƒ | d j | d d d ƒ} | | | | j d d !ƒ d } t	 j
 t d | ƒ  | d j | d d d ƒWd  QXd  S(   Ni
   i   RX   t   abcdefRT   RU   RV   RŒ   Rã   Rp   i    i   iþÿÿÿi   i	   c         S   sM   g  |  D] } | j  | ƒ ^ q } | d j | d ƒ } t j | | ƒ d  S(   Ni    i   (   R„   R   R    R   (   t   df_listR‚   t	   exp_indexR­   t	   reindexedRh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   _check_diff_indexZ  s    "RB   RH   RJ   i   s?   Joining multiple DataFrames only supported for joining on indexR^   RA   (   R   R   R   R   t   listR   R    R   R   Rb   Rc   Rf   (   R$   R   R	  RN   R  Rm   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_manyP  s     '-+	c         C   sÁ   t  t j j d d ƒ d d d d d g ƒ} 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 } | j | | g ƒ } t | | ƒ d  S(   Ni   i   RX   R   R   R   R   RZ   R[   RW   (   R   R   R   R   Rå   R   R   (   R$   R   R›   R   Rç   R‚   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_many_mixedm  s    -c   	      C   sõ  t  t t j j d d ƒ d d d d d g ƒt t j j d d d d ƒj d d	 ƒ d d d
 g ƒg d d ƒ} t  | | g d d ƒ} | j | d d ƒ} | j | _ t	 | | ƒ t t j j d d	 ƒ d d d g ƒ} t t j j d d	 ƒ d d d g ƒ} t t j j d d	 ƒ d d d g ƒ} t t j j d d	 ƒ d d d g ƒ} | j
 | d t d t ƒj
 | d t d t d d ƒ} | j
 | d t d t ƒ} t  | | | | g d d ƒ} d d d d d d d d g | _ t	 | | ƒ d  S(   Ni
   i   RX   R   R   i    Rq   i   i   R   RÆ   i   R    t   _2R­   t   yRw   Rr   RB   RH   t   x_xt   y_xt   x_yt   y_y(   R   R   R   R   R   RÝ   Rü   R   RX   R   R	   Ru   (	   R$   R   Rh   R‚   t   wR­   R  t   zt   dta(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_dupsw  s*    	''''	c      
   C   sÛ  t  d t ƒ Æt j ƒ  } t j | ƒ | j d  d … d  d … d  d … f } | j d d  … d d  … d d  … f } | j | ƒ } | j ƒ  } | d | d <t j | | ƒ | j | d d ƒ} | j ƒ  } | d	 | d	 <| d
 | d
 <| j	 d d	 d
 d g ƒ } t j | | ƒ | j | d d ƒ} | j d  d  … d d … d d … f } t j | | ƒ | j | d d ƒ} | j	 d | j
 d | j ƒ } | j | j	 d | j
 d | j ƒ ƒ } t j | | ƒ Wd  QXd  S(   Nt   recordi   i
   i   i   t   ItemCRB   R5   t   ItemAt   ItemBt   itemsRJ   RH   t   majort   minor(   R    Ru   R    t	   makePanelt   add_nanst   ilocR   Re   t   assert_panel_equalR„   t
   major_axist
   minor_axis(   R$   t   panelt   p1t   p2R‚   Rh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_panel_join”  s0    (((c   	   
   C   sç   t  d t ƒ Ò t j ƒ  } t j | ƒ | j d d d g } | j d d g } | j | d d d d ƒ} | j d d g j d ƒ } | j d d g j d ƒ } | j d g } | j | j | ƒ ƒ } t j | | ƒ Wd  QXd  S(	   NR  R  R  R  Rž   t   _p1R    t   _p2(	   R    Ru   R    R!  R"  Rå   R   t
   add_suffixR$  (	   R$   R'  R(  R)  RN   t   p1_suft   p2_suft
   no_overlapRh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_panel_join_overlap·  s    c         C   s  t  d t ƒ d t _ t j ƒ  } d t _ | j d  | j d d !| j d g } | d j | d ƒ } t j | | ƒ | j d  d … d  d … f | j d d … d d  … f | j d d  … d	 d
 … f g } i  } x! | D] } | j | j	 ƒ  ƒ qã W| d j | d d d ƒ} t
 j j | d t ƒ} t j | | ƒ | d j | d d d ƒ} t
 j j | d t ƒ} t j | | ƒ d } t j t d | ƒ, | d j | d d d d d d d ƒWd  QXd } t j t d | ƒ  | d j | d d d ƒWd  QXWd  QXd  S(   NR  i
   i   i   i   i    i   iûÿÿÿi   iùÿÿÿRB   RJ   t	   intersectRH   s3   Suffixes not supported when passing multiple panelsR^   Rž   RZ   R    R[   s-   Right join not supported with multiple panelsR5   (   R    Ru   R    t   KR!  R#  R   R$  t   updatet	   iteritemsRî   t   Panelt	   from_dictR3   Rb   Rc   Rf   (   R$   R'  t   panelsRN   t	   data_dictt   pRh   Rm   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_panel_join_manyÉ  s4    		'" c   
      C   s¥  t  j t d ƒ t d ƒ d d g g d d d d g ƒ} t i t d ƒ d 6d	 | ƒ} t  j t d ƒ t d ƒ g d d d g ƒ} t i g  t d d
 ƒ D] } d | ^ q› d 6d	 | ƒ} | j | d d d g d | ƒ} | j ƒ  j | j ƒ  d d d g d | ƒj d d d g ƒ } t	 | | ƒ d }	 t
 j t d |	 ƒ | j | d d d | ƒWd  QXt
 j t d |	 ƒ$ | j | d d d g d | ƒWd  QXd  S(   Nt   abct   xyi   i   R±   t   numi   t   v1R   i   id   t   v2RA   RB   sF   len\(left_on\) must equal the number of levels in the index of "right"R^   (   R   t   from_productR  R   Rú   R   RÇ   R	   RÓ   R   Rb   Rc   Rf   (
   R$   Rš   t	   leftindexR4   t
   rightindexRý   R5   R‚   Rh   Rm   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   test_join_multi_to_multií  s$    '0	!c      	   C   sÚ   t  j i t  j d d d d d d ƒ d 6t d ƒ d	 6ƒ } t  j i t  j d d
 d d d d ƒ d 6t d ƒ d 6ƒ } | j | j d ƒ d d ƒ} | j ƒ  } t  j t j	 g t
 | ƒ d t ƒ| d <t | | ƒ d  S(   Nt   starts
   2018-01-01Ró   i   t   tzs   America/Chicagot   datet   abcdet   valss
   2018-01-03t   tuvwxt   vals_2RA   R(   (   Rî   R   t
   date_rangeR  R   RÓ   Re   R   R   Rð   Rˆ   t   objectR   (   R$   R›   R   R‚   Rh   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt#   test_join_on_tz_aware_datetimeindex  s    

)N(2   t   __name__t
   __module__R'   R=   R>   R@   RF   RG   RI   RK   RO   RR   Rn   Rv   Rx   Ry   Rb   t   markt   parametrizet   NoneR   t   arrayR   Rƒ   R‹   RŽ   R   R   R“   Rœ   R¬   R®   R°   R¼   RÍ   RØ   Râ   Rì   Rï   Rò   Rþ   R  R  R  R  R*  R1  R;  RD  RN  (    (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyR      sT   											*			
9				
								#	(			4						
		#		$	R4   t   _xt   _yc         C   sq  x* | D]" } | | j  ƒ  j ƒ  s t ‚ q W|  j | ƒ } | j | ƒ }	 x| j | ƒ D]\ }
 } t | |  j | ƒ } t | | j | ƒ } y | j |
 ƒ } WnI t k
 rï | d k rÙ t d t |
 ƒ ƒ ‚ n  t	 | |  j | ƒ n Xt
 | | ƒ y |	 j |
 ƒ } WnI t k
 r[| d k rEt d t |
 ƒ ƒ ‚ n  t	 | | j | ƒ q[ Xt
 | | ƒ q[ Wd  S(   NR4   RJ   s'   key %s should not have been in the joinR5   (   R4   RJ   (   R5   RJ   (   R   R†   RM   RÐ   t   _restrict_to_columnsRX   t	   get_groupRd   R{   t   _assert_all_nat   _assert_same_contents(   R4   R5   R‚   R   RB   Rž   R    RV   t   left_groupedt   right_groupedt	   group_keyt   groupt   l_joinedt   r_joinedt   lgroupt   rgroup(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyRC     s.     c            s‘   g  |  j  D]0 } | | k s4 | j ˆ  d ƒ | k r
 | ^ q
 } |  j d  d  … | f }  |  j d ‡  f d †  ƒ }  |  j d  d  … | f }  |  S(   Nt    RX   c            s   |  j  ˆ  d ƒ S(   NRc  (   t   replace(   R­   (   t   suffix(    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   <lambda>L  s    (   RX   Rd  Rå   t   rename(   R^  RX   Re  RV   t   found(    (   Re  sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyRW  D  s    0c            sŠ   d } |  j  | ƒ j ƒ  j } | j  | ƒ j ƒ  j } d „  | Dƒ ‰  t ˆ  ƒ t | ƒ k sd t ‚ t ‡  f d †  | Dƒ ƒ s† t ‚ d  S(   Niy)íÿc         S   s   h  |  ] } t  | ƒ ’ q S(    (   t   tuple(   t   .0t   row(    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pys	   <setcomp>Z  s   	 c         3   s!   |  ] } t  | ƒ ˆ  k Vq d  S(   N(   Ri  (   Rj  Rk  (   t   rows(    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pys	   <genexpr>\  s    (   t   fillnat   drop_duplicatesR·   Rˆ   RM   R†   (   t
   join_chunkR#   t   NA_SENTINELt   jvaluest   svalues(    (   Rl  sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyRZ  T  s    c         C   sC   x< | D]4 } | | k r q n  |  | j  ƒ  j ƒ  s t ‚ q Wd  S(   N(   R…   R†   RM   (   Ro  t   source_columnsR   RV   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyRY  _  s    c   	      C   sˆ   |  j  j | j  d | ƒ} |  j | ƒ } | j | ƒ } |  j j | j ƒ } x' t j | ƒ D] \ } } | | | <q^ W| j d | ƒ S(   NRB   RX   (   R   R   R„   RX   t   appendt   compatR5  (	   RT   RU   RB   t
   join_indext   a_ret   b_ret   result_columnsR‰   Rà   (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyR™   f  s    ()   t   warningsR    t   numpyR   t   numpy.randomR   Rb   t   pandas._libsR   R.   t   pandas.compatRu  R   t   pandasRî   R   R   R   R   R   R	   t%   pandas.tests.reshape.merge.test_mergeR
   R   R   t   pandas.util.testingt   utilt   testingR    R   RT  R,   RQ  t   filterwarningsRM  R   RC   RW  RZ  RY  R™   (    (    (    sC   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_join.pyt   <module>   s.   .	ÿ ÿ ÿ $			