ó
šxŠ\c           @   s  d  Z  d d l Z d d l Z d d l m Z 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 d d l m Z d d l j j Z d d l m Z m Z m Z m Z d e f d „  ƒ  YZ d	 f  d
 „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ d S(   sG    test where we are determining what we are grouping, or getting groups iÿÿÿÿN(   t   longt   lrange(   t   CategoricalIndext	   DataFramet   Indext
   MultiIndext   Seriest	   Timestampt   compatt
   date_range(   t   Grouping(   t   assert_almost_equalt   assert_frame_equalt   assert_panel_equalt   assert_series_equalt   TestSelectionc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s…   t  d d g g d d d g ƒ} | j d ƒ } t j t d d ƒ | d g Wd  QXt j t d d	 ƒ | d d g Wd  QXd  S(
   Ni   i   t   columnst   At   Bt   matchs   "Columns not found: 'C'"t   Cs   ^[^A]+$(   R   t   groupbyt   pytestt   raisest   KeyError(   t   selft   dft   g(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_select_bad_cols   s    !c      
   C   sò   t  d d d d d g d t d ƒ t d d ƒ t d	 d
 d ƒ g ƒ } d } t j t d | ƒ | j d ƒ Wd  QXt j t d | ƒ | j d d g ƒ Wd  QX| j d ƒ } | j ƒ  } | j j d k sÖ t	 ‚ | j j
 d k sî t	 ‚ d  S(   NR   R   R   R   t   datai   i   i   i    i   s!   Grouper for 'A' not 1-dimensionalR   i   i   (   R   t   rangeR   R   t
   ValueErrorR   t   countR   t   nlevelst   AssertionErrort   size(   R   R   t   msgt   groupedt   c(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt'   test_groupby_duplicated_column_errormsg%   s    -c         C   s‰   | j  d ƒ j j ƒ  } | j  d ƒ d j ƒ  } t | | ƒ d | d <| j  d ƒ j ƒ  } | j  d ƒ j t j ƒ } t | | ƒ d  S(   NR   R   g      ø?t   mean(   R   R   t   sumR   R(   t   aggt   npR   (   R   R   t   resultt   expected(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_column_select_via_attr5   s    
c      
   C   s:  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
 6t j j d ƒ d 6ƒ } | j d ƒ d	 d
 g j ƒ  } | j d ƒ d j ƒ  } | j d ƒ | j d d !j ƒ  } | j d  d  … d d	 d
 g f j d ƒ j ƒ  } t | | ƒ t | | ƒ t | | ƒ d  S(   Nt   foot   barR   t   onet   twot   threeR   i   R   t   Dt   Ei   i   (   R   R4   (	   R   R+   t   randomt   randnR   R(   R   t   locR   (   R   R   R,   t   result2t   result3R-   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_getitem_list_of_columns?   s    "#1c         C   s  t  i t d ƒ d d 6t j j d ƒ d 6t j j d ƒ d 6t j j d ƒ d 6ƒ } | j d ƒ | j d d !j ƒ  } | j d ƒ d	 j ƒ  } | j d ƒ d d g j ƒ  } | j d  d  … d d d g f j d ƒ j ƒ  } t	 | | ƒ t	 | | ƒ t	 | | ƒ d  S(
   Nt   abcdi   i    i   i   i   i   i   (   i   i   (
   R   t   listR+   R6   R7   R   R   R(   R8   R   (   R   R   R,   R9   R:   R-   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt!   test_getitem_numeric_column_namesQ   s    #1(   t   __name__t
   __module__R   R'   R.   R;   R>   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyR      s
   			
	t   TestGroupingc           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 d „  Z d „  Z d „  Z d „  Z e j j d e e g ƒ d „  ƒ Z d „  Z e j j d e e g ƒ d „  ƒ Z d „  Z e j j d e d d d d d d d d d d g
 g e d d d d d d d d d d g
 g g ƒ d „  ƒ Z d „  Z d „  Z RS(   c         C   s×   t  t j d ƒ j d d ƒ d t d ƒ ƒ} x£ t j t j t j t j	 t j
 t j g D]w } | t | ƒ ƒ | _ | j t d ƒ ƒ j d „  ƒ t t | j j ƒ  ƒ ƒ | _ | j t d ƒ ƒ j d „  ƒ qX Wd  S(	   Ni
   i   i   R   t   ABt   abcdec         S   s   |  S(   N(    (   t   x(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   <lambda>p   s    c         S   s   |  S(   N(    (   RD   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRE   s   s    (   R   R+   t   aranget   reshapeR=   t   tmt   makeFloatIndext   makeStringIndext   makeUnicodeIndext   makeIntIndext   makeDateIndext   makePeriodIndext   lent   indexR   t   applyt   reversedt   tolist(   R   R   RP   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_grouper_index_typesg   s    -c   	      C   s‹  d d l  m } m } | j ƒ  | d d ƒ } t | | j ƒ  ƒ } t j j | | g d d d g ƒ} t j t	 j
 j d d	 d
 ƒ d | ƒ} | j ƒ  j t j d d d d ƒ t j d d d d ƒ g ƒ j ƒ  } t j d g d d ƒ| _ | j t j d d d d ƒ t j d d d d ƒ g ƒ j ƒ  } t | | ƒ | j t j d d d d ƒ t j d d d d ƒ g ƒ j ƒ  } t | | ƒ d  S(   Niÿÿÿÿ(   t   datet	   timedeltat   daysi   t   namesR/   R0   i    id   iá   RP   t   keyt   freqt   Wt   dtypet   int64t   leveli   (   t   datetimeRU   RV   t   todayR	   t   pdR   t   from_productR   R+   R6   t   randintt   reset_indexR   t   GrouperR)   R   R   R   (	   R   RU   RV   t   d0t   datest
   date_indexR   R-   R,   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_grouper_multilevel_frequ   s    	'0$$c      
   C   si  t  i d d d d d d g d 6d d d d d d g d	 6ƒ } | j d ƒ } | j ƒ  } | j t j d
 d ƒ ƒ } | j ƒ  } t | | ƒ | j d „  ƒ } t | | ƒ | j t j d
 d d d ƒ ƒ } | j ƒ  } t | | ƒ t  i d d d d d d g d 6d d d d d d g d	 6d d d d d d g d 6ƒ } | j d ƒ j ƒ  } | j t j d
 d ƒ g ƒ } | j ƒ  } t | | ƒ | j d d	 g ƒ j ƒ  } | j t j d
 d ƒ t j d
 d	 ƒ g ƒ } | j ƒ  } t | | ƒ | j d t j d
 d	 ƒ g ƒ } | j ƒ  } t | | ƒ | j t j d
 d ƒ d	 g ƒ } | j ƒ  } t | | ƒ t t j	 d d d ƒd t j
 j t d ƒ t d ƒ t d d d ƒg d d d d g ƒƒ} | j t j d d d d ƒ ƒ j ƒ  } t d g d t t d ƒ g d d d d ƒƒ} t | | ƒ | j t j d d ƒ ƒ j ƒ  } | j d d ƒ j ƒ  } t | | ƒ d  S(   Ni    i   i   R   i   i   i   i   R   RY   c         S   s
   |  j  ƒ  S(   N(   R)   (   RD   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRE   š   s    t   axisR   i   R\   R]   RP   t   abt   20130101t   periodsRX   R1   R2   R3   R^   RZ   t   Mi   s
   2013-01-31t   name(   R   R   R)   Ra   Re   R   RQ   R   R+   RF   R   Rb   R=   R   R	   R   R   R   (   R   R   R   R-   R,   t   s(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_grouper_creation_bug   sP    >!-!!	'!!c         C   sØ  t  j j d d d d d d g ƒ } d d g | _ t  j i t j d ƒ d	 6d
 d
 d d d
 d
 g d 6d | ƒ} | j d t  j d d ƒ g ƒ j	 ƒ  } | j
 ƒ  j d d g ƒ j	 ƒ  } t | | ƒ | j t  j d d ƒ d g ƒ j	 ƒ  } | j
 ƒ  j d d g ƒ j	 ƒ  } t | | ƒ | j
 d ƒ } | j d t  j d d ƒ g ƒ j	 ƒ  } | j
 ƒ  j d d g ƒ j	 ƒ  } t | | ƒ | j t  j d d ƒ d g ƒ j	 ƒ  } | j
 ƒ  j d d g ƒ j	 ƒ  } t | | ƒ d  S(   Nt   ai   i   i   t   bt   outert   inneri   R   R1   R2   R   RP   R^   (   Rr   i   (   Rr   i   (   Rr   i   (   Rs   i   (   Rs   i   (   Rs   i   (   Ra   R   t   from_tuplesRX   R   R+   RF   R   Re   R(   Rd   R   (   R   t   idxt   df_multiR,   R-   t	   df_single(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_grouper_column_and_indexÏ   s(    		'!'!'!'!c         C   sÕ   d d g } t  j j d d d d g d	 | ƒ} t  j t j d
 ƒ j d d ƒ d | ƒ} | j d | ƒ j ƒ  } | j	 ƒ  j | ƒ j ƒ  } t
 j | | d t ƒt  j | j d t j ƒ| _ t
 j | | ƒ d  S(   NRD   t   yi   i   i   i   i   i   RX   i   iÿÿÿÿRP   R^   t   check_column_typeR\   (   i   i   (   i   i   (   i   i   (   i   i   (   Ra   R   Rv   R   R+   RF   RG   R   R(   Rd   RH   R   t   FalseR   R   R]   (   R   t	   idx_namesRw   R   t	   by_levelst
   by_columns(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_levels_and_columnsð   s    	*c         C   sZ  d d d d g } d d g } t  j d t ƒ } t | d | d t ƒ} t d | d | ƒ } | j d	 d
 d d d | ƒ j ƒ  } d t  j d t ƒ } | r¾ t d d g d | d t ƒ}	 n t | d | d t ƒ}	 t d | d |	 ƒ }
 t | |
 ƒ t | j	 d | ƒ} | j d	 d d d d | ƒ j ƒ  } t d | j	 d |	 ƒ }
 t | |
 ƒ d  S(   NR   R   i   i   t
   categoriest   orderedR   R   Rj   i   R^   i    t   observedi   RP   (   i   i   (   i   i   (
   R+   t   onest   intR   t   TrueR   R   R)   R   t   T(   R   R„   R   R‚   R   t   cat_columnsR   R,   t   expected_datat   expected_columnsR-   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt*   test_groupby_categorical_index_and_columns   s,    		$		$c         C   sñ   t  i d d 6d t j j t d ƒ t d d d ƒg d d	 d
 g ƒƒ} | j t j d d	 ƒ t j d d
 d d ƒ g ƒ j ƒ  } t  i d d d d d d g d 6d t j t d ƒ t d d d d d ƒg d d	 d
 g ƒƒ} t	 | | ƒ d  S(   Ni   R   RP   Rk   Rl   Rm   iP   RX   R1   R2   R^   RZ   Rn   i   i   i   i   (
   R   Ra   R   Rb   R=   R	   R   Re   R)   R   (   R   R   R,   R-   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt#   test_grouper_getting_correct_binner   s    !"	c         C   s.   t  | j d ƒ j ƒ d d g k s* t ‚ d  S(   NR   R0   R/   (   t   sortedR   t   grouperR"   (   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_grouper_iter1  s    c         C   s-   t  j t d d ƒ | j g  ƒ Wd  QXd  S(   NR   s   No group keys passed!(   R   R   R   R   (   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_empty_groups4  s    c         C   sG   | j  d ƒ } | j  | j ƒ j ƒ  } | j ƒ  } t j | | ƒ d  S(   NR   (   R   R   R(   RH   R   (   R   R   R%   R,   R-   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_grouper9  s    c         C   sM  d d l  m } | i d d 6ƒ } | j i d d 6ƒ j t ƒ } | j d g ƒ j t ƒ } t | | ƒ | d d d d	 g d
 t d ƒ ƒ} i d d 6d d 6d d 6d d 6} | j | ƒ j ƒ  } | j | ƒ j t j ƒ } | j d d d d g ƒ j ƒ  } | j d d d d g ƒ j ƒ  } t | | ƒ t | | ƒ t | | ƒ d  S(   Niÿÿÿÿ(   R   i   t   T1t   T2g      ð?g       @g      @g      @RP   R<   i    Rr   Rs   i   R&   t   d(	   t   pandasR   R   R*   R)   R   R=   R(   R+   (   R   R   Rp   R,   R-   t   mappingR9   t	   expected2(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_dict_mapping@  s    $"!!c         C   sl   t  d d d d d ƒ} t t j j d ƒ d | ƒ} d } t j t d | ƒ | j d	 „  ƒ Wd  QXd  S(
   Ns   01-Jan-2013Rm   i   RZ   t   MSRP   s4   Grouper result violates len\(labels\) == len\(data\)R   c         S   s   |  d d !S(   Ni    i   (    (   RY   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRE   b  s    (	   R	   R   R+   R6   R7   R   R   R"   R   (   R   Rg   t   tsR$   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt%   test_groupby_grouper_f_sanity_checkedS  s
    c      	   C   s@   d } t  j t d | ƒ t | j | d d g ƒ Wd  QXd  S(   NsE   Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensionalR   R   (   R   R   R   R
   RP   (   R   R   R$   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt%   test_grouping_error_on_multidim_inputd  s    c         C   s†   t  j d d d g d d d g d d d	 g g ƒ } t  j j d d d g ƒ | _ | j d d d d
 d g ƒ j ƒ  } t | | ƒ d  S(   Ni   i   i   i   i   i   i   i   i	   i    Rj   R^   (   i    i   (   i   i   (   i   i   (   Ra   R   R   Rv   R   R   t   firstR   (   R   R   R,   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_multiindex_passthruj  s    3$c         C   sø   | j  d d ƒ j ƒ  } | j  d d ƒ j ƒ  } t | | ƒ | j  d d ƒ j ƒ  } | j  d d ƒ j ƒ  } t | | ƒ | j  d d d g ƒ j ƒ  } | } t | | ƒ | j  d d d g ƒ j ƒ  } | j  d d d g ƒ j ƒ  } t | | ƒ d  S(   NR^   iÿÿÿÿt   secondiþÿÿÿRž   (   R   R)   R   (   R   t   mframeR,   R-   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_multiindex_negative_levelt  s    c         C   sI   t  j t | j ƒ ƒ | _ | j d d t ƒd j i t  j d 6ƒ d  S(   Ni   t   as_indexi   t   Q(   R+   RF   RO   R   R   R}   R*   R(   (   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt&   test_multifunc_select_col_integer_cols†  s    c         C   su  d d g d d g g } t  j | ƒ } t t d ƒ d g g d | ƒ} | j d ƒ j } | d d g k ss t ‚ | j d g ƒ j } | d d g k s¡ t ‚ t t d ƒ d g t d	 ƒ d
 g g d | ƒ} | j d ƒ j } | j d g ƒ j } | | k s
t ‚ t t d ƒ d g t d	 ƒ d g g d | ƒ} | j d ƒ j } | j d g ƒ j } t j | | ƒ d  S(   NR    t   valuess	   to filtert    i   R   R   i    i   R   (   s	   to filterR§   (   s	   to filterR§   (   s	   to filterR§   (	   R   Rv   R   R    R   t   groupsR"   RH   t   assert_dict_equal(   R   t   lstt   midxR   R%   R-   R,   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt#   test_multiindex_columns_empty_levelŒ  s    !00c      	   C   s{  t  j d d d d g d d d d g d d d d g g d t  j j d d	 d	 d
 g d d d d g g ƒ ƒ} | j d g ƒ j } | j d ƒ j } t j | | ƒ t  j | j d t  j j d d	 d	 d
 g d d d d g g ƒ ƒ} | j d g ƒ j } | j d ƒ j } t j | | ƒ t  j | j d d d d d
 g ƒ} | j d g ƒ j } | j d ƒ j } t j | | ƒ d  S(   Ni   i   i   i   i   i   R   Rr   Rs   R&   R•   t   e(   Rs   i   (   Rs   i   (   Rs   R•   (   Rs   i   (   Rr   R•   (   Rs   R•   (   Rs   R­   (   Rs   R•   (   Rs   i   (	   Ra   R   R   t   from_arraysR   R¨   RH   R©   R¦   (   R   R   R-   R,   t   df2t   df3(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_multiindex_tuple¤  s&    9		t   sortc         C   s2  | } | j  ƒ  } | j d d d | ƒ j ƒ  } | j d d d | ƒ j ƒ  } | j | d j d | ƒj ƒ  } | j | d j d | ƒj ƒ  }	 d | j _ d |	 j _ | j j d k sÂ t ‚ | j j d k sÚ t ‚ t | | ƒ t | |	 ƒ | j j | j j d k st ‚ | j j | j j d k s8t ‚ | j d d d | ƒ j ƒ  } | j d d d | ƒ j ƒ  } t | | ƒ t | |	 ƒ | j	 j d d d d d | ƒ j ƒ  } | j	 j d d d d d | ƒ j ƒ  } t | | j	 ƒ t | |	 j	 ƒ d }
 t
 j t d	 |
 ƒ | j d d ƒ Wd  QXd  S(
   NR^   i    R²   i   Rž   R    Rj   s2   level > 0 or level < -1 only valid with MultiIndexR   (   Rd   R   R)   R¦   RP   Ro   R"   R   RX   Rˆ   R   R   R   (   R   R²   R¡   R   t   framet	   deleveledt   result0t   result1t	   expected0t	   expected1R$   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_level¼  s2    """"''c         C   s   t  i d g d d g d d 6t d ƒ d 6ƒ j d ƒ } | j d d ƒ d } t j t d	 | ƒ | j d d
 ƒ Wd  QXd  S(   NR   i   R   t   expi   t   var1R^   s+   level name foo is not the name of the indexR   R/   (   R   R   t	   set_indexR   R   R   R   (   R   R   R$   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_level_index_nameså  s    c         C   s’  t  d d d g d d d d g g d d d d d d d d d g d d d d d d d d g g ƒ } t t j d ƒ d | ƒ} | j d	 d d
 | ƒ j ƒ  } t d d g d d d g ƒ} t | | ƒ t  d d d g d d d d g g d d d d d d d d d g d d d d d d d d g g ƒ } t t j d ƒ d | ƒ} | j d	 d d
 | ƒ j ƒ  } t d d g d d d g ƒ} t | | ƒ d  S(   Nt   levelsi   i    i   i   t   codesg       @RP   R^   R²   g      @g      6@iÿÿÿÿg      2@g        g      ð?(   R   R   R+   RF   R   R)   R   (   R   R²   RP   Rp   R,   R-   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_level_with_nasî  s    $-$*c      
   C   sn   | } d } t  j t d | ƒ | j ƒ  Wd  QXd } t  j t d | ƒ | j d d  d d  ƒ Wd  QXd  S(   Ns*   You have to supply one of 'by' and 'level'R   t   byR^   (   R   R   t	   TypeErrorR   t   None(   R   R¡   R³   R$   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_args  s    s   sort,labelsi   i    i   i   c         C   sH   | j  d d d | ƒ } t j | t j ƒ } t | j j d | ƒ d  S(   NR^   i    R²   (   R   R+   t   arrayt   intpR   R   t   labels(   R   R²   RÇ   R¡   R%   t
   exp_labels(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_level_preserve_order  s    c         C   sl   | j  | j j d ƒ ƒ } t j d d d d d d d d d d g
 d t j ƒ} t | j j d | ƒ d  S(   Ni    i   i   i   R\   (	   R   RP   t   get_level_valuesR+   RÅ   RÆ   R   R   RÇ   (   R   R¡   R%   RÈ   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_grouping_labels  s    6c         C   sß   t  j i t  j d d d d d ƒd 6ƒ } t  j | j d <t  j d d d d	 ƒ } | j | g ƒ } i t  j t t	 d
 ƒ ƒ ƒ t  j
 d ƒ 6} t j | j | ƒ | j | ƒ } i d t  j
 d ƒ 6} t j | j | ƒ d  S(   Ns   1/1/2011Rm   im  RZ   R4   RU   iÿÿÿÿRY   t   ASil  s
   2011-01-01(   Ra   R   R	   t   NaTt   ilocRe   R   R   R=   R   R   RH   R©   R¨   (   R   R   R   R,   R-   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_list_grouper_with_nat   s    +(    R?   R@   RT   Ri   Rq   Rz   R   RŒ   R   R   R‘   R’   R™   Rœ   R   RŸ   R¢   R¥   R¬   R±   R   t   markt   parametrizeR‡   R}   R¹   R½   RÀ   RÄ   RÉ   RË   RÏ   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRA   e   s6   			@	!		 								
				$)		$	'9	t   TestGetGroupc           B   sP   e  Z e j j d  ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(   s   ignore:\nPanel:FutureWarningc      
   C   s†  t  j ƒ  } | j d „  d d ƒ} | j d ƒ } | j d g  | j D] } | j d k rF | ^ qF ƒ } t | | ƒ t i t	 j
 d d d d d d g ƒ d 6d d d	 d d d	 g d
 6d d d d d d g d 6ƒ } | j d ƒ } t | j ƒ d } | j | ƒ }	 | j t | ƒ j ƒ  ƒ }
 | j t t | ƒ ƒ ƒ } t |	 |
 ƒ t |	 | ƒ | j d d
 g ƒ } t | j ƒ d } | j | ƒ }	 | j t | d ƒ j ƒ  | d f ƒ }
 | j t t | d ƒ ƒ | d f ƒ } t |	 |
 ƒ t |	 | ƒ d } t j t d | ƒ | j d ƒ Wd  QXt j t d | ƒ | j d ƒ Wd  QXd } t j t d | ƒ | j d ƒ Wd  QXd  S(   Nc         S   s   |  j  S(   N(   t   month(   RD   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRE   :  s    Rj   t   majori   s   10-Oct-2013s   11-Oct-2013t   DATER/   R0   t   labeli   i   i   i   i   t   VALi    s<   must supply a tuple to get_group with multiple grouping keysR   sH   must supply a same-length tuple to get_group with multiple grouping keyst   baz(   R/   R0   RØ   (   RH   t	   makePanelR   t	   get_groupt   reindext
   major_axisRÓ   R   R   Ra   t   to_datetimeR=   R¨   R   t   to_pydatetimet   strR   R   R   R   (   R   t   wpR%   t   gpRD   R-   R   R   RY   R¶   R9   R:   R$   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_get_group7  sB    	.))c         C   s×   t  j d d d d g ƒ } d d d d g } | j t  j | d | ƒ d	 | ƒ} | j t  j d d ƒ ƒ } t d d g d
 d d g ƒ} t | | ƒ d } t j t	 d | ƒ | j t  j d d ƒ ƒ Wd  QXd  S(   Ni   i   i   i   i    i   i
   i   R„   RP   s"   Interval\(10, 15, closed='right'\)R   (
   Ra   R   R   t   cutRÚ   t   IntervalR   R   R   R   (   R   R„   R•   t   binsR   R,   R-   R$   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_get_group_empty_binse  s    %c         C   s  t  d d	 d
 d g g d d g ƒj } | j d ƒ } t  i d d g d 6d d d g ƒ} | j d ƒ } t | | ƒ t j d d d d g ƒ } t  i g  | D] } | f ^ qŸ d 6ƒ } | j d ƒ } | j d ƒ } t  i | d f | d f g d 6d d d g ƒ} t | | ƒ d  S(   Ni   i   RP   t   idsi    s
   2010-01-01s
   2010-01-02(   i   (   i   i   (   i   (   i   i   (   i   (   i   (   i   (   s
   2010-01-01(   R   Rˆ   R   RÚ   R   Ra   RÝ   (   R   R   t   grR-   R,   t   dtRD   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_get_group_grouped_by_tupleu  s    '%)3c         C   sm   t  j d ƒ } d } t  j | | ƒ } t  j d d ƒ } | j | ƒ } t t | ƒ d  ƒ d  k si t ‚ d  S(   NRZ   R4   (    (    (	   Ra   t   DatetimeIndexR   Re   R   t   nextt   iterRÃ   R"   (   R   RP   R   t   seriesR   R%   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_with_empty…  s    c         C   sÜ   t  j i t d ƒ d 6ƒ } t j | j d ƒ j d ƒ | j d d g ƒ t  j g  d t  j d d d g d d ƒƒ} t j | j d ƒ j	 ƒ  | ƒ t j | j d ƒ j
 ƒ  | ƒ t j | j d ƒ j d	 ƒ | ƒ d  S(
   Nt   abssbabRr   i    i   RP   Rs   Rp   Ro   i   (   Ra   R   R=   RH   R   R   RÚ   RÎ   R   R    R)   t   nth(   R   R   Rº   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_with_single_column  s    /-c         C   s·   t  j d d d d g d d d d g d d d d g g d	 d
 d d d g ƒ} | j d
 d g ƒ } | j d
 d d g ƒ j ƒ  } | j d d k sš t ‚ | j d d k s³ t ‚ d  S(   NR/   R0   R   i   i   RØ   R   i   R   Rž   R    t   thirdR1   (   R/   R0   R   (   R/   RØ   R   (   Ra   R   R¼   R   R#   R8   R"   (   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_gb_key_len_equal_axis_len–  s    (   R?   R@   R   RÐ   t   filterwarningsRâ   Ræ   Rê   Rï   Rò   Rô   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRÒ   5  s   .					t   TestIterationc           B   sb   e  Z d  „  Z d „  Z d „  Z d „  Z e j j d ƒ d „  ƒ Z	 d „  Z
 d „  Z d „  Z RS(	   c         C   s  | j  d g ƒ } | j } | | j k s0 t ‚ xC t j | j ƒ D]/ \ } } | j | d | k j ƒ  sC t ‚ qC W| j  d d g ƒ } | j } | | j k s© t ‚ xn t j | j ƒ D]Z \ } } | j | d | d k j ƒ  sï t ‚ | j | d | d k j ƒ  s¼ t ‚ q¼ Wd  S(   NR   R   i    i   (   R   R¨   R"   R   t	   iteritemsR8   t   all(   R   R   R%   R¨   t   kt   v(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groups©  s    	'	'c         C   s:   | j  d „  d „  g ƒ } x | j j d D] } q, Wd  S(   Nc         S   s
   |  j  ƒ  S(   N(   t   weekday(   RD   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRE   ¼  s    c         S   s   |  j  S(   N(   t   year(   RD   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRE   ¼  s    i    (   R   R   t	   groupings(   R   t   tsframeR%   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_grouping_is_iterable¹  s    c         C   sA  t  t j d ƒ ƒ } t j d d d d d d g ƒ } t j d d d d d d g ƒ } | j | | g ƒ } t | ƒ } d d | d d g f d d | d g f d d | d	 g f d d | d
 d g f g } xj t | ƒ D]\ \ } \ \ } }	 }
 | | \ } } } | | k st ‚ | |	 k s,t ‚ t |
 | ƒ qÝ Wd  S(   Ni   Rr   Rs   t   1t   2i    i   i   i   i   i   (	   R   R+   RF   RÅ   R   R=   t	   enumerateR"   R   (   R   Rp   t   k1t   k2R%   t   iteratedR-   t   iR1   R2   R3   t   e1t   e2t   e3(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_multi_iterÂ  s    !!)/%c      	   C   s€  t  j d d d d d d g ƒ } t  j d d d d d d g ƒ } t i t  j j d ƒ d 6t  j j d ƒ d 6| d 6| d	 6d
 d d d d d d g ƒ} | j d d	 g ƒ } t | ƒ } | j } d d | j | d g f d d | j | d d g f d d | j | d d g f d d | j | d g f g } xj t	 | ƒ D]\ \ }	 \ \ }
 } } | |	 \ } } } | |
 k s‚t
 ‚ | | k s”t
 ‚ t | | ƒ qEWt  j d d d d d d g ƒ | d <t  j d d d d d d g ƒ | d	 <| j d d	 g ƒ } d „  | Dƒ } t | ƒ d k s,t
 ‚ | j d d d g ƒ j ƒ  } | j j d d d d ƒ } x | D] \ } } qlWd  S(   NRs   Rr   R  R  i   t   v1t   v2R  R  RP   R1   R2   R3   t   fourt   fivet   sixi   i   i   i    i   i   c         S   s   i  |  ] \ } } | | “ q S(    (    (   t   .0RY   Rá   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pys
   <dictcomp>í  s   	 R   R   R   Rj   R^   (   i   i   (   R+   RÅ   R   R6   R7   R   R=   RP   R8   R  R"   R   RO   R(   Rˆ   (   R   t   three_groupR  R  R   R%   R  Rw   R-   R  R1   R2   R3   R  R	  R
  R¨   t   three_levelsRY   t   group(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_multi_iter_frameÒ  s6    !!	 %%%s   ignore:\nPanel:FutureWarningc   	      C   sª   t  j ƒ  } | j d „  d „  g d d ƒ} xv | D]n \ \ } } } g  | j D]- } | j | k rP | j ƒ  | k rP | ^ qP } | j d | ƒ } t | | ƒ q4 Wd  S(   Nc         S   s   |  j  S(   N(   RÓ   (   RD   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRE   ù  s    c         S   s
   |  j  ƒ  S(   N(   Rü   (   RD   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRE   ù  s    Rj   i   RÔ   (   RH   RÙ   R   RÜ   RÓ   Rü   RÛ   R   (	   R   Rà   R%   RÓ   t   wdR  RD   t   exp_axisR-   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_multi_iter_panelö  s    	-c         C   sÈ   t  t | j d ƒ ƒ ƒ t  t | j d d g ƒ ƒ ƒ t  t | d j | d ƒ ƒ ƒ t  t | d j | d | d g ƒ ƒ ƒ t  t | j d ƒ d ƒ ƒ t  t | j d d g ƒ d ƒ ƒ d  S(   NR   R   R   (   t   dictRí   R   (   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_dictify  s    !+c         C   sž  t  j i d d g d 6d d g d 6d t  j d d g ƒ ƒ} | j t  j d	 d
 ƒ d g ƒ } t | j ƒ d k sz t ‚ | j d k s t ‚ t  j	 d ƒ d f | j k s³ t ‚ t  j	 d ƒ d f | j k s× t ‚ | j
 t  j	 d ƒ d f ƒ } t j | | j d g d  d  … f ƒ | j
 t  j	 d ƒ d f ƒ } t j | | j d g d  d  … f ƒ t  j i d d d g d 6d d d g d 6d t  j d d d g ƒ ƒ} | j t  j d	 d
 ƒ d g ƒ } t | j ƒ d k sât ‚ | j d k s÷t ‚ t  j	 d ƒ d f | j k st ‚ t  j	 d ƒ d f | j k s?t ‚ | j
 t  j	 d ƒ d f ƒ } t j | | j d d g d  d  … f ƒ | j
 t  j	 d ƒ d f ƒ } t j | | j d g d  d  … f ƒ t  j i d d d g d 6d d d g d 6d t  j d d d g ƒ ƒ} | j t  j d	 d
 ƒ d g ƒ } t | j ƒ d k sMt ‚ | j d k sbt ‚ t  j	 d ƒ d f | j k s†t ‚ t  j	 d ƒ d f | j k sªt ‚ t  j	 d ƒ d f | j k sÎt ‚ | j
 t  j	 d ƒ d f ƒ } t j | | j d g d  d  … f ƒ | j
 t  j	 d ƒ d f ƒ } t j | | j d g d  d  … f ƒ | j
 t  j	 d ƒ d f ƒ } t j | | j d g d  d  … f ƒ d  S(   Nt   startt   eventiÒ  i.  t   changeRP   s
   2014-09-10s
   2013-10-10RZ   Rn   i   s
   2014-09-30s
   2013-10-31i    i   i£#  s
   2014-09-15s
   2014-08-05i   s
   2014-08-31(   Ra   R   Rë   R   Re   RO   R¨   R"   t   ngroupsR   RÚ   RH   R   RÎ   (   R   R   R%   t   res(    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_groupby_with_small_elem  sR    !$$&&!$$)&!$$$&&c         C   s„   t  j t d ƒ t d ƒ g ƒ } t d d d g g d | ƒ} | j | d ƒ } | j j d	 j ƒ  } d
 } | | k s€ t ‚ d  S(   Nt   AABt   abai   i   i   R   R   Rr   i    s   Grouping(('A', 'a'))(   R   Rr   (	   R   R®   R=   R   R   R   Rþ   t   __repr__R"   (   R   t   miR   Rè   R,   R-   (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   test_grouping_string_repr>  s    !(   R?   R@   Rû   R   R  R  R   RÐ   Rõ   R  R  R   R%  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyRö   §  s   					$		3(    t   __doc__t   numpyR+   R   t   pandas.compatR    R   R–   Ra   R   R   R   R   R   R   R   R	   t   pandas.core.groupby.grouperR
   t   pandas.util.testingt   utilt   testingRH   R   R   R   R   t   objectR   RA   RÒ   Rö   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/groupby/test_grouping.pyt   <module>   s   :"Mÿ Ñr