ó
šxŠ\c           @   s9  d  d l  m Z d  d l m Z m Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l	 Z	 d  d l
 m Z d  d l m Z m 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 m Z m Z m Z m Z d  d l m Z d  d	 l m  Z  d  d
 l! m" Z" m# Z# d  d l$ j% j& Z' d  d l$ m( Z( m) Z) d Z* d Z+ e+ e* d „ Z, d „  Z- d „  Z. e	 j/ d e- ƒ  d d „  ƒ d „  ƒ Z0 e	 j/ d e- ƒ  d d „  ƒ d „  ƒ Z1 e	 j/ d e. ƒ  d d „  ƒ d „  ƒ Z2 d e3 f d „  ƒ  YZ4 d „  Z5 d e3 f d „  ƒ  YZ6 e	 j/ d „  ƒ Z7 e	 j/ d „  ƒ Z8 d  e3 f d! „  ƒ  YZ9 e	 j/ d" „  ƒ Z: e	 j/ d# „  ƒ Z; d$ e3 f d% „  ƒ  YZ< e	 j= j> d& e d' d( g d) d' d( g d* d+ ƒe d, d- g d* d+ ƒe d. d/ g d* d+ ƒe d. d/ g d* d+ ƒe d0 d1 d2 d/ d* d+ ƒ e d3 d4 g d* d+ ƒg d d5 „  ƒd6 „  ƒ Z? e	 j= j> d7 d8 d9 g e@ e@ eA eA d( f e@ e@ e@ eB eB d( f e@ d8 d9 g e@ eA eB d( f e@ e@ d8 d9 g eB eA d( f d8 d9 g e@ e@ eA eA e@ f e@ e@ e@ eB eB e@ f e@ d8 d9 g e@ eA eB e@ f e@ e@ d8 d9 g eB eA e@ f g ƒ d: „  ƒ ZC d S(;   iÿÿÿÿ(   t   OrderedDict(   t   datet   datetimeN(   t   nan(   t   lrange(   t   is_categorical_dtypet   is_object_dtype(   t   CategoricalDtype(
   t   Categoricalt   CategoricalIndext	   DataFramet   DatetimeIndext   Float64Indext
   Int64Indext
   MultiIndext
   RangeIndext   Seriest   UInt64Index(   t   concat(   t
   MergeErrort   merge(   t   assert_frame_equalt   assert_series_equali2   i   c         C   sx   t  |  ƒ } t j t j | | |  ƒ ƒ } t | ƒ | k  rg t j t | ƒ | | t | ƒ  ƒ } n  t j | ƒ | S(   N(   R   t   npt   asarrayt   tilet   lent   listt   randomt   shuffle(   t   ngroupst   nt   unique_groupst   arr(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   get_test_data   s    *c           C   s‘   t  j d g d d ƒt  j d g d d ƒt  j d g ƒ t  j d g ƒ t  j t g ƒ t  j t  j d ƒ g ƒ t  j t  j d d d	 ƒg ƒ g S(
   Ni   t   dtypet   int64t   Int64g®Gáz®ó?t   foos
   2018-01-01t   tzs
   US/Eastern(   t   pdR   t   Truet	   Timestamp(    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt
   get_series*   s    c           C   s^   t  j t j g d d ƒt  j t j g d d ƒt  j t j g d d ƒt  j t  j g ƒ g S(   NR#   R%   t   floatt   object(   R(   R   R   R   t   NaT(    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   get_series_na6   s    t   paramst   idsc         C   s
   |  j  j S(   N(   R#   t   name(   t   x(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   <lambda>?   s    c         C   s   |  j  S(   sV   
    A parametrized fixture returning a variety of Series of different
    dtypes
    (   t   param(   t   request(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   series_of_dtype?   s    c         C   s
   |  j  j S(   N(   R#   R2   (   R3   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR4   H   s    c         C   s   |  j  S(   sk   
    A duplicate of the series_of_dtype fixture, so that it can be used
    twice by a single function
    (   R5   (   R6   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   series_of_dtype2H   s    c         C   s
   |  j  j S(   N(   R#   R2   (   R3   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR4   Q   s    c         C   s   |  j  S(   sU   
    A parametrized fixture returning a variety of Series with all NA
    values
    (   R5   (   R6   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   series_of_dtype_all_naQ   s    t	   TestMergec        
   B   s0  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 d „  Z d „  Z d „  Z d „  Z d „  Z e j j d e d e d e ƒ e d e d d ƒ e d d d e ƒ e d d d d ƒ g ƒ 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' d( d) d* d+ g ƒ d, „  ƒ Z$ d- „  Z% d. „  Z& d/ „  Z' d0 „  Z( d1 „  Z) d2 „  Z* d3 „  Z+ d4 „  Z, d5 „  Z- e j j d6 d7 d8 g ƒ e j j. d9 d: ƒ d; „  ƒ ƒ Z/ d< „  Z0 RS(=   c      	   C   s4  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  i d d d d d d d g d 6t j j d ƒ d 6ƒ |  _	 t  i t j j d ƒ d 6d d d d d g ƒ|  _
 d  S(   Nt   key1t   key2t   data1t   data2i   R   i   R   i   t   valuet   at   bt   ct   dt   et   keyi   t   v1i   t   v2t   index(   R
   R"   R   R   t   randnt   Nt   dft   NGROUPSt   df2t   leftt   right(   t   selft   method(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   setup_method\   s    
 "c         C   s‹   t  j ƒ  } t  j i d d g d 6d d d g d d ƒ} t  j | | d t d	 t ƒ} t  j i g  d 6d g  d d ƒ} t | | ƒ d  S(
   Ni   i   R@   RH   i    R#   R$   t
   left_indext   right_index(   R(   R
   R   R)   R   (   RP   t   df_emptyt   df_at   resultt   expected(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_inner_join_emptyp   s
    ."c         C   sJ   t  |  j |  j ƒ } t  |  j |  j d d d g ƒ} t j | | ƒ d  S(   Nt   onR;   R<   (   R   RK   RM   t   tmR   (   RP   t   joinedt   exp(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_commonx   s    !c         C   sn   |  j  j d ƒ } |  j j d ƒ } t | | d d ƒ} t |  j  |  j d d ƒj d ƒ } t | | ƒ d  S(   NR;   RZ   (   RK   t	   set_indexRM   R   R   (   RP   RN   RO   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_index_as_on_arg}   s
    $c         C   sR  t  i d d d d d d d g d 6t j j d ƒ d 6ƒ } t  i t j j d	 ƒ d
 6d d d d d g ƒ} t | | d d d t d d d t ƒ} t | | d d d t d d d t ƒ} t | | j d  d  … | j	 f ƒ t | | d d d t d d d t ƒ} t | | d d d t d d d t ƒ} t | | j d  d  … | j	 f ƒ d  S(   NR@   RA   RB   RC   RD   RE   i   RF   i   RG   RH   t   left_onRT   t   howRN   t   sortt   right_onRS   RO   (
   R
   R   R   RI   R   R)   t   FalseR   t   loct   columns(   RP   RN   RO   t   merged1t   merged2(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt(   test_merge_index_singlekey_right_vs_left†   s    "#c      	   C   s   t  i d d d d d d d g d 6t j j d ƒ d 6ƒ } t  i t j j d	 ƒ d
 6d d d d d g ƒ} t | | d d d t d d ƒ} | j | d d ƒj | j } t	 | | ƒ t | | d d d t d d ƒ} | j | d d ƒj | j } t	 | | j d  d  … | j
 f ƒ d  S(   NR@   RA   RB   RC   RD   RE   i   RF   i   RG   RH   Ra   RT   Rb   t   innerRZ   Rd   RS   (   R
   R   R   RI   R   R)   t   joinRf   RH   R   Rg   (   RP   RN   RO   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt    test_merge_index_singlekey_inner˜   s    "		c         C   s  d } t  j t j j d | ƒ t |  j |  j d t ƒWd  QXd } t  j t j j d | ƒ t |  j |  j d t ƒWd  QXd } t  j t j j d | ƒ$ t |  j |  j d d d	 d ƒWd  QXd
 } t  j t	 d | ƒ- t |  j
 |  j d d g d d d g ƒWd  QXd  S(   Ns&   Must pass right_on or right_index=Truet   matchRS   s$   Must pass left_on or left_index=TrueRT   sR   Can only pass argument "on" OR "left_on" and "right_on", not a combination of bothRa   RE   RZ   s)   len\(right_on\) must equal len\(left_on\)R;   Rd   R<   (   t   pytestt   raisesR(   t   errorsR   R   RN   RO   R)   t
   ValueErrorRK   RM   (   RP   t   msg(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_misspecified©   s    %c         C   së   d } t  j t d | ƒ0 t |  j |  j d d d t d d d g ƒWd  QXd	 } t  j t d | ƒ0 t |  j |  j d d d d d g d t ƒWd  QXt  j t d | ƒ6 t |  j |  j d d d d d g d d d g ƒWd  QXd  S(
   NsE   right_index parameter must be of type bool, not <(class|type) 'list'>Rn   Rb   RN   RS   RT   R;   R<   sD   left_index parameter must be of type bool, not <(class|type) 'list'>(   Ro   Rp   Rr   R   RK   RM   Re   (   RP   Rs   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt&   test_index_and_on_parameters_confusion»   s    c         C   sx   t  |  j |  j d d ƒ} |  j d j ƒ  d j ƒ  } t | ƒ | k sP t ‚ d | k sb t ‚ d | k st t ‚ d  S(   NRZ   RE   i   t   v1_xt   v1_y(   R   RN   t   value_countst   sumR   t   AssertionError(   RP   t   mergedt   exp_len(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_overlapÊ   s
    c      
   C   s“  t  i d d d d g d 6d d d d g d	 6ƒ } t  i d d d
 d g d 6d d d d g d	 6ƒ } | j | d d d d d d d t ƒ} t j d d d d d d t j g d d ƒ} t j | d | ƒ t j d t j d d d d d
 g d d ƒ} t j | d | ƒ t j d d d d d d t j g d d ƒ} t j | d | ƒ t j d t j d d d d d g d d ƒ} t j | d | ƒ d  S(   NR&   t   bart   bazt   lkeyi   i   i   i   R?   t   quxt   rkeyi   i   i   i   Ra   Rd   Rb   t   outerRc   R2   t   value_xt   value_y(	   R
   R   R)   R(   R   R   R   R[   R   (   RP   RN   RO   R{   R]   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt%   test_merge_different_column_key_namesÑ   s     $	$	--c      	   C   s½   t  i d d 6d d 6d t d ƒ ƒ} t  i d d 6d	 d
 6d t d ƒ ƒ} t | | d t d t d t ƒ} d | d <| d d k j ƒ  s“ t ‚ d | d
 <| d
 d	 k j ƒ  s¹ t ‚ d  S(   Ni    R@   i   RA   RH   i
   R&   RB   R~   RC   RS   RT   t   copyi   t   peekaboo(   R
   R   R   R)   t   allRz   (   RP   RN   RO   R{   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_copyè   s    &&

c      	   C   s½   t  i d d 6d d 6d t d ƒ ƒ} t  i d d 6d	 d
 6d t d ƒ ƒ} t | | d t d t d t ƒ} d | d <| d d k j ƒ  s“ t ‚ d | d
 <| d
 d k j ƒ  s¹ t ‚ d  S(   Ni    R@   i   RA   RH   i
   R&   RB   R~   RC   RS   RT   R‡   i   Rˆ   (   R
   R   R   R)   Re   R‰   Rz   (   RP   RN   RO   R{   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_nocopyõ   s    &&

c         C   s)  t  i d d d d d g d 6t d ƒ d 6d d d g ƒ} t  i d d d d d d g d 6t d	 ƒ d
 6ƒ } t | | d d d d ƒ} t  i d d d d d d d d d g	 d 6t j d d d d d d d t j t j g	 ƒ d 6d d d d d d d d d g	 d
 6d d d d
 g ƒ} t | | ƒ d  S(   Ni   i   i   RE   i   R?   Rg   i   i   t   rvalueRZ   Rb   Rƒ   i    (   R
   R   R   R   t   arrayR   R   (   RP   RN   RO   R\   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt"   test_intelligently_handle_join_key  s    (%c      	   C   sj  t  i d g d 6d g d 6ƒ } t  i d g d 6d g d 6ƒ } t | | d d ƒ} | d j d	 k sn t ‚ t  i t g d 6d g d 6ƒ } t  i t g d 6d
 g d 6ƒ } t | | d d ƒ} | d j d k sÜ t ‚ t  i d g d 6ƒ } t  i d g d 6ƒ } t j d g ƒ } t j d g ƒ } t | | d | d | d d ƒ} | d j d	 k sft ‚ d  S(   Ni   RE   i
   RF   i   i   Rb   Rƒ   R$   i    R-   t   valRa   Rd   t   key_0(   R
   R   R#   Rz   R)   Re   R   R   (   RP   t   df1RM   RK   R€   R‚   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_join_key_dtype_cast  s        !c         C   s{  t  i d d d d d g d 6t d ƒ d 6d d d g ƒ} t  i t d ƒ d	 6ƒ } t j d d d d d
 d g ƒ } t | | d d d | d d ƒ} t | | d | d d d d ƒ} t | d | d ƒ | d j ƒ  j ƒ  sè t ‚ | d j ƒ  j ƒ  st ‚ t  i t d ƒ d 6d d g ƒ} t  i t d ƒ d	 6ƒ } t j d d d d d g ƒ } t j d d d d d
 d g ƒ } t | | d | d | d d ƒ} t	 j | d t
 d d d d d d d d
 d g	 d d ƒƒ t  i t d ƒ d 6ƒ } t  i t d ƒ d	 6ƒ } t j d d d d d d g d t j ƒ} t | | d t d | d d ƒ} t	 j | d t
 | d d ƒƒ d  S(   Ni   i   i   RE   i   R?   Rg   i   RŒ   i   Ra   Rd   Rb   Rƒ   R   R2   i    R#   RS   (   R
   R   R   R   R   R   t   notnaR‰   Rz   R[   R   R$   R)   (   RP   RN   RO   RE   R{   Ri   R€   R‚   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_handle_join_key_pass_array)  s,    !!!"!!
*!c      	   C   s¡   t  j ƒ  } t i d g d 6d | g ƒ} t i d d g d 6d | | g ƒ} d j d d  d	 d  d
 t d t ƒ } t j t d | ƒ t	 | | ƒ Wd  QXd  S(   NR@   R3   RH   RA   RB   t   ysz   No common columns to perform merge on. Merge options: left_on={lon}, right_on={ron}, left_index={lidx}, right_index={ridx}t   lont   ront   lidxt   ridxRn   (
   R   t   nowR
   t   formatt   NoneRe   Ro   Rp   R   R   (   RP   t   dtR‘   RM   Rs   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt&   test_no_overlap_more_informative_errorG  s    %	c      	   C   si  t  d d d ƒ } t  d d d ƒ } t  d d d ƒ } t  d d d ƒ } t i d g d 6d	 | g ƒ} t i d
 d g d 6d	 | | g ƒ} t | | ƒ t i d d
 d g d 6d	 | | | g ƒ} t i d d d d d d g d 6d	 | | | | | | g ƒ} t | | ƒ t i d d
 g d 6d	 | | g ƒ} t i d d g d 6d	 | | g ƒ} t | | ƒ d  S(   NiÜ  i   i   i   i   i   R@   R3   RH   RA   RB   R•   t   qRC   RD   t   ft   gt   h(   R   R
   t   _check_merge(   RP   R   t   dt2t   dt3t   dt4R‘   RM   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_non_unique_indexesU  s    %+"%%c         C   s¯   t  d d d ƒ } t  d d d ƒ } t  d d d ƒ } t i d d d d	 g d
 6d | | | | g ƒ} t i d d d d d g d 6d | | | | | g ƒ} t | | ƒ d  S(   NiÜ  i   i   i   i   R@   RA   RB   RC   R3   RH   RD   R    R¡   s    ht   iR•   (   R   R
   R£   (   RP   R   R¤   R¥   R‘   RM   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt(   test_merge_non_unique_index_many_to_manyj  s    c         C   s‡   t  i d g d 6d g d 6ƒ } t  i g  d 6ƒ } t | | d d d d ƒ} t | | ƒ t | | d d d d ƒ} t | | ƒ d  S(	   Ni   RE   i   R?   RZ   Rb   RN   RO   (   R
   R   R   (   RP   RN   RO   RW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_left_merge_empty_dataframet  s     t   kwargRS   RT   Rd   R3   Ra   R@   c      	   C   s­   t  j g  d d d d g ƒ} t  j g  d d d d g ƒ} t  j g  d d d d d d d g d t  j g  d	 t ƒd	 t ƒ} t  j | | d
 | | } t j | | ƒ d  S(   NRg   R@   RA   RB   R3   R•   t   zRH   R#   Rb   (   R(   R
   t   IndexR-   R   R[   R   (   RP   t	   join_typeR«   RN   RO   t   exp_inRW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt!   test_merge_left_empty_right_empty~  s    $	c      	      sD  t  j g  d d d d g ƒ‰  t  j d d d g d d	 d
 g d d d g g d d d d g ƒ‰ t  j i t j t j g d d t ƒd 6t j t j g d d t ƒd 6t j t j g d d t ƒd 6d d d g d 6d d	 d g d 6d d
 d g d 6d d d d d d d g ƒ} | d d !} | j j t ƒ | _ ‡  ‡ f d †  } ‡  ‡ f d †  } xL t d t	 d t	 ƒ t d t	 d d ƒ g D]  } | | | ƒ | | | ƒ qˆWt d d d t	 ƒ } | | | ƒ d d d g | d <| | | ƒ t d d d d ƒ } | | | ƒ t j t j g d d t ƒ| d <| | | ƒ d  S(   NRg   R@   RA   RB   i   i   i   i   i   i   i   i   i	   R3   R•   R¬   R#   i    c            sZ   t  j ˆ  ˆ d d | } t j | |  ƒ t  j ˆ  ˆ d d | } t j | |  ƒ d  S(   NRb   Rk   RN   (   R(   R   R[   R   (   R]   R«   RW   (   RN   RO   (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   check1   s    c            sZ   t  j ˆ  ˆ d d | } t j | |  ƒ t  j ˆ  ˆ d d | } t j | |  ƒ d  S(   NRb   RO   Rƒ   (   R(   R   R[   R   (   R]   R«   RW   (   RN   RO   (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   check2¦  s    RS   RT   Rd   Ra   (
   R(   R
   R   R   R   R-   RH   t   astypet   dictR)   (   RP   t   exp_outR¯   R±   R²   R«   (    (   RN   RO   sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt$   test_merge_left_empty_right_notempty  s4    0)  #c      	      sm  t  j d d d g d d d g d d d	 g g d
 d d d g ƒ‰ t  j g  d
 d d d g ƒ‰ t  j i d d d g d 6d d d g d 6d d d	 g d 6t j t j g d d t ƒd 6t j t j g d d t ƒd 6t j t j g d d t ƒd 6d
 d d d d d d g ƒ‰ ˆ d d !‰ ˆ j j t ƒ ˆ _ ‡ ‡ f d †  ‰  ‡  ‡ ‡ ‡ ‡ ‡ f d †  ‰ d  S(   Ni   i   i   i   i   i   i   i   i	   Rg   R@   RA   RB   R3   R•   R¬   R#   i    c            sZ   t  j ˆ  ˆ d d | } t j | |  ƒ t  j ˆ  ˆ d d | } t j | |  ƒ d  S(   NRb   Rk   RO   (   R(   R   R[   R   (   R]   R«   RW   (   RN   RO   (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR±   Ì  s    c            sÍ   t  j ˆ ˆ d d | } t j | |  ƒ t  j ˆ ˆ d d | } t j | |  ƒ xp t d t d t ƒ t d t d d ƒ t d d	 d t ƒ t d d	 d d ƒ g D]  } ˆ  ˆ | ƒ ˆ ˆ | ƒ q¥ Wd  S(
   NRb   RN   Rƒ   RS   RT   Rd   R3   Ra   R@   (   R(   R   R[   R   R´   R)   (   R]   R«   RW   (   R±   R²   R¯   Rµ   RN   RO   (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR²   Ò  s    (   R(   R
   R   R   R   R-   RH   R³   (   RP   (    (   R±   R²   R¯   Rµ   RN   RO   sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt$   test_merge_left_notempty_right_empty»  s    0  #c         C   sÅ   t  j i | d 6| d 6d d d g ƒ} | d  } t  j i t  j d | j d ƒ d 6t  j d | j d ƒ d 6t  j d | j d ƒ d 6d d d d g ƒ} | j | d d ƒ} t | | ƒ d  S(	   NRE   R?   Rg   i    R#   R„   R…   RZ   (   R(   R
   R   t   dtypesR   R   (   RP   R7   R8   RK   RU   RX   t   actual(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_empty_frameß  s    
	c         C   s«   t  j i | d 6| d 6d d d g ƒ} t  j i | d 6| d 6d d d g ƒ} t  j i | d 6| d 6| d 6d d d d g ƒ} | j | d d ƒ} t | | ƒ d  S(   NRE   R?   Rg   R„   R…   RZ   (   R(   R
   R   R   (   RP   R7   R9   t   df_leftt   df_rightRX   R¹   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_all_na_columnì  s    	
c         C   s­  d d l  m  } i t j j d d d d ƒd 6t j j d d d d ƒd 6| d d	 d
 ƒ | d d d ƒ | d d d ƒ | d d	 d
 ƒ | d d d ƒ | d d d ƒ | d d d ƒ | d d d	 ƒ | d d d ƒ | d d d ƒ g
 d 6} t j | ƒ } | j j ƒ  } | j ƒ  t j i | d 6t j j d ƒ d 6ƒ } | j	 | d d d t
 ƒ} t	 | | d d d t
 ƒ} t | | ƒ | j j ƒ  | j j ƒ  k j ƒ  s©t ‚ d  S(   Niÿÿÿÿ(   R   i    i
   t   sizet   var1t   var2iÜ  i   i   iÛ  i   i   iÚ  i   iØ  i   t   var3i   t   var8RZ   Rc   (   R   R   R   t   randintR
   t	   from_dictRÁ   t   uniqueRc   R   Re   R   R‰   Rz   (   RP   R   RC   RK   RÁ   t   newRW   R]   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_nosortý  s,    
c         C   sð  t  i d d g d 6d d g d 6ƒ } t  i d g d 6d g d 6ƒ } | j | d d d d ƒ} t  i i d	 d 6d d 6d 6i d d 6d d 6d 6i d d 6t j d 6d
 6i d	 d 6t j d 6d 6i d d 6d d 6d  6ƒ j d  ƒ j ƒ  d d d
 d g } t | | d t ƒt  i d d g d 6d d g d 6ƒ } t  i d g d 6d g d 6ƒ } | j | d d d d ƒ} t  i i d d 6d d 6d 6i d	 d 6t d 6d
 6i d d 6d d 6d 6i d d 6t d 6d 6ƒ d d d
 d g } t | | ƒ d  S(   Ni    i   t   i1t   i2t   i3RZ   t   rsuffixt   _g        t   i1_t   check_dtypeg      à?g      ø?gffffffæ?(	   R
   Rl   R   R   Rœ   R_   t   reset_indexR   Re   (   RP   R‘   RM   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_nan_right  s&    & 0& 0
c            s\   d t  f ‡  f d †  ƒ  Y‰  ˆ  |  j ƒ } | j |  j d d ƒ} t | ˆ  ƒ sX t ‚ d  S(   Nt   NotADataFramec              s   e  Z e ‡  f d  †  ƒ Z RS(   c            s   ˆ  S(   N(    (   RP   (   RÑ   (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   _constructor3  s    (   t   __name__t
   __module__t   propertyRÒ   (    (   RÑ   (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyRÑ   1  s   RZ   R;   (   R
   RK   R   RM   t
   isinstanceRz   (   RP   t   nadRW   (    (   RÑ   sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_type0  s    c   
   	   C   sÌ  d d  l  } d d l m } i | j  d d d d d ƒ d 6| j d d	 ƒ d
 6} t d t d ƒ ƒ } | j | d t ƒ} | j | d t ƒ} t i | j  d d d d d ƒ | j  d d d d d ƒ g d 6| j d d	 ƒ | j d d	 ƒ g d
 6ƒ } t | | ƒ t	 j
 d ƒ } t t | | g d d d g ƒƒ } t t | g d d g ƒƒ }	 | j |	 d d d d ƒ} t i t | | g d t d ƒ ƒd 6t | | g d t d ƒ ƒd 6ƒ } t | | ƒ d  S(   Niÿÿÿÿ(   R.   iÝ  i   i   i8   RC   i    iäW  t   tRg   R   t   ignore_indexi £áRH   t   At   BRË   t   rRb   RN   t   ABt   0t   0r(   R   t   pandasR.   t	   timedeltaR
   R   t   appendR)   R   R   t   timedelta64R   Rl   (
   RP   R   R.   RC   RK   RW   RX   t   tdt   lhst   rhs(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_join_append_timedeltas<  s$    5$%%c         C   s  t  j i d d g d 6ƒ } t  j d  d  g d d d g d d ƒ} xÃ d d d	 d
 d d d g D]¦ } | j | ƒ j d ƒ } | d j d k s– t ‚ | j | d d d t	 ƒ} t  j i d d g d 6t
 j d d g d d ƒd 6d d d g ƒ} t j | | ƒ q_ Wd  S(   Nie   if   t	   entity_idRH   R2   t   dayss   datetime64[D]s   datetime64[h]s   datetime64[m]s   datetime64[s]s   datetime64[ms]s   datetime64[us]s   datetime64[ns]Ra   RT   t   natR#   Rg   (   R(   R
   R   Rœ   R³   t   to_frameR#   Rz   R   R)   R   R   R[   R   (   RP   R‘   t   sR#   RM   RW   R]   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_other_datetime_unitW  s    '	t   unitt   DR¢   t   mRí   t   mst   ust   nsc         C   sö   t  j i d d g d 6ƒ } t  j d  d  g d d d g d d ƒ} d j | ƒ } | j | ƒ j d ƒ } | d j d k sƒ t ‚ | j	 | d	 d d
 t
 ƒ} t  j i d d g d 6t j d d g d | ƒd 6d d d g ƒ} t j | | ƒ d  S(   Nie   if   Ré   RH   R2   Rê   s   m8[{}]s   m8[ns]Ra   RT   Rë   R#   Rg   (   R(   R
   R   Rœ   R›   R³   Rì   R#   Rz   R   R)   R   R   R[   R   (   RP   Rï   R‘   Rí   R#   RM   RW   R]   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_other_timedelta_unitl  s    'c         C   sk  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ƒ } d d d g | _ d d d g | _ t  i d d d g d 6d d d g d 6d	 d
 d g d 6d d d g d 6d	 d
 d g d 6ƒ } d d d d d g | _ t t | | ƒ | ƒ d d d g | _ d } t j t d | ƒ t | | ƒ Wd  QXd  S(   Ni   i   i   RE   i   i   i   RF   i   i   i	   RG   R&   R~   t   v3t   v4R;   sF   Data columns not unique: Index\(\[u?'foo', u?'foo'\], dtype='object'\)Rn   (   R
   Rg   R   R   Ro   Rp   R   (   RP   RK   RM   RX   Rs   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt&   test_overlapping_columns_error_message~  s&    c      
   C   s:  t  j i t  j d d d d d ƒd 6d d g d 6ƒ } t  j i t  j d	 d d
 d d ƒd 6d d d
 g d 6ƒ } t i t  j d d d d d ƒd 6d d t j t j g d 6t j d d d
 g d 6ƒ } t  j | | d d d d ƒ} t | | ƒ t  j i d d g d 6t  j d d d d d ƒd 6ƒ } t  j i d d
 g d 6t  j d	 d d d d ƒd 6ƒ } t i d d d
 g d 6t t  j d d d d d ƒƒ t  j g d 6t  j g t t  j d	 d d d d ƒƒ d 6ƒ } t  j | | d d d d ƒ} t | | ƒ | d j	 d k st
 ‚ | d j	 d k s6t
 ‚ d  S(   Nt   20151010t   periodsi   R'   s
   US/EasternRE   i   R?   t   20151011i   i   R„   R…   RZ   Rb   Rƒ   s   datetime64[ns, US/Eastern](   R(   R
   t
   date_rangeR   R   R   R   R   R.   R#   Rz   (   RP   RN   RO   RX   RW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_on_datetime64tz—  s8    


c         C   s(  t  j d d ƒ } t  j i t  j d d | j ƒg d 6d g d 6t  j d d | j ƒg d 6d	 d d d g ƒ} | d
  } | j | d d ƒ} t  j i t  j d t ƒ d 6t  j d | ƒ d 6t  j d | ƒ d 6t  j d t ƒ d 6t  j d | ƒ d 6d	 d d d d d g ƒ} t j	 | | ƒ d  S(   NR'   t   UTCt   2018R   g      @R?   t   2019t   date2Rg   i    RZ   R#   R„   t   date2_xR…   t   date2_y(
   R(   t   DatetimeTZDtypeR
   R*   R'   R   R   R,   R[   R   (   RP   t   dtzRO   RN   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt    test_merge_on_datetime64tz_empty¹  s    %

	c      
   C   s*  t  j t  j d d d d d d d ƒd d	 g ƒ} d
 | d <t  j i t  j d d d g ƒ d	 6d d 6ƒ } | d	 j j d ƒ j j d ƒ | d	 <t  j | | d d d d	 ƒ} t  j i t  j d d d d d d d ƒd	 6d
 g d t j	 g d d 6t j	 g d d g d d 6ƒ } t
 | | ƒ d  S(   Ns   2017-10-29 01:00Rú   i   t   freqt   HR'   s   Europe/MadridRg   R   i   R?   s   2017-10-29 03:00:00s   2017-10-29 04:00:00s   2017-10-29 05:00:00i   Rþ   Rb   Rƒ   RZ   i   i   R„   R…   (   R(   R
   Rü   t   to_datetimeR   t   tz_localizet
   tz_convertR   R   R   R   (   RP   R‘   RM   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt+   test_merge_datetime64tz_with_dst_transitionË  s$    
		"c         C   sö   t  j d d d d d ƒ} t g  t t | ƒ ƒ D] } | ^ q1 d | d d g ƒ} t | | g ƒ } | j | d	 t d
 t 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-01Rú   i   R  t   MRH   Rg   t   pnumRS   RT   Rb   Rk   R#   i   iÿÿÿÿi   t   pnum_xt   pnum_y(   R(   t   period_rangeR
   t   rangeR   R   R   R)   R   R   t   arangeR$   t   repeatt   reshapet
   sort_indexRH   R[   R   (   RP   RH   R¨   RK   RM   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt"   test_merge_non_unique_period_indexã  s    (!9c         C   sF  t  j i t  j d d d d d ƒd 6d d g d 6ƒ } t  j i t  j d	 d d
 d d ƒd 6d d d
 g d 6ƒ } t i t  j d d d d d ƒd 6d d t j t j g d 6t j d d d
 g d 6ƒ } t  j | | d d d d ƒ} t | | ƒ t  j i d d g d 6t  j d d d d d ƒd 6ƒ } t  j i d d
 g d 6t  j d	 d d d d ƒd 6ƒ } t  j d d d d d ƒ} t  j d	 d d d d ƒ} t i d d d
 g d 6t | ƒ t  j g d 6t  j g t | ƒ d 6ƒ } t  j | | d d d d ƒ} t | | ƒ | d j	 d k s)t
 ‚ | d j	 d k sBt
 ‚ d  S(   NRù   Rú   i   R  Rð   RE   i   R?   Rû   i   i   R„   R…   RZ   Rb   Rƒ   s	   Period[D](   R(   R
   R  R   R   R   R   R   R.   R#   Rz   (   RP   RN   RO   RX   RW   t   exp_xt   exp_y(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_on_periodsï  s6    


c         C   sä  t  i d d g d 6d d g d 6d d g d 6ƒ } | j ƒ  } t  i d d d	 d
 d g d 6d d d	 d
 d g d 6d d d d d g d 6ƒ } | j ƒ  } t  i d d d d	 d
 d g d 6d d t j t j t j t j g d 6d d t j t j t j t j g d 6t j d d d	 d
 d g d 6t j d d d d d g d 6ƒ } t d d d d d d g d d d d g ƒ| d <| d d d d d d g } t | | d d d d d t ƒ} t | | ƒ | j | d d d d d t ƒ} t | | ƒ t | | ƒ t | | ƒ | } | j d i d d 6ƒ } t | | d d d d d d ƒ} t | | ƒ | j | d d d d d d ƒ} t | | ƒ d }	 t	 j
 t d |	 ƒ$ t | | d d d d d d ƒWd  QXt	 j
 t d |	 ƒ$ | j | d d d d d d ƒWd  QXt | | d d d d d t ƒ}
 |
 j d k j ƒ  s6t ‚ | j | d d d d d t ƒ}
 |
 j d k j ƒ  srt ‚ t | | d d d d d t ƒ} | j d k j ƒ  s®t ‚ | j | d d d d d t ƒ} | j d k j ƒ  sêt ‚ t | | d d d d d t ƒ} | j d k j ƒ  s&t ‚ | j | d d d d d t ƒ} | j d k j ƒ  sbt ‚ xÂ d d  d g D]± } t  i d d g d 6d d g | 6ƒ } d! j | ƒ }	 t	 j
 t d |	 ƒ$ t | | d d d d d t ƒWd  QXt	 j
 t d |	 ƒ$ | j | d d d d d t ƒWd  QXqrWt  i d d g d 6d d g d" 6ƒ } d# }	 t	 j
 t d |	 ƒ$ t | | d d d d d d" ƒWd  QXt	 j
 t d |	 ƒ$ | j | d d d d d d" ƒWd  QXt  i d d g d 6d d g d$ 6ƒ } t  i d d d	 g d 6d d% d& g d$ 6ƒ } t  i d d d d	 g d 6d d d% d& g d$ 6ƒ } t d d d d g d d d d g ƒ| d <t | | d d d$ g d d d t ƒ} t | | ƒ | j | d d d$ g d d d t ƒ} t | | ƒ d  S('   Ni    i   t   col1i   t   col_conflictR@   RA   t   col_lefti   i   i   t	   col_rightt   col_conflict_xt   col_conflict_yt	   left_onlyt   botht
   right_onlyt
   categoriest   _mergeRZ   Rb   Rƒ   t	   indicatorRg   t   custom_names<   indicator option can only accept boolean or string argumentsRn   RN   RO   Rk   t   _right_indicatort   _left_indicators‚   Cannot use `indicator=True` option when data contains a column named {}|Cannot use name of an existing column for indicator columnt   custom_column_names:   Cannot use name of an existing column for indicator columnt   col2R3   R•   (   R
   R‡   R   R   R   R   R)   R   t   renameRo   Rp   Rr   R%  R‰   Rz   R›   (   RP   R‘   t   df1_copyRM   t   df2_copyt	   df_resultt   testt   df_result_custom_namet   test_custom_nameRs   t   test2t   test3t   test4R¨   t   df_badcolumnt   df3t   df4t   hand_coded_resultt   test5(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_indicator  s¤     %%"	!!	%%!!!!!!&	)#&,c         C   s™  t  i d d d d g d 6d d d d g d 6d	 t d
 ƒ ƒ} t  i d d d d d g d 6d d d d d g d 6d	 t d ƒ ƒ} | j ƒ  } | j ƒ  } t | | d t d t d d ƒ} t | | ƒ 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 g d 6d	 t d
 ƒ d d d d d g ƒ} t | | d t d t d d ƒ} t | | ƒ t  i d d d d g d 6d d d d g d 6d d d d g d 6d	 t d
 ƒ ƒ} t | | d d d d ƒ} t | | ƒ t | | ƒ t | | ƒ t | | d 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 g d	 t d
 ƒ ƒ} | j d ƒ }	 t |	 | d t d d d d ƒ} t | | ƒ | j t j  i d g d 6d g d 6d	 d
 g ƒƒ }
 t | |
 d t d t d d ƒd } t	 j
 t d | ƒ$ t | |
 d t d t d d ƒWd  QXt	 j
 t d | ƒ t | |
 d d d d ƒWd  QX| j t j  i d g d 6d  g d 6d	 d! g ƒd" t ƒ} t | | d t d t d d# ƒd$ } t	 j
 t d | ƒ$ t | | d t d t d d ƒWd  QXt	 j
 t d | ƒ t | | d d d d ƒWd  QXt | |
 d d d d% ƒd& } t	 j
 t d | ƒ$ t | |
 d t d t d d# ƒWd  QXd' } t	 j
 t d | ƒ t | |
 d d d d ƒWd  QXd( } t	 j
 t d | ƒ t | | d d d d) ƒWd  QXt  i d d d d g d 6d* d+ d* d+ g d 6d d d d g d 6d	 t d
 ƒ ƒ} t  i d d d g d 6d* d+ d* g d 6d d d g d 6d	 t d! ƒ ƒ} t  i d d d g d 6d* d+ d* g d 6d d d g d 6d d d g d 6d	 t d! ƒ ƒ} d, } t	 j
 t d | ƒ t | | d d d d ƒWd  QXt | | d d d g d d ƒ} t | | ƒ d  S(-   NR@   RA   RB   RC   t   catt   dogt   weaselt   horseRH   i   RD   t   meowt   barks   um... weasel noise?t   nayt   chirpi   RS   RT   t   validates   1:1t   a_xt   a_yRg   t
   one_to_oneRZ   Rd   t   moot   one_to_manysB   Merge keys are not unique in right dataset; not a one-to-one mergeRn   t   cowi   Rc   t   many_to_onesA   Merge keys are not unique in left dataset; not a one-to-one merget   many_to_manysC   Merge keys are not unique in right dataset; not a many-to-one mergesB   Merge keys are not unique in left dataset; not a one-to-many merges!   Not a valid argument for validatet	   jibberishi    i   sQ   Merge keys are not unique in either left or right dataset; not a one-to-one merge(   R
   R  R‡   R   R)   R   R_   Rã   R(   Ro   Rp   R   Rr   (   RP   RN   RO   t	   left_copyt
   right_copyRW   RX   t
   expected_2t
   expected_3t   left_index_resett   right_w_dupsRs   t   left_w_dupst   expected_multi(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_validation  s¾    						&&!c      
   C   sT   t  j i g  d 6g  d 6g  d 6ƒ } t j d d ƒ  t | | d d ƒWd  QXd  S(   NR@   RA   RB   t   dividet   raiseRZ   (   R@   RA   (   R(   R
   R   t   errstateR   (   RP   R@   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt)   test_merge_two_empty_df_no_division_error  s    $Rb   RN   Rƒ   t   reasons   GH-24897c      	   C   s:  t  j d d g d d g d d g d d g g d d d	 g ƒ} t  j d d
 g d d g g d d d g ƒ} | j d d t d t ƒ| j d d t ƒt  j | | d t d d d | ƒ} t  j d d t j g d d t j g d d d g d d d g g d d d	 d g ƒ} | j d d t d t ƒt | | ƒ d  S(   Ni   i   i   i   i   i   Rg   R@   RA   i   i(   RB   t   dropt   inplaceRS   Rd   Rb   g      >@g      D@(	   R(   R
   R_   Re   R)   R   R   R   R   (   RP   Rb   R‘   RM   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt$   test_merge_on_index_with_more_values  s    0$c      	   C   sì   t  j i d d d g d 6d d d g d 6ƒ } t  j i d d d g d 6ƒ } t  j i d d d d  g d 6d d d d g d 6d d d d g d 6d d d d g d	 d d d d g ƒ} | j | d
 d d t d d ƒ} t j | | ƒ d  S(   Ni   i   i   R@   i    RE   RA   Rg   RH   Ra   RT   Rb   RO   (   R(   R
   Rœ   R   R)   R[   R   (   RP   RN   RO   RX   RW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_right_index_right#  s    /	(1   RÓ   RÔ   RR   RY   R^   R`   Rj   Rm   Rt   Ru   R}   R†   RŠ   R‹   RŽ   R’   R”   Rž   R§   R©   Rª   Ro   t   markt   parametrizeR´   R)   R°   R¶   R·   Rº   R½   RÇ   RÐ   RØ   Rè   Rî   Rõ   Rø   Rý   R  R  R  R  R;  RV  RZ  t   xfailR^  R_  (    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR:   Z   s\   																			
	
$	,	$							3		"				 	r	‡	!c         C   s|   xu d d d g D]d } |  j  | d | ƒ} t |  j ƒ  | j ƒ  d | d t ƒ} | j d ƒ } t | | d t ƒq Wd  S(   NRk   RN   Rƒ   Rb   Rc   RH   t   check_names(   Rl   R   RÏ   R)   R_   R   Re   (   R3   R•   Rb   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR£   4  s    	t   TestMergeDtypesc           B   s’  e  Z e j j d  d d g e d d g ƒ j d ƒ g ƒ d „  ƒ Z e j j d e j	 e j
 e j e j e j g ƒ e j j d e j	 e j e j e j g ƒ d „  ƒ ƒ Z e j j d d	 d
 d g d d d g i d	 d
 d g d 6d d d g d 6f d	 d
 d g d d g i d	 d g d 6d d g d 6f d	 d
 g d d d g i d	 d
 g d 6d d g d 6f g ƒ d „  ƒ Z d „  Z d „  Z e j j d d d	 d
 g e d d d g ƒ j d ƒ f d d d g e d d d g ƒ j d ƒ f d d	 g e j e e g d e ƒf d d	 g e j e e g d e ƒf g ƒ d „  ƒ Z e j j d e d	 d
 g d d ƒd d d g f e d	 d
 g d d ƒd d d g f d d	 d
 g d d d  g f d d d g d d d  g f d d	 d
 g d! d" d# g f e j d$ d% d
 d& d' ƒd( d) g f e j d$ d% d
 d& d' ƒd d	 g f e j d$ d% d
 d& d' ƒd d g f e j d* d% d ƒe j d* d% d d+ d, ƒf g	 ƒ d- „  ƒ Z RS(.   t
   right_valsR&   R~   t   categoryc         C   sÈ   t  i d d g d 6t d d g ƒ j d ƒ d 6d d g d 6d	 d
 g d 6t d d g d d ƒd 6t d d g d d ƒd 6ƒ } t  i | d 6ƒ } t j | | d d ƒ} t | j j ƒ sÄ t ‚ d  S(   NR&   R~   RÛ   Rf  RÜ   i   i   t   Cg      ð?g       @Rð   R#   t   uint64t   Et   int32t   FRZ   (	   R
   R   R³   R(   R   R   RÛ   R#   Rz   (   RP   Re  RN   RO   RW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_differentB  s    t   d1t   d2c   
      C   sÝ  t  j | ƒ } t  j | ƒ } t i t  j d d d g d d | ƒd 6d d g d	 d
 6t  j t  j d ƒ d t  j ƒd 6ƒ } t j d d g ƒ } t i t  j d d g d | ƒd 6d | ƒ} | j | d d d
 g ƒ} | j	 ƒ  }	 | j
 d k rt  j d ƒ } n  t  j t  j d | ƒ|	 d <d |	 j |	 j d k |	 j d k @d f <d |	 j |	 j d k |	 j d k @d f <t j | |	 ƒ | j | d d d
 g d t ƒ} |	 j d d
 g d d d t ƒt j | |	 ƒ d  S(   Ni    i   i   i   R#   t   k1R&   R~   i   t   k2i   t   vi   i   RG   RH   RZ   R¨   t   float64Rc   t   kindt	   mergesortR]  (   i   R~   (   i   R&   (   R   R#   R
   R   R  R$   R   t   from_tuplesRl   R‡   Rs  R   Rf   Ro  Rp  R[   R   R)   t   sort_values(
   RP   Rm  Rn  t   dtype1t   dtype2RN   RH   RO   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_join_multi_dtypesV  s$    )(.))!s   int_vals, float_vals, exp_valsi   i   i   g      ð?g       @g      @t   Xt   Yc         C   s   t  i | d 6ƒ } t  i | d 6ƒ } t  | ƒ } | j | d d d d ƒ} t | | ƒ | j | d d d d ƒ} t | | d d g ƒ d  S(   NRz  R{  Ra   Rd   (   R
   R   R   (   RP   t   int_valst
   float_valst   exp_valsRÛ   RÜ   RX   RW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_on_ints_floatsv  s    	c         C   sL  t  i d d d g d 6ƒ } t  i d d d g d 6ƒ } t  i d g d 6d g d 6ƒ } t j t ƒ - | j | d	 d d
 d ƒ} t | | ƒ Wd  QXt j t ƒ 7 | j | d	 d d
 d ƒ} t | | d d g ƒ Wd  QXt  i t j t j d g d 6ƒ } t j d  ƒ 7 | j | d	 d d
 d ƒ} t | | d d g ƒ Wd  QXd  S(   Ni   i   i   Rz  gš™™™™™ñ?g      @g      @R{  Ra   Rd   (	   R
   R[   t   assert_produces_warningt   UserWarningR   R   R   R   Rœ   (   RP   RÛ   RÜ   RX   RW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt!   test_merge_on_ints_floats_warning‰  s     "c         C   sX  t  i t t t g d t ƒd 6ƒ } t  i t t g d 6ƒ } t  i t t g d 6d t ƒ} t j | | d d ƒ} t | | ƒ t j | | d d ƒ} t | | ƒ t  i t t t t j	 g d t ƒd 6ƒ } t  i t t g d 6ƒ } t  i t t g d 6d t ƒ} t j | | d d ƒ} t | | ƒ t j | | d d ƒ} t | | ƒ d  S(   NR#   RE   RZ   (
   R
   R   R)   Re   R-   R(   R   R   R   R   (   RP   R‘   RM   RX   RW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt(   test_merge_incompat_infer_boolean_object¡  s    %+s   df1_vals, df2_valsi    R@   RA   g        R#   c         C   s   t  i | d 6ƒ } t  i | d 6ƒ } t j | | d d g ƒ} t | j j ƒ sY t ‚ t j | | d d g ƒ} t | j j ƒ sŒ t ‚ d  S(   NRÛ   RZ   (   R
   R(   R   R   RÛ   R#   Rz   (   RP   t   df1_valst   df2_valsR‘   RM   RW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt!   test_merge_incompat_dtypes_are_ok¶  s    Rh  RB   Rj  Rß   t   1t   2u   0u   1u   2s   1/1/2011Rú   R  Rð   s
   2011-01-01s
   2011-01-02t   20130101R'   s
   US/Easternc      
   C   sþ   t  i | d 6ƒ } t  i | d 6ƒ } d j d | d j d | d j ƒ } t j | ƒ } t j t d | ƒ t j	 | | d d g ƒWd  QXd j d | d j d | d j ƒ } t j | ƒ } t j t d | ƒ t j	 | | d d g ƒWd  QXd  S(   NRÛ   sm   You are trying to merge on {lk_dtype} and {rk_dtype} columns. If you wish to proceed you should use pd.concatt   lk_dtypet   rk_dtypeRn   RZ   (
   R
   R›   R#   t   ret   escapeRo   Rp   Rr   R(   R   (   RP   R„  R…  R‘   RM   Rs   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt    test_merge_incompat_dtypes_errorÍ  s    		(   RÓ   RÔ   Ro   R`  Ra  R   R³   Rl  R   R$   Rj  t   int16t   int8t   uint8Rr  t   float32t   float16Ry  R  R‚  Rƒ  R(   Re   R)   R-   t   boolR†  Rü   RŽ  (    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyRd  @  s<   	*!>5G		**$6$$	$$c           C   sv   t  j j d ƒ t i t t  j j d d g d d ƒƒ j t d d g ƒ ƒ d 6t  j j d d d	 g d d ƒd
 6ƒ S(   NiÒ  R&   R~   R¾   i
   Rz  t   onet   twot   threeR{  (   i
   (   i
   (   R   R   t   seedR
   R   t   choiceR³   t   CDT(    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyRN   ö  s    "c           C   sO   t  j j d ƒ t i t d d g ƒ j t d d g ƒ ƒ d 6d d g d 6ƒ S(   NiÒ  R&   R~   Rz  i   i   t   Z(   R   R   R˜  R
   R   R³   Rš  (    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyRO      s    +t   TestMergeCategoricalc        	   B   s%  e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z e j j	 d d „  d „  d „  g ƒ d	 „  ƒ Z
 d
 „  Z d „  Z e j j	 d e e g ƒ e j j	 d e e e e g e e g e e g f d d d d g d d g d d g f d d d d g d d g d d g f g ƒ d „  ƒ ƒ Z d „  Z RS(   c         C   sq   t  j | | d d ƒ} | j j ƒ  } t t ƒ  t j d ƒ t j d ƒ g d d d d g ƒ} t | | ƒ d  S(   NRZ   Rz  t   ORH   t   Y_xt   Y_y(	   R(   R   R¸   R  R   R   R   R#   R   (   RP   RN   R{   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_identical
  s    	c         C   sq   t  j | | d d ƒ} | j j ƒ  } t t ƒ  t j d ƒ t j d ƒ g d d d d g ƒ} t | | ƒ d  S(   NRZ   Rz  R  R$   RH   R{  R›  (	   R(   R   R¸   R  R   R   R   R#   R   (   RP   RN   RO   R{   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt
   test_basic  s    	c      	   C   s<  t  i i d d 6d d 6d d 6d d 6d	 d
 6d 6i d d 6d d 6d d 6d d 6d d
 6d 6ƒ } t  i i d d 6d d 6d d 6d d 6d d
 6d 6i d d 6d d 6d d 6d d 6d d
 6d 6ƒ } t j | | d d d d d d ƒ} | j ƒ  } | j ƒ  } | d j d ƒ | d <t j | | d d d d d d ƒ} | d j t d g ƒ ƒ | d <t j | | ƒ | j ƒ  } | d j d ƒ | d <t j | | d d d d d d ƒ} t j | | ƒ | j ƒ  } | d j d ƒ | d <| j ƒ  } | d j d ƒ | d <t j | | d d d d d d ƒ} t j | | ƒ d  S(   NR@   i    RA   i   RB   i   RC   i   RD   i   t   nullR    R¡   Rb   RN   Ra   Rd   Rf  (   R
   R(   R   R‡   R³   R   R[   R   (   RP   RO   RN   RK   RX   t   crightRW   t   cleft(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_categorical  sJ    

$$ $$c         C   só   t  i t d d d g d d d d g ƒd 6d d d g d	 6ƒ } t  i t d d d g d d d d g ƒd 6d
 d d g d 6ƒ } t j | | d d g ƒ} t  i t j d d d g ƒ d 6d d d g d	 6d d d
 g d 6ƒ } t | | ƒ d  S(   NRÛ   RÜ   Rg  R$  t   Foot   A0t   B0t   C0t   Leftt   C1t   B1t   A1t   RightRZ   (   R
   R   R(   R   R   (   RP   R‘   RM   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt'   tests_merge_categorical_unordered_equalR  s    %%c         C   sË   | j  d | j j d ƒ ƒ } t j | | d d ƒ} | j j ƒ  } t t ƒ  t	 j
 d ƒ t ƒ  g d d d d g ƒ} t | | ƒ | j j j | j j ƒ s¦ t ‚ | j j j | j j ƒ sÇ t ‚ d  S(   NR›  Rf  RZ   Rz  R  RH   R{  (   t   assignR›  R³   R(   R   R¸   R  R   R   R   R#   R   Rz  t   valuest   is_dtype_equalRz   (   RP   RN   RO   R{   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_other_columnse  s    	!t   changec         C   s   |  S(   N(    (   R3   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR4   v  s    c         C   s   |  j  t d d d g ƒ ƒ S(   NR&   R~   t   bah(   R³   Rš  (   R3   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR4   w  s    c         C   s   |  j  t d t ƒ ƒ S(   Nt   ordered(   R³   Rš  R)   (   R3   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR4   x  s    c   	      C   s¿   | | j  j d ƒ ƒ } | j d | ƒ } t | j  j ƒ sB t ‚ t j | | d d d | ƒ} | j j	 ƒ  } t
 t j d ƒ t j d ƒ t j d ƒ g d d d d	 g ƒ} t | | ƒ d  S(
   NR-   Rz  RZ   Rb   R  R$   RH   R{  R›  (   Rz  R³   R°  R   R±  Rz   R(   R   R¸   R  R   R   R#   R   (	   RP   R´  R®   RN   RO   Rz  R{   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_dtype_on_merged_differentu  s    c         C   s-  d } t  j i d d d d d d d d	 d
 d g
 | d 6d d d d d g d | d 6g  d d d d d g D]$ } | g d | D] } | ^ q ql d 6g  d d d d d d d d d d  g
 D]  } | g | D] } | ^ qÍ q¼ d 6ƒ } | j d! „  ƒ } t  j | | d" t | j ƒ ƒ} t | | ƒ d  S(#   Ni   R@   RA   RB   RC   RD   R    R¡   R¢   R¨   t   jRÙ   t   wR3   R•   R¬   i   Rñ   R   t   ut   pt   ot   aat   bbt   cct   ddt   eet   fft   ggt   hht   iit   jjc         S   s   |  j  d ƒ S(   NRf  (   R³   (   R3   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR4   ›  s    RZ   (   R(   R
   t   applyR   R   Rg   R   (   RP   Rñ   t   eacht   letterRK   RW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt"   test_self_join_multiple_categories‹  s    	)%'!c         C   s®  t  j t d d d ƒ d g t d d d ƒ d g g d d d g ƒ} | d j d	 ƒ | d <t  j t d d d ƒ d g t d d d
 ƒ d g g d d d g ƒ} | d j d	 ƒ | d <t  j t  j d ƒ d d g t  j d ƒ d t j g t  j d ƒ t j d g g d d d d g ƒ} t  j | | d d d d g ƒ} t | | ƒ t  j t  j d ƒ d d g g d d d d g ƒ} t  j | | d d d d g ƒ} t | | ƒ d  S(   NiÑ  i   gš™™™™™ñ?i   gÍÌÌÌÌÌô?Rg   R   t   num2Rf  i   gffffffö?t   num4s
   2001-01-01s
   2001-01-02s
   2001-01-03Rb   Rƒ   RZ   Rk   (	   R(   R
   R   R³   R*   R   R   R   R   (   RP   RK   RM   t   expected_outert   result_outert   expected_innert   result_inner(    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_dtype_on_categorical_dates¢  s,    !!R¶  s.   category_column,categories,expected_categoriesi   i   Re   R)   c   	      C   sè   t  j i d d d d g d 6| d 6ƒ } | d j t | d | ƒƒ | d <t  j i d d g d 6d d g d	 6ƒ } | j | ƒ } t  j i d d g d 6| d 6d d g d	 6ƒ } | d j t | d | ƒƒ | d <t | | ƒ d  S(
   Ni   i   i   i   t   idR<  R¶  i	   t   num(   R(   R
   R³   Rš  R   R   (	   RP   t   category_columnR$  t   expected_categoriesR¶  R‘   RM   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt/   test_merging_with_bool_or_int_cateorical_columnÄ  s    #)
c         C   s    t  j i t  j d d t j g d d ƒd 6d d 6ƒ } t  j | | d d ƒ} t  j i t  j d d t j g d d ƒd 6d d 6d d	 6ƒ } t | | ƒ d  S(
   Ni   i   R#   R%   RÛ   RÜ   RZ   t   B_xt   B_y(   R(   R
   R   R   R   R   R   (   RP   RK   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_on_int_arrayÜ  s    ++(   RÓ   RÔ   R   R¡  R¥  R¯  R³  Ro   R`  Ra  R·  RÊ  RÑ  R)   Re   RÖ  RÙ  (    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyRœ    s&   	
		3						"$*c           C   s)   t  i d d d g d 6d d d d g ƒS(   Ni   i
   i    R@   RH   i   i   (   R
   (    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   left_dfç  s    c           C   s)   t  i d d d g d 6d d d d g ƒS(	   Ni,  id   iÈ   RA   RH   i   i   i   (   R
   (    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   right_dfì  s    t   TestMergeOnIndexesc           B   sF  e  Z e j j d  d e e i d d g d 6d d g d 6d d	 d
 g ƒf d e e i d d g d 6d d g d 6d d
 d	 g ƒf d e e i d d d g d 6d d e j	 g d 6d d	 d
 d g ƒf d e e i d d d g d 6e j	 d d g d 6d d d
 d	 g ƒf d e e i e j	 d d g d 6d d d g d 6d d d
 d	 g ƒf d e e i d d e j	 g d 6d d d g d 6d d
 d	 d g ƒf d e e i d d d e j	 g d 6e j	 d d d g d 6d d d
 d	 d g ƒf d e e i d d d e j	 g d 6e j	 d d d g d 6d d d
 d	 d g ƒf g ƒ d „  ƒ Z
 RS(   s   how, sort, expectedRk   i   i
   R@   iÈ   id   RA   RH   i   i   RN   i    RO   i,  i   Rƒ   c         C   s>   t  j | | d t d t d | d | ƒ} t j | | ƒ d  S(   NRS   RT   Rb   Rc   (   R(   R   R)   R[   R   (   RP   RÚ  RÛ  Rb   Rc   RX   RW   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_on_indexesó  s    	(   RÓ   RÔ   Ro   R`  Ra  Re   R
   R)   R   R   RÝ  (    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyRÜ  ñ  s4   	""RH   RÛ   RÜ   R$  R2   t	   index_colg      ð?g       @i   i   t   starti    t   stops
   2018-01-01s
   2018-01-02c         C   s   t  |  ƒ j S(   N(   t   typeRÓ   (   R3   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyR4     s    c         C   s   t  i d d g d 6d |  ƒ} t  i d d g d 6d |  ƒ} | j | d d	 g ƒ} t  t d d d g f d d d g f g ƒ d |  ƒ} t | | ƒ d  S(
   Ni   i   t	   left_dataRH   g      ð?g       @t
   right_dataRZ   RÞ  (   R
   R   R    R   (   RH   RN   RO   RW   RX   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_index_types  s    *	s-   on,left_on,right_on,left_index,right_index,nmRƒ   Rk   c         C   sž  t  j i d d d d g d 6d t  j j d d g d	 d g g d
 d d g ƒƒ} t  j d d d d g d t  j j d d g d d g g d
 d d g ƒd | ƒ} t  j i d d g d 6d d g d 6d t  j j d d g d g g d
 d d g ƒƒ} | d  k	 rHt  j | | d |  d | d | d | d | ƒ}	 t j |	 | ƒ nR d }
 t	 j
 t d |
 ƒ5 t  j | | d |  d | d | d | d | ƒ}	 Wd  QXd  S(   Ni   i   i   i   RÛ   RH   R@   RA   i    t   namesRƒ   Rk   R2   RÜ   RZ   Ra   Rd   RS   RT   s$   Cannot merge a Series without a nameRn   (   R(   R
   R   t   from_productR   Rœ   R   R[   R   Ro   Rp   Rr   (   RZ   Ra   Rd   RS   RT   t   nmR@   RA   RX   RW   Rs   (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   test_merge_series-  s"    !!&!!(D   t   collectionsR    R   R   R   RŒ  t   numpyR   R   Ro   t   pandas.compatR   t   pandas.core.dtypes.commonR   R   t   pandas.core.dtypes.dtypesR   Rá   R(   R   R	   R
   R   R   R   R   R   R   R   t   pandas.api.typesRš  t   pandas.core.reshape.concatR   t   pandas.core.reshape.mergeR   R   t   pandas.util.testingt   utilt   testingR[   R   R   RJ   RL   R"   R+   R/   t   fixtureR7   R8   R9   R-   R:   R£   Rd  RN   RO   Rœ  RÚ  RÛ  RÜ  R`  Ra  Rä  Rœ   Re   R)   Rè  (    (    (    sD   lib/python2.7/site-packages/pandas/tests/reshape/merge/test_merge.pyt   <module>   sl   F			'	'	'	ÿ ÿ ÿ Ý	¶
ß%	!