ó
šxŠ\c           @   sô  d  Z  d d l Z d d l Z d d l m Z d d l m 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 d d l m Z d d l m Z d d	 l m Z d d
 l m Z m Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 d  „  Z2 d! „  Z3 d" „  Z4 d# „  Z5 d$ „  Z6 e j7 j8 d% d& dv d' „  f d( dw d) „  f d* dx d+ „  f d* dy d- „  f g ƒ d. „  ƒ Z9 e j7 j8 d/ d& d( g ƒ e j7 j8 d0 e: e; g ƒ e j7 j8 d1 i d2 g d3 d4 6e j< d5 6e j e j< g d3 d6 d5 ƒf i d2 g d3 d7 g d8 d4 6d9 g d9 e j< g d9 g d: d5 6i d; d< d= g e j< g d> d; d< g d& e: f 6d; d< d= e j< d? d@ dA dB dC dD d; d< g d& e; f 6d; dE d< g e j< g d> d; dE g d( e: f 6d; dE d< e j< dF dG dH dI dJ d= d; dE g d( e; f 6f g ƒ dK „  ƒ ƒ ƒ Z= e j7 j8 d% d& dz dL „  f d( d{ dM „  f d* d| dN „  f d* d} dO „  f g ƒ dP „  ƒ Z> dQ „  Z? e j7 j8 dR d7 e j d, d, d, g d6 d7 ƒe j f d7 dS g e j i d, d, d, g d7 6d, d, d, g dS 6ƒ e j f g ƒ e j7 j8 dT dU dV dW g ƒ dX „  ƒ ƒ Z@ e j7 j8 dY e; e: g ƒ e j7 j8 dZ e; e: g ƒ e j7 j8 d[ d~ d d€ g ƒ e j7 j8 d` da d e j< e j< db db db dc dc dc g f da d, e j< e j< db db e j< dc dc e j< g f dd d db db db dc dc dc e j< e j< g f dd d, e j< db db e j< dc dc e j< e j< g f g ƒ de „  ƒ ƒ ƒ ƒ ZB e j7 j8 df da dd g ƒ dg „  ƒ ZC e j7 j8 dh e; e: g ƒ e j7 j8 di d e jD dj dk e j7 jE dl dm ƒ ƒg ƒ e j7 j8 dn d d‚ dƒ d„ d… d† d‡ dˆ g ƒ do „  ƒ ƒ ƒ ZF e j7 j8 dp e jG e jH g ƒ dq „  ƒ ZI dr „  ZJ e j7 j8 dp eK eL e jK e jL ds dt g ƒ du „  ƒ ZM d S(‰   s    test with the .transform iÿÿÿÿN(   t   groupby(   t   StringIO(   t   ensure_platform_intt   is_timedelta64_dtype(   t	   DataFramet
   MultiIndext   Seriest	   Timestampt   concatt
   date_range(   t   option_context(   t	   DataError(   t   testing(   t   assert_frame_equalt   assert_series_equalc         C   s)   t  j |  | ƒ d k  j ƒ  s% t ‚ d  S(   Ngê-™—q=(   t   npt   abst   allt   AssertionError(   t   at   b(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   assert_fp_equal   s    c       
   C   s«  t  t j d ƒ d d t j d ƒ ƒ}  t j d ƒ } t j j | ƒ |  j | ƒ }  |  j d „  ƒ } | j d „  ƒ } | d d k s t ‚ t	 t j d d	 d
 ƒj
 d d ƒ d d d g d d d d g ƒ} d d d g } | j ƒ  j | ƒ j d „  ƒ j | ƒ j ƒ  } | j | ƒ j d „  ƒ j | ƒ j ƒ  } t | | ƒ d „  } t	 t j j d d ƒ d d d d d d g d d d d d d g ƒ}	 d d d d d g } |	 j | ƒ j | ƒ j | ƒ j ƒ  } |	 j | ƒ j | ƒ j | ƒ j ƒ  } t | | ƒ t j ƒ  } | j t j d d  ƒ ƒ }
 |
 j d! „  ƒ t	 i t d d" ƒ d 6t d ƒ d 6ƒ } | j d ƒ j t ƒ } t	 i t d ƒ d 6ƒ } t j | | ƒ d  S(#   Ni	   i   t   indexc         S   s   |  d S(   Ni   (    (   t   x(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   <lambda>   s    c         S   s   |  |  j  ƒ  S(   N(   t   sum(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR       s    i   i   i   t   dtypet   int64i   t   columnsR   R   i    i   c         S   s   |  |  j  ƒ  S(   N(   t   mean(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   +   s    c         S   s   |  |  j  ƒ  S(   N(   R   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   ,   s    c         S   s   |  |  j  ƒ  S(   N(   R   (   t   arr(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   demean0   s    i   t   ct   dt   et   Joet   Stevet   West   Jimt   Travist   onet   twot   freqt   Mc         S   s   |  d S(   Ni   (    (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   >   s    i
   (   R   R   t   aranget   randomt   shufflet   reindexR    t	   transformR   R   t   reshapet
   sort_indexR   R   t   randnt   applyt   tmt   makeTimeDataFramet   pdt   Groupert   ranget   max(   t   dataR   t   groupedt   transformedt   dft   keyt   expectedt   resultR   t   peoplet   g(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform   s>    (*	'')c          C   s  t  i t j d ƒ d d 6t j j d ƒ d 6ƒ }  |  j d ƒ d } t j | j ƒ  j t	 | j
 ƒ  j ƒ ƒ } t j | d |  j d d ƒ} | j t j ƒ } t | | ƒ | j d ƒ } t | | ƒ t j  i d d	 d	 d g d
 6d d d d g d 6t j d d ƒ d 6d	 d d d g d 6d d
 d d d g ƒ}  |  j d
 ƒ j d ƒ } t j d ƒ t j d ƒ t j d ƒ t j d ƒ g } t j  i d d d d g d 6| d 6d	 d d d g d 6d d d d g ƒ} t | | ƒ |  j d
 ƒ d d g j d ƒ } | d d g } t | | ƒ t j  d	 d d g d d d g g d d d d g ƒ}  |  j d ƒ j d ƒ } |  j d d d	 ƒ} t | | ƒ d  S(   Ni † i   t   idt   valR   t   nameR   i    i   t   groupinggš™™™™™ñ?gÍÌÌÌÌÌ @gÍÌÌÌÌÌ@g      @t   fs   2014-1-1s   2014-1-4R!   i   i   t   iR   t   firsts   2014-1-2i   i   RC   R   t   axis(   R   R   R,   R-   R3   R    t   repeatR   t   valuesR   t   countR7   R   R   R0   R   R	   R   R   t   drop(   R>   t   grpRN   R@   RA   t   dates(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_fastG   s:    /"6c   
      C   sá  | j  d „  ƒ } | j t j ƒ } t j | j | j ƒ x3 | D]+ \ } } t | j | j ƒ | j ƒ  ƒ qA W|  j  d „  ƒ } | j t j ƒ } t j | j |  j ƒ xX | D]P \ } } | j ƒ  } | j | j ƒ } x# |  D] } t | | | | ƒ qâ Wq± W|  j  i d d 6d d 6d d 6d d 6d	 d ƒ} | j t j ƒ } t j | j |  j ƒ t j | j	 |  j	 ƒ xf | D]^ \ } } | j d ƒ } | j d
 | j	 ƒ } x+ | j D]  }	 t | j
 |	 ƒ | |	 ƒ qµWq{Wd  S(   Nc         S   s   |  j  S(   N(   t   month(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   t   s    c         S   s   |  j  S(   N(   RT   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   {   s    i    t   At   Bi   t   Ct   DRL   R   (   R    R0   R   R   R5   t   assert_index_equalR   R   R/   R   t   xs(
   t   tsframet   tsR<   RA   t   _t   gpt   aggedt   rest   colt   idx(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_broadcasts   s.    #(	c   	      C   sÅ  |  j  d d !} t | j ƒ } t | j ƒ } t t j j | | ƒ d | j d | j d d ƒ} | } | j d „  ƒ } | | j	 d ƒ } | j
 d	 „  ƒ } t | | ƒ | j } | j d
 „  d d ƒ} | | j	 d ƒ } | j
 d „  ƒ } t | | ƒ | j  d d g t t d t | ƒ ƒ ƒ } | j d „  ƒ } | | j	 d ƒ } | j
 d „  ƒ } t | | ƒ | j } | j d „  d d ƒ} | | j	 d ƒ } | j
 d „  ƒ } t | | ƒ d  S(   Ni    i   R   R   R   t   float64c         S   s
   |  j  ƒ  S(   N(   t   weekday(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   ¡   s    R   c         S   s   |  |  j  ƒ  S(   N(   R   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   £   s    c         S   s
   |  j  ƒ  S(   N(   Re   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   §   s    RL   i   c         S   s   |  j  |  j d ƒ j  S(   Ni   (   t   TR   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   ©   s    i   c         S   s
   |  j  ƒ  S(   N(   Re   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   ®   s    c         S   s   |  |  j  ƒ  S(   N(   R   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   °   s    c         S   s
   |  j  ƒ  S(   N(   Re   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   ´   s    c         S   s   |  j  |  j d ƒ j  S(   Ni   (   Rf   R   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   ¶   s    (   t   iloct   lenR   R   R   R   R-   R3   R    R0   R4   R   Rf   t   listR9   (	   R[   t   baset   rR    t   tsoR\   R<   RA   R@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_axis‘   s6    				,	c          C   s_   t  d d g d d g g ƒ }  |  j d ƒ j d ƒ } t  d g d g g ƒ } t | | ƒ d  S(   Ni   i   i   R   g      ø?(   R   R    R0   R   (   R>   RA   R@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_dtypeº   s    c          C   s~   t  t d t d ƒ d t j d ƒ ƒ ƒ }  |  j d ƒ d j d „  ƒ } t t j d d d d ƒd	 d ƒ} t | | ƒ d  S(
   NRU   t   20130101RV   i   c         S   s   |  j  d t ƒ S(   Nt	   ascending(   t   rankt   False(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   È   s    i    t   stepiÿÿÿÿRG   (	   R   t   dictR   R   R,   R    R0   R   R   (   R>   RA   R@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_bugÃ   s
    *$c          C   sÇ   t  j t t g d d ƒ}  t  j i d d g d 6d d g d 6ƒ } | j d ƒ j j d „  ƒ } t | |  ƒ t  j i d d g d 6d d g d 6ƒ } | j d ƒ j j d	 „  ƒ } t | |  ƒ d  S(
   NRG   RU   gš™™™™™ñ?gš™™™™™@i   i   RV   c         S   s   t  S(   N(   t   True(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   Ó   s    c         S   s   t  S(   N(   Rv   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   ×   s    (   R7   R   Rv   R   R    RU   R0   R   (   R@   R>   RA   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt!   test_transform_numeric_to_booleanÍ   s    ))c             sÊ   t  t d t d ƒ d t j d ƒ ƒ ƒ }  t j t d ƒ t d ƒ g d d d ƒ} |  d d ‰  |  j d ƒ d j ‡  f d †  ƒ ˆ  } t	 | | ƒ |  j d ƒ d j d „  ƒ } t	 | | ƒ d  S(	   NRU   Ro   RV   i   RG   i    c            s   |  j  ƒ  |  j ƒ  ˆ  S(   N(   R:   t   min(   R   (   t	   base_time(    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   å   s    c         S   s   |  j  ƒ  |  j ƒ  S(   N(   R:   Rx   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   é   s    (
   R   Rt   R   R   R,   R7   R   R    R0   R   (   R>   R@   RA   (    (   Ry   sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt$   test_transform_datetime_to_timedeltaÛ   s    *&c          C   sâ   t  i d d 6t d d d d d ƒd 6ƒ }  |  j d ƒ j j d	 „  ƒ } t d
 d g d d ƒ} t | | ƒ t  i d d 6t d d d d d ƒd 6ƒ }  |  j d ƒ j j d „  ƒ } t d d g d d ƒ} t | | ƒ d  S(   Ni   R   s
   2015-01-01t   periodsi   R*   RX   R   c         S   s   |  j  j |  j  j j ƒ  S(   N(   t   dtt	   dayofweekR   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   ó   s    g      à¿g      à?RG   c         S   s   |  j  j |  j  j j ƒ  S(   N(   R|   R}   Rx   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   ü   s    i    (   R   R	   R    R   R0   R   R   (   R>   RA   R@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt"   test_transform_datetime_to_numericí   s    &&c          C   s¨   d }  t  j t |  ƒ d d d d g d d g ƒ} | j d ƒ d j d	 „  ƒ } t | j ƒ sg t ‚ | d d g j d ƒ j d
 „  ƒ } t | j j ƒ s¤ t ‚ d  S(   NsE  
    idx     A         ID3              DATETIME
    0   B-028  b76cd912ff "2014-10-08 13:43:27"
    1   B-054  4a57ed0b02 "2014-10-08 14:26:19"
    2   B-076  1a682034f8 "2014-10-08 14:29:01"
    3   B-023  b76cd912ff "2014-10-08 18:39:34"
    4   B-023  f88g8d7sds "2014-10-08 18:40:18"
    5   B-033  b76cd912ff "2014-10-08 18:44:30"
    6   B-032  b76cd912ff "2014-10-08 18:46:00"
    7   B-037  b76cd912ff "2014-10-08 18:52:15"
    8   B-046  db959faf02 "2014-10-08 18:59:59"
    9   B-053  b76cd912ff "2014-10-08 19:17:48"
    10  B-065  b76cd912ff "2014-10-08 19:21:38"
    t   seps   \s+t	   index_coli    t   parse_datest   DATETIMEt   ID3c         S   s
   |  j  ƒ  S(   N(   t   diff(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR     s    c         S   s
   |  j  ƒ  S(   N(   R„   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR     s    (	   R7   t   read_csvR   R    R0   R   R   R   R‚   (   R;   R>   RA   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_casting  s    c         C   s?   |  j  d „  d „  g ƒ } | j d „  ƒ | j t j ƒ d  S(   Nc         S   s   |  j  S(   N(   t   year(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR     s    c         S   s   |  j  S(   N(   RT   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR     s    c         S   s   |  d S(   Ni   (    (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR      s    (   R    R0   R   R   (   R\   R<   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_multiple  s    c         C   sx   |  d  d  d … j  |  j ƒ } | j d „  ƒ } | j d d ƒ } d „  } | j d „  ƒ j | ƒ } t | | ƒ d  S(   Ni   c         S   s   |  j  S(   N(   RT   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   '  s    t   methodt   padc         S   s   |  j  d d ƒ S(   NR‰   RŠ   (   t   fillna(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   *  s    c         S   s   |  j  S(   N(   RT   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   +  s    (   R/   R   R    R‹   R0   R   (   R[   R>   R<   t   filledt   fillitR@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_dispatch_transform$  s    	c         C   sb   d „  } |  j  d ƒ d j | ƒ } |  d d g } | j  |  d ƒ j | ƒ } t | | ƒ d  S(   Nc         S   s
   |  j  ƒ  S(   N(   R   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   0  s    RU   RW   RX   (   RW   RX   (   R    R0   R   (   R>   RI   RA   t	   selectionR@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_select_columns/  s
    	c         C   s   i  } |  j  d ƒ } | d j t j ƒ | d <| d j t j ƒ | d <t | ƒ } |  j  d ƒ j t j ƒ } t | | ƒ d  S(   NRU   RW   RX   (   R    R0   R   R   R   R   (   R>   R@   R<   RA   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_exclude_nuisance9  s    c         C   sŒ   |  j  d ƒ j d ƒ } |  j  d ƒ j t j ƒ } t | | ƒ |  j  d ƒ d j d ƒ } |  j  d ƒ d j t j ƒ } t | | ƒ d  S(   NRU   R   RW   (   R    R0   R   R   R   R   (   R>   RA   R@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_function_aliasesG  s    c          C   sª   t  j i t j d d d g d 6t  j d d ƒ d 6ƒ }  |  j d ƒ d j d ƒ } t  j t  j d ƒ t  j d ƒ t  j d ƒ g } t  j	 | d	 d ƒ} t
 | | ƒ d  S(
   Ni   i   RH   s   2014-1-1s   2014-1-4R!   RK   s   2014-1-2RG   (   R7   R   R   t   nanR	   R    R0   t   NaTR   R   R   (   R>   RA   RR   R@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_series_fast_transform_dateQ  s    c          C   sé   t  j i d d d d g d 6d d d t j g d 6ƒ }  t  j d g d ƒ } d „  } |  j d ƒ j t ƒ d |  j d ƒ d j t ƒ |  j d ƒ j | ƒ d |  j d ƒ d j | ƒ g } x! | D] } t | | d	 t	 ƒqÈ Wd  S(
   Ni   i   t   col1i   t   col2g      @i   c         S   s   t  j |  ƒ S(   N(   R   t   nansum(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   nsuma  s    t   check_names(
   R7   R   R   R“   R   R    R0   R   R   Rr   (   R>   R@   R™   t   resultsRA   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_length\  s    8	c          C   sn   t  j t d d d g d d d g ƒ ƒ }  |  j d ƒ } | j t j ƒ } | j d „  ƒ } t | | ƒ d  S(   NRU   R   RV   i    i   c         S   s   t  j |  ƒ S(   N(   R   R   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   u  s    (   R7   R   Rt   R    R0   R   R   R   (   R>   RC   R@   RA   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_coercionl  s
    *c          C   s  t  t d d d d d d d g d t d d d ƒd t d d d d d d g d d ƒd	 d
 ƒ ƒ }  t j d d ƒ   |  j d ƒ j d „  ƒ } Wd  QXt  t d t j d t d d d d d d g d d ƒƒ ƒ } t | | ƒ t  t d d d d d d d g d d d d d d d d d g d	 d
 ƒ ƒ }  t j d d ƒ   |  j d ƒ j d „  ƒ } Wd  QXt  t d t j d d d d d d d g ƒ ƒ } t | | ƒ t d d d d d d g ƒ } t  t d d d d d d d g d d d | d	 d
 ƒ ƒ }  t j d d ƒ   |  j d ƒ j d „  ƒ } Wd  QX| j	 d d !} | | j
 ƒ  | j ƒ  } | j	 d d !} | | j
 ƒ  | j ƒ  } t  t d t j d t | | g ƒ ƒ ƒ } t | | ƒ |  j d ƒ j d „  ƒ } t  t d d d d d d d d d g ƒ ƒ } t | | ƒ d  S(   NRU   i   i   RV   R   Rd   RW   i   RX   t   fooR   t   ignorec         S   s   |  |  j  ƒ  |  j ƒ  S(   N(   R   t   std(   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   ƒ  s    iÿÿÿÿi    c         S   s   |  |  j  ƒ  |  j ƒ  S(   N(   R   R    (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR     s    i   i
   i   c         S   s   |  |  j  ƒ  |  j ƒ  S(   N(   R   R    (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   –  s    i   c         S   s   |  d d S(   Ni   (    (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR      s    (   R   Rt   R   R   t   errstateR    R0   R“   R   Rg   R   R    R   (   R>   RA   R@   t   st   s1t   s2(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_groupby_transform_with_inty  s<    3-''$09*-c          C   sª   t  j i t d ƒ d 6d d d d t j d d d d d g
 d 6ƒ }  |  j |  j ƒ d j t ƒ } t  j	 d	 d	 d
 d t j d d d d d g
 d d ƒ} t
 | | ƒ d  S(   Ni
   R   i   i   i   i   i   R   g      ð?g       @g      @g      @g      "@RG   (   R7   R   R9   R   R“   R    R   R0   R:   R   R   (   R>   RA   R@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt%   test_groupby_transform_with_nan_group¥  s    .-	c       	   C   s'  t  j d d d d d d g d d d d d d g g ƒ }  t i d d d d d d g d 6t j d d	 d
 g d ƒ d
 6t j d d ƒ d 6d |  ƒ} d „  } | j d
 ƒ } | j | ƒ } | d j t j	 k sÖ t
 ‚ t d d  ƒ < x4 | D], \ } } | | ƒ } t | | j | ƒ qí WWd  QXd  S(   Ni    i   i   i   g      ð?g       @R!   R   R   R    g      @t   vR   c         S   s   |  d d |  d <|  d  S(   NR!   i   RC   i   (    (   t   group(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyRI   ¶  s    s   mode.chained_assignment(   R   t   from_arraysR   R   t   tileR,   R    R4   R   Rd   R   R
   t   NoneR   t   loc(   R   R>   RI   R<   RA   R?   R¨   R`   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_mixed_type¯  s    9	c         C   s©   t  } t j d g d g d g d g g d | ƒ} t j | ƒ } t j d d d d g d t j ƒ} |  | | | | ƒ t j | | ƒ | d d … d f d t  ƒd S(	   s  
    Check a group transform that executes a cumulative function.

    Parameters
    ----------
    pd_op : callable
        The pandas cumulative function.
    np_op : callable
        The analogous one in NumPy.
    dtype : type
        The specified dtype of the data.
    i   i   i   i   R   i    Nt   check_dtype(   Rr   R   t   arrayt
   zeros_likeR   R5   t   assert_numpy_array_equal(   t   pd_opt   np_opR   t   is_datetimelikeR;   t   anst   labels(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt(   _check_cython_group_transform_cumulativeÆ  s    -$%c         C   s9   t  j |  ƒ j } t j t  j } } t | | | ƒ d  S(   N(   R   R   t   typeR    t   group_cumsumt   cumsumR·   (   t   any_real_dtypeR   R²   R³   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt"   test_cython_group_transform_cumsumà  s    c          C   s0   t  j }  t j t  j } } t | | |  ƒ d  S(   N(   R   Rd   R    t   group_cumprod_float64t
   cumproductR·   (   R   R²   R³   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt#   test_cython_group_transform_cumprodç  s    	c          C   sT  t  }  t j d d d d d g d t j ƒ} t j d g d g d g t j g d g g d d ƒ} t j | ƒ } | j t j ƒ t j | | | |  ƒ t j d d d t j d	 g d d ƒ} t	 j
 | d  d  … d f | ƒ t j | ƒ } | j t j ƒ t j | | | |  ƒ t j d d d t j d
 g d d ƒ} t	 j
 | d  d  … d f | ƒ t }  t j t j d d ƒ g d d d ƒd  d  … d  f } t j | d d ƒ} t j | | j d ƒ | |  ƒ t j t j d d ƒ t j d d ƒ t j d d ƒ t j d d ƒ t j d d ƒ g ƒ } t	 j
 | d  d  … d f j d ƒ | ƒ d  S(   Ni    R   i   i   i   i   Rd   i   i   i
   t   nsi   s   m8[ns]R   (   Rr   R   R¯   R   R“   R°   t   fillR    R½   R5   R±   R¹   Rv   t   timedelta64R«   t   view(   R´   R¶   R;   t   actualR@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt!   test_cython_group_transform_algosî  s,    '6' ' 8's   op, args, targopt   cumprodc         C   s
   |  j  ƒ  S(   N(   RÆ   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR     s    Rº   c         C   s
   |  j  ƒ  S(   N(   Rº   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR     s    t   shiftc         C   s   |  j  d ƒ S(   Niÿÿÿÿ(   RÇ   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR     s    i   c         C   s
   |  j  ƒ  S(   N(   RÇ   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR     s    c         C   sÛ   t  t j j d ƒ ƒ } | j ƒ  } t j | j d d +t j j d d d d ƒj t	 ƒ } xy | | g D]k } | j
 | ƒ j | ƒ } t j | | j
 | ƒ j |  | Œ ƒ t j | t | j
 | ƒ |  ƒ | Œ  ƒ qh Wd  S(   Niè  i   i
   i    i2   t   size(   R   R   R-   R3   t   copyR“   Rg   t   randintt   astypet   floatR    R0   R5   R   t   getattr(   t   opt   argst   targopR¢   t	   s_missingR¶   R;   R@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_cython_transform_series  s    $RÎ   t   skipnas
   input, expR   i
   R?   t   valueRG   R   i   i   i   g      @g      "@g      ;@i   g     @T@g     `n@g     È†@g     ¡@g     ¡¹@g    À8Ó@g      @g      (@g      .@g      2@g      5@g      8@c         C   s‚   t  j | ƒ } | j d ƒ d j |  d | ƒ} t | t ƒ rS | |  | f } n | } t  j | d d ƒ} t j | | ƒ d  S(   NR?   RÔ   RÓ   RG   (	   R7   R   R    R0   t
   isinstanceRt   R   R5   R   (   RÎ   RÓ   t   inputt   expR>   RA   R@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_groupby_cum_skipna'  s    "c         C   s
   |  j  ƒ  S(   N(   RÆ   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   C  s    c         C   s
   |  j  ƒ  S(   N(   Rº   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   D  s    c         C   s   |  j  d ƒ S(   Niÿÿÿÿ(   RÇ   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   E  s    c         C   s
   |  j  ƒ  S(   N(   RÇ   (   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   F  s    c         C   s›  t  t j j d ƒ ƒ } | j ƒ  } t j | j d d +t j j d d d d ƒj t	 ƒ } t
 d ƒ } | } t j | d <t i | d	 6| d
 6d d d d d g d d 6t j d d d ƒd 6t j d d d d d ƒd 6| d d 6| d d 6d d	 d
 d d d d d g ƒ} | d j d ƒ | d <| j ƒ  }	 t j j t d ƒ t d ƒ g ƒ |	 _ x8| |	 g D]*} x!t d | ƒ t d d ƒ t d d ƒ g D]õ}
 | j |
   } |  d k rÈ| j ƒ  n  |  d k r-d |
 k r-| d g j | ƒ } | d	 d
 g j | ƒ } t j | | g d d ƒ} n | j | ƒ } | j d d ƒ } t j | | j |  | Œ j d d ƒ ƒ t j | t | |  ƒ | Œ  j d d ƒ ƒ xë | D]ã } | d  k r,|  d k r,d } t j t d | ƒ | | j |  ƒ Wd  QXt j t d | ƒ t | | |  ƒ ƒ  Wd  QXq¨| | j | ƒ } | | _  t j! | | | j |  | Œ ƒ t j! | t | | |  ƒ | Œ  ƒ q¨WqšWqiWd  S(!   Niè  i   i
   i    i2   RÈ   t   qwertyuiopasdfghjklzi   RÌ   t   float_missingi   iÈ   t   ints   1990-1-1R{   t   datetimeR*   R¢   t	   timedeltat   stringt   string_missingR   t   categoryt   catid   t   byt   levelRÇ   RL   s   No numeric types to aggregatet   match(   RÌ   RÛ   RÚ   ("   R   R   R-   R3   RÉ   R“   Rg   RÊ   RË   RÌ   Ri   R   R7   R	   t   timedelta_rangeR   t   from_productR9   R   Rt   R    t   _set_group_selectionR4   R   R2   R5   R   R0   RÍ   t   pytestt   raisesR   RG   R   (   RÎ   RÏ   RÐ   R¢   RÑ   R¶   t   stringst   strings_missingR>   t   df2t	   gb_targett   gbRJ   RI   R@   R    t   msg(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_cython_transform_frameA  sf    $
'1	
"			c          C   s·   t  j j d d d d d d d d d d d d g ƒ }  t  j t j j d d	 d ƒ d |  d d d d d g ƒ} d } t j t	 d | ƒ' | j
 d d d d ƒ j d „  ƒ Wd  QXd  S(    Nt   synRU   t   mist   nonRW   Rf   t   Gi   i
   i   i   R   R   s5   transform must return a scalar value for each group.*Rä   RL   Rã   c         S   s   |  j  |  j d d ƒ d d ƒS(   NRL   i   i    (   t   divR   (   t   z(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyR   œ  s    (   Rñ   RU   (   Rò   RU   (   Ró   RU   (   Rñ   RW   (   Rò   RW   (   Ró   RW   (   Rñ   Rf   (   Rò   Rf   (   Ró   Rf   (   Rñ   Rô   (   Rò   Rô   (   Ró   Rô   (   i   i   (   R7   R   t   from_tuplesR   R   R-   RÊ   Rè   Ré   t
   ValueErrorR    R0   (   t   colsR>   Rï   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt$   test_transform_with_non_scalar_groupŽ  s    				s   cols,exp,comp_funcR    t   agg_funcRO   Rq   RÈ   c         C   s¸   | d k r+ t  |  t ƒ r+ t j d ƒ n  t j i t j d d d ƒd 6t d ƒ d 6t d d	 ƒ d
 6ƒ } | j d ƒ |  j	 | ƒ } | d k r§ | j
 d ƒ } n  | | | ƒ d  S(   NRÈ   s6   'size' transformation not supported with NDFrameGroupys
   2018-01-01R{   i   R   R   i   i
   R    Rq   RÌ   (   RÕ   Ri   Rè   t   xfailR7   R   R	   R9   R    R0   RË   (   Rù   R×   t	   comp_funcRû   R>   RA   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_transform_numeric_retŸ  s    t   mix_groupingst	   as_seriess	   val1,val2Rž   t   barg      ð?g       @s   fill_method,limit,exp_valst   ffillt   val1t   val2t   bfillc         C   s¶  t  j t  j | t  j t  j | t  j t  j g } t | ƒ } xL t | ƒ D]> \ }	 }
 |
 d k rn | | |	 <qI |
 d k rI | | |	 <qI qI W|  rË d d g t | ƒ } d „  } | | ƒ } | | ƒ } n8 d g t | ƒ d g t | ƒ } | d } | d } t i | d 6| d 6ƒ } | rjt | j d ƒ d | ƒ d	 | ƒ } t | d
 d ƒ} t	 | | ƒ nH t | j d ƒ | ƒ d	 | ƒ } t i | d 6| d 6ƒ } t
 | | ƒ d  S(   NR  R  R   R   c         S   s1   t  ƒ  } x! |  D] } | j | | g ƒ q W| S(   N(   Ri   t   extend(   t   list_objt   tempR   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt
   interweave×  s    	i   R?   RF   t   limitRG   (   R   R“   Ri   t	   enumerateRh   R   RÍ   R    R   R   R   (   Rÿ   R   R  R  t   fill_methodR
  t   exp_valst   valst	   _exp_valsR   t   exp_valt   keysR	  R>   RA   R×   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_group_fill_methods¹  s0    0	$

"!R  c         C   s¢   d g d } t  j g d d g d } |  d k rJ | d  d  d … } n  t j i | d 6| d 6ƒ } | j ƒ  } t | j d ƒ |  ƒ ƒ  } t j | | ƒ d  S(	   Ni    i   i
   i   R  iÿÿÿÿR   t   y(	   R   R“   R7   R   RÉ   RÍ   R    R5   R   (   R  R   R  R>   R@   RA   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_pad_stable_sortingñ  s    t   test_seriesR*   RX   t   markst   reasons7   GH#23918 before method uses freq in vectorized approachs   periods,fill_method,limitc      
   C   sX  d t  j t  j t  j d d d d t  j d g
 } d d g } t  j | t | ƒ ƒ } t i | d 6| d d	 6ƒ } t | j d ƒ | ƒ d
 | ƒ }	 |	 j d ƒ }
 |
 d	 j |
 d	 j | ƒ d } |  r| j d ƒ d	 j	 d | d | d
 | d | ƒ } t
 j | | ƒ nF | j d ƒ j	 d | d | d
 | d | ƒ } t
 j | | j d	 ƒ ƒ d  S(   Ni   i   i   i   i
   R   R   R?   R  R
  R{   R  R*   (   R   R“   RM   Rh   R   RÍ   R    t   objRÇ   t
   pct_changeR5   R   R   t   to_frame(   R  R*   R{   R  R
  R  R  t   key_vR>   t   df_gRQ   R@   RA   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_pct_change  s    0!"t   funcc         C   sŠ   t  j d t g t j t g d t g g d d d g ƒ} t  j t t j t g d d ƒ} | j d ƒ d j |  ƒ } t j	 | | ƒ d  S(   NRž   R   R?   RF   RG   (
   R7   R   Rv   R   R“   R   R    R0   R5   R   (   R  R>   R×   R`   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_any_all_np_func#  s    !c          C   sÇ   d „  }  t  j i t d ƒ d 6d d d d d g d 6ƒ } t  j i d d d	 d d d
 d d g d 6ƒ } | j d ƒ j |  ƒ } t j | | ƒ | j d ƒ j j |  ƒ } t j | | d ƒ d  S(   Nc         S   sI   |  |  j  ƒ  } t |  t j ƒ r& | S| j d d „  | j Dƒ ƒ } | S(   NR   c         S   s"   i  |  ] } d  j  | ƒ | “ q S(   s   {}_demeaned(   t   format(   t   .0R    (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pys
   <dictcomp>9  s   	 (   R   RÕ   R7   R   t   renameR   (   R   RA   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   demean_rename2  s    	t   ababaR¨   i   i   RÔ   g      ð¿i   g      à¿g      à?g       @(	   R7   R   Ri   R    R0   R5   R   RÔ   R   (   R#  R>   R@   RA   t   result_single(    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   test_groupby_transform_rename0  s    	1RK   t   lastc         C   sž   t  j d d t ƒj d ƒ } t  j i | g d 6d g d 6ƒ } | j d ƒ j j |  ƒ | d <t  j | d | g g d d d d g ƒ} t j	 | | ƒ d  S(	   Nt   nowt   utcs   Asia/Singaporet   end_timei   RE   t   max_end_timeR   (
   R7   t   to_datetimeRv   t
   tz_convertR   R    R*  R0   R5   R   (   R  R\   RA   R@   (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt&   test_groupby_transform_timezone_columnG  s    #(    (    (   iÿÿÿÿ(   i   (    (    (   iÿÿÿÿ(   i   (   Rž   R  (   i   i   (   g      ð?g       @(   i   R  N(   i   R  i   (   i   R  N(   i   R  i   (   iÿÿÿÿR  N(   iÿÿÿÿR  i   (   iÿÿÿÿR  N(   iÿÿÿÿR  i   (N   t   __doc__t   numpyR   Rè   t   pandas._libsR    t   pandas.compatR   t   pandas.core.dtypes.commonR   R   t   pandasR7   R   R   R   R   R   R	   t   pandas.core.configR
   t   pandas.core.groupby.groupbyR   t   pandas.utilR   R5   t   pandas.util.testingR   R   R   RD   RS   Rc   Rm   Rn   Ru   Rw   Rz   R~   R†   Rˆ   RŽ   R   R‘   R’   R•   Rœ   R   R¥   R¦   R­   R·   R¼   R¿   RÅ   t   markt   parametrizeRÒ   Rr   Rv   R“   RØ   Rð   Rú   Rþ   R«   R  R  t   paramRü   R  t   anyR   R  R&  Rx   R:   R.  (    (    (    sB   lib/python2.7/site-packages/pandas/tests/groupby/test_transform.pyt   <module>   sÀ   .		0	,		)			
							
		
				,	
					 	!#1.7	!H	'5$*$E,$*	