ó
šxŠ\c        
   @  sâ  d  d l  m Z d  d l m Z d  d l Z d  d l 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 d  d l j j Z d  d l m Z m Z m Z d „  Z d „  Z d	 „  Z d
 „  Z e j j e d d d e ƒe j j d e  e 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 „  Z0 d „  Z1 d  „  Z2 d! „  Z3 d" „  Z4 d# „  Z5 d$ „  Z6 e j j d% e  e	 j d& e	 j j7 e	 j d' d' d( g d) d* ƒd' d( d( g g d+ d, d- g ƒd. d' d( d/ g d0 d1 ƒ f e e	 j i e	 j d' d' d( g d) d* ƒd, 6d' d( d( g d- 6d' d( d/ g d1 6ƒ f g ƒ d2 „  ƒ Z8 e j j d3 d e j: e	 j; g ƒ d4 „  ƒ Z< d S(5   iÿÿÿÿ(   t   print_function(   t   datetimeN(   t   PY37(   t   Categoricalt   CategoricalIndext	   DataFramet   Indext
   MultiIndext   Seriest   qcut(   t   assert_equalt   assert_frame_equalt   assert_series_equalc         C  s=   d „  } t  j j t | | ƒ d | ƒ} |  j | ƒ j ƒ  S(   sm    Reindex to a cartesian production for the groupers,
    preserving the nature (Categorical) of each grouper c         S  sR   t  |  t t f ƒ rN |  j } t j t j t | ƒ ƒ d | d |  j ƒ}  n  |  S(   Nt
   categoriest   ordered(	   t
   isinstanceR   R   R   t
   from_codest   npt   aranget   lenR   (   t   aR   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   f   s    	t   names(   t   pdR   t   from_productt   mapt   reindext
   sort_index(   t   resultt   argsR   R   t   index(    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   cartesian_product_for_groupers   s    	!c         C  s\   t  |  j d ƒ } d „  } |  j | d t ƒj j | ƒ } | j j d d k sX t ‚ d  S(   Ni   c         S  s8   i |  j  ƒ  d 6|  j ƒ  d 6|  j ƒ  d 6|  j ƒ  d 6S(   Nt   mint   maxt   countt   mean(   R    R!   R"   R#   (   t   group(    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt	   get_stats&   s    t   observedi    t   C(	   R	   R'   t   groupbyt   Falset   Dt   applyR   R   t   AssertionError(   t   dft   catsR%   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_apply_use_categorical_name#   s    	!c          C  s{  t  d d d d d d d d d g	 d d d d d g d t ƒ}  t i d d d d d d d	 d
 d g	 d 6|  d 6ƒ } t t d ƒ d d d t ƒ} t i d d d
 t j g d 6d | ƒ} | j d d t ƒj	 ƒ  } t
 j | | ƒ t  d d d d g d d d d g d t ƒ} t  d d d d g d d d d g d t ƒ} t i | d 6| d 6d d d	 d
 g d 6ƒ } | j d d t ƒ} t d d d g d d d t ƒ}	 t i t d	 d d g d |	 ƒd 6ƒ } | j ƒ  } t
 j | | ƒ t d d g d d g d d g g d d d g ƒ}
 t  |
 j ƒ |
 d <|
 j d g d t ƒ} | j d „  ƒ } t
 j | |
 d g ƒ |
 j d ƒ } |
 j d d g } t
 j | | ƒ d „  } | j | ƒ } |
 j d d g j ƒ  } t d d g d d ƒ| _ | d j d ƒ | d <t
 j | | ƒ t i d d d  g d 6ƒ } t j | j d! d d" d# d$ d% g ƒ} | j j | d t ƒj t ƒ } t
 j | | d ƒ t
 j | j j | d t ƒj d& „  ƒ | d ƒ t
 j | j | d t ƒj t ƒ | d g ƒ t
 j | j | d t ƒj d' „  ƒ | d g ƒ t
 j | j j | d t ƒj t j ƒ | d ƒ t
 j | j | d t ƒj t j ƒ | ƒ t i d d d  d( g d 6ƒ } t j | j d! d) d d" d# d$ d% g ƒ} | j j | d t ƒj t ƒ } t
 j | | d ƒ t
 j | j j | d t ƒj d* „  ƒ | d ƒ t
 j | j | d t ƒj t ƒ | d g ƒ t
 j | j | d t ƒj d+ „  ƒ | d g ƒ t i d d d d g d 6ƒ } t j | j d d d d	 d
 g d, t  t d ƒ ƒ ƒ} | j | d t ƒj t ƒ } t | j j d | j j  ƒ} t d d d d g d | ƒ} d | j _! t
 j | | ƒ d- d. d/ d0 g } t j" j# d d
 d1 d2 ƒ} t  j$ | | d t ƒ}  t t j" j% d2 d
 ƒ ƒ } | j |  d t ƒj	 ƒ  } | j t j& |  ƒ d t ƒj	 ƒ  } t | d |  j d t ƒ}	 | j' |	 ƒ } t | | ƒ | j |  d t ƒ} | j( ƒ  } |  j) j* ƒ  } t j& |  ƒ j+ | ƒ } | j+ | ƒ } t  | d t d d- d. d/ d0 g ƒ} | j | d3 t d t ƒj( ƒ  } t | | ƒ t  j$ t j, d
 ƒ j- d4 ƒ | d t ƒ} t | ƒ } t
 j. | j/ ƒ  j j0 d ƒ | ƒ t d5 d6 d7 d8 d9 d: d; d< g d
 ƒ } t
 j. | j/ ƒ  j j0 d ƒ | ƒ d  S(=   NR   t   bt   cR   t   dR   i   i   i   i   i   t   abcdt   nameR   R&   t   zt   yt   At   Bt   valuesi   i    s   John P. Does	   Jane Dovet   columnst	   person_idt   person_namec         S  s   |  S(   N(    (   t   x(    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   <lambda>O   s    c         S  s   |  j  d ƒ j d S(   NR<   i    (   t   drop_duplicatest   iloc(   R=   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyR   V   s    t   objecti   i   t   binsi
   i   i   i(   c         S  s   t  j |  ƒ S(   N(   R   t   sum(   t   xs(    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyR>   h   s    c         S  s   t  j |  ƒ S(   N(   R   R!   (   RD   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyR>   n   s    iûÿÿÿiöÿÿÿc         S  s   t  j |  ƒ S(   N(   R   RC   (   RD   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyR>      s    c         S  s   t  j |  ƒ S(   N(   R   RC   (   RD   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyR>   ‡   s    t   labelst   foot   bart   bazt   quxt   sizeid   t   sorti   R"   R#   t   stdR    s   25%s   50%s   75%R!   (1   R   t   TrueR   R   t   listR   t   nanR(   R)   R#   t   tmR   R   RC   R<   t	   transformR?   R@   R+   t   copyR   R   t   astypeR   t   cutR   R   t   filtert   allR   R9   R   R   R4   t   randomt   randintR   t   randnt   asarrayR   t   describet   codest   argsortt   takeR   t   repeatt   assert_index_equalt   stackt   get_level_values(   R.   t   datat	   exp_indext   expectedR   t   cat1t   cat2R-   t   gbt   exp_idxR=   t   gR   R1   t   levelsR\   t   groupedt   desc_resultt   idxt
   ord_labelst   ord_datat   exp_catst   expct   exp(    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt
   test_basic0   sÌ    $5(-!(	'!!!*!!6$	c         C  s#  t  d t j d d d ƒ d t d t j d d g ƒ t d ƒ g d	 d
 g d d g d t d ƒ g d d d g ƒ ƒ } | j d d g d |  ƒ } t  d t j d d d ƒ d t j d t j d d g ƒ t d ƒ g d	 d
 g d t d ƒ g d d d g ƒ ƒ } | j d ƒ } t	 | | ƒ d  S(   NRc   i   i   R   Rk   R   R0   i
   R\   i    i   i   R   t   Index1t   Index2t   levelR&   i   (
   R   R   R   R   R   R   t   rangeR(   t	   get_groupR   (   R&   R-   Rj   Re   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_level_get_group¿   s    !$t   reasons   flaky on 3.7, xref gh-21636t   strictR   c   	      C  sŽ  t  t d ƒ d |  ƒ} t  t d ƒ d d d g d |  ƒ} t j t | ƒ ƒ } t i | d 6| d 6| d	 6ƒ } | j d d g d
 t ƒ} t j	 | | g d d d g ƒ} t d d d g d | d d	 g ƒ} | j
 d „  ƒ } t | | ƒ | j d ƒ } | j ƒ  } t | | ƒ | j t j ƒ } t | | ƒ t j	 | | g d d d g ƒ} t d d | ƒ} | j
 d „  ƒ } t | | ƒ d  S(   Nt   abcR   t   aaaR   R   R0   t   missingt   denseR9   R&   R   i    i   g       @R   R:   c         S  s   t  j |  ƒ S(   N(   R   R#   (   R=   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyR>   ë   s    t   intc         S  s   d S(   Ni   (    (   R=   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyR>   ú   s    (   R   RN   R   R   R   R   R(   RM   R   t   from_arraysR+   R   RS   R#   t   aggR   R   (	   R   R€   R   R9   R-   Rl   Rn   Re   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt
   test_applyÔ   s2    !c         C  s¢  t  d d d d g d d d d g d t ƒ} t  d d d d g d d d d g d t ƒ} t i | d	 6| d
 6d d d d g d 6ƒ } d d g d | d <| j d	 d
 d g d |  ƒ} t j j | | d d g d g d d	 d
 d g ƒ} t i t d d d d g d | ƒd 6ƒ j ƒ  } | j	 ƒ  } |  sZt
 | | | d d g g t d ƒ ƒ } n  t j | | ƒ | j d	 d
 g d |  ƒ} t j j | | g d d	 d
 g ƒ} t i d d d d g d 6d | ƒ} | j	 ƒ  } |  st
 | | | g t d ƒ ƒ } n  t j | | ƒ i t j  d d d d g d d d d g d t ƒd 6d d d d g d 6d d d d g d 6} t j | ƒ } | j d d |  ƒ}	 |	 j ƒ  } t j t d ƒ d  d d t d! ƒ d t ƒ} t i d" d" g d 6d# d g d 6d | ƒ} |  s<t j t d! ƒ d  d d t d! ƒ d t ƒ}
 | j |
 ƒ } n  t j | | ƒ | j d d g d |  ƒ} | j d$ ƒ } t i d d d d g d 6t j  d d d d g d d d d g d t ƒd 6d d d d g d 6ƒ j d d g ƒ } |  st
 | | j j d d g g d d g ƒ } n  t j | | ƒ xb d. d/ d0 d1 g D]N } | \ } } | j | ƒ } | | j | k | j | k @} t | | ƒ q>Wi d d% d d% d d d g d 6d d d d d& d' d( g d 6d d d) d d d d g d* 6} t j | ƒ } t j | d t j d+ d d ƒ ƒ } | | d, <| j d, d* g d- t d |  ƒ} | j d$ ƒ } | j d, d* g d- t d |  ƒ} | j d$ ƒ j ƒ  } t j | | ƒ d  S(2   NR   R0   R   R5   R   R1   R2   R6   R7   R8   i   i   i   i   R9   RF   RG   R'   R&   R   R   t   ABCt   ABt   catt   intsi
   i   i   i(   t   valt   abR4   R}   g      ø?g      4@R#   i   i2   i<   iF   t   eRH   i    Rx   t   as_index(   R   i   (   R0   i   (   R0   i   (   R   i   (   R   RM   R   R(   R   R   R‚   R   R   RC   R   RN   RP   R   R#   R   R   Rƒ   t	   set_indexR‡   R9   Ry   Rˆ   RT   R   t   linspaceR)   t   reset_index(   R&   Rf   Rg   R-   Rh   Rd   Re   R   R2   t   groups_single_keyR   t   groups_double_keyt   keyR1   t   iR‡   t   groupst   groups2(    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_observedþ   s     -		(			'
	#		
( ;%
!!c         C  sR  i d d d d g d 6d d d d g d 6d d	 d
 d g d 6} t  j | ƒ } t  j | d d d d d g ƒ } d | _ | j | d g d |  ƒ} t j | d d d d g g d d d g ƒ} t i d d d d g d 6d d	 d
 d g d 6d | ƒ} |  s/t | | j d d d d g g d d g ƒ } n  | j	 d ƒ } t
 j | | ƒ d  S(   Ni   i   i   t   C1i   i   t   C2i
   id   iÈ   i"   t   C3i   R‡   R&   R   R   R#   (   R   R   RT   R4   R(   R   R‚   R   R9   Rƒ   RP   R   (   R&   R2   R-   R9   R‘   Rn   Re   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_observed_codes_remapl  s     ?"	c          C  s5  t  i t j j d d d d ƒd 6t j j d d d d ƒd 6t j j d d d d ƒd 6d d	 6ƒ }  |  j j t ƒ j d
 ƒ |  d <|  j d d d g d t ƒ} | j	 ƒ  } | j
 j d j ƒ  |  j j ƒ  k sÛ t ‚ | j
 j d j ƒ  |  j j ƒ  k st ‚ | j
 j d j ƒ  |  j j ƒ  k s1t ‚ d  S(   Ni    iÿ   RJ   i0u  R‡   t   int_idi'  t   other_idRF   t   categoryR&   i   i   (   R   R   RW   RX   R‡   RS   t   strR(   RM   R"   R   Rk   t   nuniqueR,   R›   Rœ   (   R-   Rl   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_observed_perf  s    ++c         C  s  t  j d d d g d d d d g ƒ} t  j i | d 6d d d g d	 6ƒ } | j d d
 |  ƒ} | j } |  r© i t d d g d d ƒd 6t d g d d ƒd 6} nH i t d d g d d ƒd 6t g  d d ƒd 6t d g d d ƒd 6} t j | | ƒ d  S(   NR   R1   R   R0   R‡   i   i   i   t   valsR&   i    t   dtypet   int64(   R   R   R   R(   R”   R   RP   t   assert_dict_equal(   R&   R‡   R-   Rj   R   Re   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_observed_groups“  s    '&	c         C  sé   t  j i t  j d t j d g d d d d g ƒd 6d d d g d	 6ƒ } | j d d
 |  ƒ} | j } |  r i t d d g d d ƒd 6} nE i t d d g d d ƒd 6t g  d d ƒd 6t g  d d ƒd 6} t j	 | | ƒ d  S(   NR   R   R0   R2   R‡   i   i   i   R¡   R&   i    R¢   R£   (
   R   R   R   R   RO   R(   R”   R   RP   R¤   (   R&   R-   Rj   R   Re   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_observed_groups_with_nan§  s    !	"c         C  s(  t  j t j d t j d g d d d d g ƒ} t  j d d d d g ƒ } t  j i | d	 6| d
 6ƒ } | j d	 d |  ƒj ƒ  j ƒ  } |  rÊ t i t  j d g d d d d g ƒd	 6d g d
 6ƒ } nJ t i t  j d d d g d d d d g ƒd	 6d t j t j g d
 6ƒ } t	 j
 | | ƒ d  S(   NR   R   R0   R1   i   i   i   i   t   s1t   s2R&   (   R   R   R   RO   R   R   R(   t   firstR   RP   R   (   R&   R§   R¨   R-   R   Re   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt#   test_dataframe_categorical_with_nan·  s    !&c       	   C  s9  t  j d d d ƒ}  t j j d d d d ƒ} t j | |  d t ƒ} t t j j	 d d ƒ ƒ } | j
 | d t ƒj ƒ  } | j
 t j | ƒ d t ƒj ƒ  } | j |  ƒ } t | j d	 | j d t ƒ| _ t | | ƒ | j
 | d t ƒ} | j ƒ  } | j j ƒ  } | j | ƒ }	 | j | ƒ }
 |
 j
 |	 d t ƒj ƒ  } t | | ƒ t j | j | j ƒ t j | j j d ƒ | j j d ƒ ƒ t j t j d ƒ j d
 ƒ |  d t ƒ} t | ƒ } t j | j ƒ  j j d ƒ | ƒ t d d d d d d d d g d ƒ } t j | j ƒ  j j d ƒ | ƒ d  S(   Ns
   2014-01-01t   periodsi   i    RJ   id   R   R&   R   i   R"   R#   RL   R    s   25%s   50%s   75%R!   i   (   R   t
   date_rangeR   RW   RX   R   R   RM   R   RY   R(   R)   R#   RZ   R   R   R   R   R[   R\   R]   t   take_ndR^   RP   R`   Rb   R   R_   Ra   R   (   Rk   R\   R.   Rc   R   Re   Rl   Rm   Rn   Ro   Rp   Rr   Rs   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_datetimeÈ  s>    $	$c          C  s­  t  j j d ƒ }  d d d d g } |  j d d d d	 ƒ} t j | | d
 t ƒ} t t  j t  j	 d	 ƒ d ƒ j
 d d ƒ d t d ƒ ƒ} | | d <| j d ƒ j d d d t ƒ j ƒ  } | t d ƒ j | j d t ƒj ƒ  } t t j d d d d g | d
 t ƒd d ƒ| _ t | | ƒ | j d d t ƒj ƒ  } | t d ƒ j | j d t ƒj ƒ  } t t j d d d d g | d
 t ƒd d ƒ| _ t | | ƒ d  S(   Ni90  RF   RG   RH   RI   i    i   RJ   i   R   iÿÿÿÿR:   R3   R.   Rw   R&   i   i   i   R4   (   R   RW   t   RandomStateRX   R   R   RM   R   R_   R   t   reshapeRN   R   R(   R)   RC   R\   R   R   R   (   t   sRk   R\   R.   R-   R   Re   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_categorical_indexó  s(    0
'(*(*c          C  sµ   t  j d d d d g d d d d d g d t ƒ}  t t j j d d ƒ d	 |  ƒ} | j d
 d d d g d ƒ j ƒ  } t	 j
 | j ƒ  j |  ƒ t	 j | j ƒ  j j |  j ƒ d  S(   NRI   RF   RH   RG   R   R   i   i   R:   i   i   i   i   (   R   R   RM   R   R   RW   RY   R(   R[   RP   R`   Ra   R:   t   assert_categorical_equalR9   (   R.   R-   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt!   test_describe_categorical_columns  s    	!%c          C  s/  t  j i t d ƒ d 6d d g d d 6t d ƒ d d	 6ƒ }  |  d j d
 ƒ |  d <|  j d	 d g d t ƒd j ƒ  j ƒ  } | j	 ƒ  } t  j
 d d g d t d d ƒ} t j | j | ƒ t j | j j | j ƒ | d | d } t  j d d g d t  j d d g d d	 ƒƒ} t j | | ƒ d  S(   Ni
   R   R7   R8   i   t   mediumt   XYXXYi   t   artistR   R&   R   R4   i   i   R   t   Xt   Y(   R   R   Rx   RN   RS   R(   R)   R"   t   unstackR[   R   RP   R`   R:   R³   R9   R   R   R   (   R-   t   gcatR   t   exp_columnsRe   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_unstack_categorical  s    %	0c          C  sx   t  t j t j d d d d d d d d g
 ƒ }  t j |  j ƒ  j d ƒ } t j t	 ƒ  |  j
 | ƒ j ƒ  Wd  QXd  S(   Ni   i   i   i   (   R   R   RO   R   RT   t   dropnaR9   t   pytestt   raisest
   ValueErrorR(   R#   (   t   seriesRB   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_bins_unequal_len0  s    0c            s˜  t  i t d d d g d d d g ƒ d 6d d d g d 6d d	 d
 g d 6ƒ ‰  ˆ  j d d g d t d t ƒj ƒ  }  t  i t d d g d ˆ  j j j ƒd 6d d g d 6d d g d 6d d d d g ƒ} t j	 |  | ƒ ‡  f d †  } ˆ  j d | g d t d t ƒj ƒ  }  t  i t d d g d ˆ  j j j ƒd 6d d g d 6d d g d 6d d d d g ƒ} t j	 |  | ƒ t
 d d d g d d ƒ} ˆ  j d | g d t d t ƒj ƒ  }  t j	 |  | ƒ d d g } t  i t d d g d ˆ  j j j ƒd 6d d g d 6d d g d 6d d d d g ƒ} xc d  d d g D]R } t t d ƒ d | ƒˆ  _ ˆ  j | d t d t ƒj ƒ  }  t j	 |  | ƒ q>Wd  S(   Ni   i   i   R‡   i
   i   R7   ie   if   ig   R8   RŒ   R&   R   iÍ   R:   c           s   ˆ  j  |  d f S(   NR7   (   t   loc(   t   r(   R-   (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyR>   H  s    i   R   R0   R4   R¸   R}   (   R   R   R(   R)   RM   RC   R‡   R   RP   R   R   t   NoneR   RN   R   (   R   Re   R   R±   t   group_columnsR4   (    (   R-   sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_as_index:  s>    ('%'%'%!c          C  sx  t  d ƒ }  t i t j t  d ƒ d |  d t ƒd 6ƒ } t j |  |  d t ƒ} t j | j d d t d t	 ƒj
 ƒ  j | ƒ t j | j d d t	 d t	 ƒj
 ƒ  j | ƒ t i t j t  d ƒ d |  d t	 ƒd 6ƒ } t j |  |  d t	 ƒ} t j t  d ƒ t  d ƒ d t	 ƒ} t j | j d d t d t	 ƒj
 ƒ  j | ƒ t j | j d d t	 d t	 ƒj
 ƒ  j | ƒ d  S(	   NR}   t   baR   R   R7   RK   R&   t   bac(   RN   R   R   R   RM   R   RP   R`   R(   R)   R©   R   (   R   R-   R   R   t   nosort_index(    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_preserve_categoriese  s*    ((	!!c          C  sœ  t  i d d d d d g d 6d d d d d g d	 6t t d
 ƒ d t d ƒ d t ƒd 6t t d
 ƒ d t d ƒ d t ƒd 6ƒ }  t  i d d t j g d 6d d t j g d	 6t t d ƒ d t d ƒ d t ƒd 6t t d ƒ d t d ƒ d t ƒd 6ƒ } x— d d g D]‰ } |  j d | d t d t ƒ j ƒ  } |  j d | d t d t ƒ j ƒ  j	 ƒ  } | j
 d | j ƒ } t j | | ƒ t j | | ƒ qWd  S(   Ni   i   R7   i
   i   i   i   i"   R8   t   abaabR   RÊ   R   R—   R˜   g       @g      ð?g      9@g      4@t   byRŒ   R&   R:   (   R   R   RN   R)   RM   R   RO   R(   R#   R   R   R:   RP   R   (   R-   t   exp_fullt   colt   result1t   result2Re   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_preserve_categorical_dtype‚  s.    

$	!c          C  sY  t  t j j d ƒ ƒ }  t j d d d d d d d d d g	 ƒ } t j | d d d g d t ƒ} |  j | d t	 ƒj
 ƒ  } |  j | d t	 ƒj
 ƒ  } t | j d | j d | j ƒ| _ t | | ƒ t j d d d d d d d d d g	 ƒ } t j | d d d d g d t ƒ} |  j | d t	 ƒj
 ƒ  } |  j | d t	 ƒj
 ƒ  j | j ƒ } t | j d | j d | j ƒ| _ t | | ƒ t d	 d	 d	 d
 d
 d
 d d d g	 d d	 d
 d d g d t ƒ} t i d d d d d d d d d g	 d	 6| d
 6ƒ }  |  j d
 d t	 ƒj
 ƒ  } | d	 j } t j d d d t j g ƒ } t j | | ƒ d  S(   Ni	   i    i   i   R   R&   R   i   R   R0   R1   R2   i   i   (   R   R   RW   RY   t   arrayR   R   RM   R(   R)   R#   R   R   R   R   R   R   R   R9   RO   RP   t   assert_numpy_array_equal(   Rc   R\   R.   R   Rs   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_categorical_no_compressž  s,    *!*$'$5c          C  s%  t  i t j j d d d ƒ d 6ƒ }  g  t d d d ƒ D] } d j | | d ƒ ^ q8 } t | | ƒ } |  j d d g d	 t ƒ }  t	 j
 |  j t d d
 d ƒ d t d | ƒ|  d <|  j d g d t ƒd j ƒ  } | t | j d d „  ƒ} t | j d | j j ƒ| _ t j | | ƒ d  S(   Ni    i'  id   t   valueiô  s	   {0} - {1}ió  RÎ   t	   ascendingi)  t   rightRE   t   value_groupR&   R’   c         S  s   t  |  j ƒ  d ƒ S(   Ni    (   t   floatt   split(   R=   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyR>   Î  s    R4   (   R   R   RW   RX   Rx   t   formatR   t   sort_valuesRM   R   RT   R×   R)   R(   R"   t   sortedR   R   R4   RP   R   (   R-   R“   RE   t
   cat_labelst   resRs   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt	   test_sort¾  s    %5"c       
   C  s©  t  d d d g d d d g d d d g d d	 d
 g d d d g d d d g d d d g g d d d d g ƒ}  t |  d d t ƒ|  d <t d d d d g d d d t ƒ} t  d d g d d g d	 d
 g d d g g d d d g d | ƒ} d } |  j | d t d t ƒj ƒ  } t | | ƒ | } |  j | d t d t ƒj ƒ  } t | | ƒ t |  d d t ƒ|  d <t d d d d g d d ƒ} t  d d g d d g d	 d
 g d d g g d d d g d | ƒ} t d d d d g d d d d d g d d ƒ} t  d d g d d g d	 d
 g d d g g d | d d d g ƒ} d } |  j | d t d t ƒj ƒ  } t | | ƒ |  j | d t d t ƒj ƒ  } t | | ƒ d  S(   Ns	   (7.5, 10]i
   i   i   s   (2.5, 5]i   i   s   (5, 7.5]i   i(   i   i2   s   (0, 2.5]i   i<   i   iF   R:   Rx   RF   RG   R   R4   R   RK   R&   R   (   R   R   RM   R   R(   R)   R©   R   (   R-   R   t   expected_sortRÐ   t   result_sortt   expected_nosortt   result_nosort(    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt
   test_sort2Ó  sF    $-!!-		-!!c          C  s  t  i t d d d ƒ t d d d ƒ t d d d ƒ t d d d ƒ t d d d ƒ t d d d ƒ t d d d ƒ g d 6d d d d	 d
 d d g d 6d d d d d d d g d 6d d d d g ƒ}  t |  d d t ƒ|  d <t d d d ƒ t d d d ƒ t d d d ƒ t d d d ƒ g } t  d d g d d g d	 d g d d g g d d d g ƒ} t | d d d t ƒ| _ t d d d ƒ t d d d ƒ t d d d ƒ t d d d ƒ g } t  d d g d d g d	 d g d d g g d d d g ƒ} t | d | d d d t ƒ| _ d } t | |  j | d t d t ƒj	 ƒ  ƒ t | |  j | d t d t ƒj	 ƒ  ƒ t |  d d t ƒ|  d <t d d d ƒ t d d d ƒ t d d d ƒ t d d d ƒ g } t  d d g d d g d	 d g d d g g d d d g ƒ} t | d d ƒ| _ t d d d ƒ t d d d ƒ t d d d ƒ t d d d ƒ g } t  d d g d d g d	 d g d d g g d d d g ƒ} t | d | d d ƒ| _ d } t | |  j | d t d t ƒj	 ƒ  ƒ t | |  j | d t d t ƒj	 ƒ  ƒ d  S(   NiÛ  i   i   i   i   t   dti
   i   i   i   RF   i   i   i(   i2   i<   iF   RG   R:   R   R4   R   RK   R&   (
   R   R   R   RM   R   R   R   R(   R)   R©   (   R-   R   Rä   Ræ   RÐ   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_sort_datetimelike  sR    $$9$-%%$9$-%c          C  sÀ  t  j i t  j d d d g d d d d g ƒd 6d d d g d 6ƒ }  t  j d d d g d	 d ƒ} |  j d d
 t ƒj j ƒ  } t  j d d d g | d	 d ƒ} t	 j
 | | ƒ |  j d d
 t ƒj j d d ƒ } t  j d d d g | d	 d ƒ} t	 j
 | | ƒ |  j d d
 t ƒj j d d ƒ } t  j d d t j g | d	 d ƒ} t	 j
 | | ƒ |  j d d
 t ƒj j d d ƒ } t  j d t j t j g | d	 d ƒ} t	 j
 | | ƒ d  S(   NR   R0   R   R1   R7   i   i   R8   R4   R&   i   i    t	   min_count(   R   R   R   R   R(   R)   R8   RC   R   RP   R   R   RO   (   R-   t   expected_idxR   Re   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_empty_sum=  s     !$!$$$'c          C  se  t  j i t  j d d d g d d d d g ƒd 6d d d g d 6ƒ }  t  j d d d g d	 d ƒ} |  j d d
 t ƒj j ƒ  } t  j d d d g | d	 d ƒ} t	 j
 | | ƒ |  j d d
 t ƒj j d d ƒ } t  j d d d g | d	 d ƒ} t	 j
 | | ƒ |  j d d
 t ƒj j d d ƒ } t  j d d t j g | d	 d ƒ} t	 j
 | | ƒ d  S(   NR   R0   R   R1   R7   i   i   R8   R4   R&   Rê   i    (   R   R   R   R   R(   R)   R8   t   prodR   RP   R   R   RO   (   R-   Rë   R   Re   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   test_empty_prodY  s    !$!$$c          C  s  t  j i t  j t d ƒ ƒ d 6t  j t t  j d d d d d ƒƒ d ƒ d 6t j d	 ƒ d
 6ƒ }  |  j d d g ƒ j ƒ  } t  j	 j
 t  j d d d g ƒ t  j t  j d d d d d ƒƒ g d d d g ƒ} t  j i d d d d d d d t j d g	 d
 6d | ƒ} t | | ƒ d  S(   Nt	   abcbabcbat   key1s   2018-06-01 00t   freqt   1TR«   i   t   key2i	   R9   R   R0   R1   R   i    i   i   i   i   i   R   (   R   R   R   RN   R¬   R   R   R(   R#   R   R   RO   R   (   R-   R   Rn   Re   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt,   test_groupby_multiindex_categorical_datetimeq  s    	)	'4s   as_index, expectedR   i   i   R¢   R   R   R   R0   Rc   i   R4   R=   c         C  sŠ   t  j i t  j d d d g d d ƒd 6d d d g d 6d d d g d 6ƒ } | j d d g d	 |  d
 t ƒd j ƒ  } t | | ƒ d  S(   Ni   i   R¢   R   R   R0   i   R=   RŒ   R&   (   R   R   R   R(   RM   RC   R
   (   RŒ   Re   R-   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt,   test_groupby_agg_observed_true_single_column…  s    	%t
   fill_valuec         C  sŒ   t  j d d d d g d d d d d g d t ƒ} t  j d  d d d g d d d d d g d t ƒ} | j d d |  ƒ} t | | ƒ d  S(	   NR   R0   R1   R2   R   R   i   Rö   (   R   R   R)   RÆ   t   shiftR
   (   Rö   t   ctRe   Rá   (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt
   test_shift¡  s    (=   t
   __future__R    R   t   numpyR   R¿   t   pandas.compatR   t   pandasR   R   R   R   R   R   R   R	   t   pandas.util.testingt   utilt   testingRP   R
   R   R   R   R/   Rt   Rz   t   markt   xfailR)   t   parametrizeRM   R„   R–   Rš   R    R¥   R¦   Rª   R®   R²   R´   R½   RÃ   RÈ   RÌ   RÓ   RÖ   Râ   Rç   Ré   Rì   Rî   Rô   R‚   Rõ   RÆ   RO   t   NaTRù   (    (    (    sD   lib/python2.7/site-packages/pandas/tests/groupby/test_categorical.pyt   <module>   s\   4				')	n						+				
	+			 		0	:				!(