ó
šxŠ\c           @  s  d  d l  m Z d  d l m Z d  d l Z d  d l m Z 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 m Z d  d l j j Z d  d l m Z m Z d	 e f d
 „  ƒ  YZ d „  Z d „  Z d „  Z  d S(   iÿÿÿÿ(   t   print_function(   t   datetimeN(   t   catch_warningst   simplefilter(   t   u(   t	   DataFramet   Indext
   MultiIndext   Periodt   Seriest	   Timedeltat
   date_range(   t   TestData(   t   assert_frame_equalt   assert_series_equalt   TestDataFrameReshapec           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 d „  Z d „  Z d „  Z d „  Z d „  Z e j j d d d g e d* ƒ g ƒ d „  ƒ Z d „  Z d „  Z  d „  Z! e j j d e" e# g ƒ e j j d e$ d  ƒ e$ d! ƒ g ƒ d" „  ƒ ƒ Z% d# „  Z& e j j d$ d% d& g ƒ d' „  ƒ Z' e j j d$ d% d( g ƒ d) „  ƒ Z( RS(+   c         C  sÌ  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} t  | ƒ } | j d d d d d d ƒ } t  i i d d 6d	 d 6d
 d 6d 6i d d 6d	 d 6d
 d 6d 6ƒ } d \ | j _ | j _ t j | | ƒ | j j d k sÿ t ‚ | j j d k st ‚ | j d d d d ƒ } | j j d k sGt ‚ | j j d k s_t ‚ t
 d t ƒ X t d t ƒ t j ƒ  } | j ƒ  } | j ƒ  } t j | j d d ƒ | j ƒ  ƒ Wd  QXd  S(   Nt   At   Bt   Ct   indext   Onet   Twot   columnsg      ð?g       @g      @t   valuest   recordt   ignoret   majort   minor(   R   R   (   NR   (   R   t   pivotR   t   nameR   t   tmR   t   AssertionErrort   namest   NoneR   t   TrueR   t   FutureWarningt	   makePanelt   to_framet   reset_indext   unstack(   t   selft   datat   framet   pivotedt   expectedt   wpt   lpt   df(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt
   test_pivot   s.    	"c         C  s   t  i d d d d d g d 6d d d d d g d 6d d d	 d	 d
 g d 6ƒ } t j t d d ƒ | j d d d ƒ Wd  QXd  S(   Nt   bart   foot   at   onet   twot   bg      ð?g       @g      @g      @t   ct   matchs   duplicate entries(   R   t   pytestt   raisest
   ValueErrorR   (   R(   R)   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_pivot_duplicates<   s
    c         C  sV   t  i  d d d d g ƒ} | j d d d ƒ } t  i  ƒ } t j | | d t ƒd  S(   NR   R3   R6   R7   t   check_names(   R   R   R   R   t   False(   R(   R/   t   resultR,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_pivot_emptyC   s    c         C  sf   t  d d d g ƒ } | j d d	 d
 d d d ƒ } t | ƒ t j | j t d d g d d ƒƒ d  S(   NR)   R   t   1t   A1R   t   2t   B2R   i   R   i    R   i   R   (   R   RA   RB   (   R   RC   RD   (   R   R   t   reprR   t   assert_index_equalR   R   (   R(   R/   R?   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_pivot_integer_bugI   s    
c         C  s¿  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} t  | ƒ j d ƒ } | j d d d d ƒ } t  i i d d 6d	 d 6d
 d 6d 6i d d 6d	 d 6d
 d 6d 6ƒ } d \ | j _ | j _ t | | ƒ | j d d ƒ } t j j	 d d g d d  d g ƒ| _ d | j _ t j | | d t ƒ| j j d k sZt ‚ | j j d k srt ‚ | j j d ƒ | _ | j d d d d ƒ } d | j _ t j | | ƒ d  S(   NR   R   R   R   R   R   R   g      ð?g       @g      @R   R    R=   i    (   R   R   (   R   R   (   R   R   (   NR   (   R   t	   set_indexR   R   R   R   R   t   pdR   t   from_tuplesR!   R   R>   R   R    t	   droplevel(   R(   R)   R*   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_pivot_index_noneP   s.    "	c         C  sÙ   |  j  j ƒ  } t j t j | j ƒ ƒ j | j ƒ | (| j ƒ  } t i | d 6| d 6ƒ } | j	 ƒ  } | j	 ƒ  } t
 | | ƒ t
 | d | ƒ | j	 d ƒ } | j	 d ƒ } t
 | j | ƒ t
 | d j | ƒ d  S(   NR2   R1   i    (   R*   t   copyt   npt   aranget   prodt   shapet   reshapet   stackR   R'   R   t   T(   R(   R/   t   stackedt
   stacked_dft	   unstackedt   unstacked_dft   unstacked_colst   unstacked_cols_df(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_stack_unstackr   s    (c         C  s.  t  d ƒ d d d g d d g g } t d d | d d | d ƒ} | j ƒ  } t d d t j | d  ƒ ƒ} t | | ƒ t d d | d d t j | d ƒ ƒ} | j d ƒ } t d d t j | d | d g ƒ d | d ƒ} t | | ƒ | d d g j d ƒ } | d d g } t | | ƒ d  S(	   Ni   R3   R6   i   i   R   i    R   (   t   rangeR   RS   R	   R   t   from_productR   R   (   R(   t   levelsR/   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_stack_mixed_level„   s    $ c   	      C  sa  t  d d d d g d t j ƒ} t j d d d d g ƒ | _ | j d d ƒ } t i d d d g d 6d d d g d 6d d d	 d
 g d t j ƒ} t | | ƒ | j d d ƒ } t i d d d g d 6d d d g d 6d d d	 d
 g d t j	 ƒ} t | | ƒ t i d d d g d 6d d d g d	 6d d d g d
 6d d d g d 6ƒ j
 d d	 d
 g ƒ } | j d d	 g d d ƒ} d } | | } t j  d d d g d | j d | ƒ} t | | ƒ | j d d	 g ƒ } | j j | j j ƒ | _ | j t j ƒ } | j | j } t | | ƒ | d } | j d d	 g d d ƒ} | d } t | | ƒ d  S(   Ni   i   i   i   t   dtypet   xR3   R6   t   yt   zt
   fill_valueiÿÿÿÿR   g      à?t   jt   ki    t   wR   (   Ra   R3   (   Ra   R6   (   Rb   R6   (   Rc   R3   (   Rg   R6   Re   (   R	   RN   t   int16R   RJ   R   R'   R   R   t   floatRH   RI   R   RS   t   reorder_levelsR    t   astypet   int64t   loc(	   R(   R)   R?   R,   R/   RW   t   keyRU   t   s(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_fillœ   s:    !))(
'

c         C  s  d d g d d g d d g d d g g } t  | d	 t d
 ƒ d t j ƒ} t j d d d d g ƒ | _ | j d d ƒ } d d d d g d d d d g d d d d g g } t  | d t d ƒ d t j ƒ} t j d d d d g ƒ | _ t	 | | ƒ | d j
 t j ƒ | d <| d j
 t j ƒ | d <| j d d ƒ } | d j
 t j ƒ | d <| d j
 t j ƒ | d <t	 | | ƒ | j d d ƒ } d d d d g d d d d g d d d d g g } t  | d t d ƒ d t j ƒ} t j d  d! d" d# g ƒ | _ t	 | | ƒ d  S($   Ni   i   i   i   i   i   i   i   R   t   ABR`   Ra   R3   R6   Rb   Rc   Rd   iÿÿÿÿR   t   xyzR   R   g      à?(   Ra   R3   (   Ra   R6   (   Rb   R6   (   Rc   R3   (   R   R3   (   R   R6   (   R   R3   (   R   R6   (   R   R3   (   R   R6   (   R   R3   (   R   R6   (   R   t   listRN   t   int32R   RJ   R   R'   R   R   Rk   Rh   t   float64Ri   (   R(   t   rowsR/   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_fill_frameÉ   s,    *!3!3!c         C  s&  t  j d d d ƒj } t | ƒ } t j d d d d g ƒ | _ | j ƒ  } t i | d	 t  j	 | d
 g d 6| d | d t  j	 g d 6d d d d g ƒ} t
 | | ƒ | j d | d	 ƒ } t i | d	 | d	 | d
 g d 6| d | d | d	 g d 6d d d d g ƒ} t
 | | ƒ d  S(   Ns
   2012-01-01t   periodsi   Ra   R3   R6   Rb   Rc   i    i   i   i   R   Rd   (   Ra   R3   (   Ra   R6   (   Rb   R6   (   Rc   R3   (   RI   R   R   R	   R   RJ   R   R'   R   t   NaTR   (   R(   t   dvR)   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt    test_unstack_fill_frame_datetimeë   s    !"c         C  s6  g  t  d ƒ D] } t d | ƒ ^ q } t | ƒ } t j d d d d g ƒ | _ | j ƒ  } t i | d t j	 | d	 g d 6| d
 | d t j	 g d 6d d d d g ƒ} t
 | | ƒ | j d | d
 ƒ } t i | d | d
 | d	 g d 6| d
 | d | d
 g d 6d d d d g ƒ} t
 | | ƒ d  S(   Ni   t   daysRa   R3   R6   Rb   Rc   i    i   i   i   R   Rd   (   Ra   R3   (   Ra   R6   (   Rb   R6   (   Rc   R3   (   R\   R
   R	   R   RJ   R   R'   R   RI   Ry   R   (   R(   t   it   tdR)   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt!   test_unstack_fill_frame_timedeltaÿ   s    (!"c         C  s2  t  d ƒ t  d ƒ t  d ƒ t  d ƒ g } t | ƒ } t j d d d d g ƒ | _ | j ƒ  } t i | d
 d  | d g d 6| d | d d  g d 6d d d d	 g ƒ} t | | ƒ | j d | d ƒ } t i | d
 | d | d g d 6| d | d | d g d 6d d d d	 g ƒ} t | | ƒ d  S(   Ns   2012-01s   2012-02s   2012-03s   2012-04Ra   R3   R6   Rb   Rc   i    i   i   i   R   Rd   (   Ra   R3   (   Ra   R6   (   Rb   R6   (   Rc   R3   (	   R   R	   R   RJ   R   R'   R   R!   R   (   R(   Rx   R)   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_fill_frame_period  s    "c         C  sh  t  j d d d d g d d ƒ} t  j j d d d d g ƒ | _ | j ƒ  } t i t  j t d	 ƒ d
 t d ƒ ƒd 6t  j t d ƒ d
 t d ƒ ƒd 6d t d ƒ ƒ} t	 | | ƒ d } t
 j t d | ƒ | j d d ƒ Wd  QX| j d d ƒ } t i t  j t d ƒ d
 t d ƒ ƒd 6t  j t d ƒ d
 t d ƒ ƒd 6d t d ƒ ƒ} t	 | | ƒ d  S(   NR3   R6   R7   R`   t   categoryRa   Rb   Rc   t   axat
   categoriest   abct   bcxR   Rr   s   'fill_value' \('d'\) is not inR8   Rd   t   dt   acat   bcc(   Ra   R3   (   Ra   R6   (   Rb   R6   (   Rc   R3   (   RI   R	   R   RJ   R   R'   R   t   CategoricalRs   R   R9   R:   t	   TypeError(   R(   R)   R?   R,   t   msg(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt#   test_unstack_fill_frame_categorical(  s(    !	c         C  sÊ  t  j t d d d d g d d d d g d	 t  j d d d g ƒ j d
 ƒ d t j j d ƒ d d d d d t  j d ƒ d t  j d d d g ƒ j d ƒ d t  j d d d g ƒ j d ƒ d t	 d t  j d d d  g d! d" ƒƒ ƒ } d# „  } | j
 d d g ƒ } | | d ƒ | j
 d d	 g ƒ } | | d	 ƒ | j
 d d g ƒ } | | d ƒ | j
 d d d g ƒ } | | d ƒ | j
 d d g ƒ } | | d ƒ | j
 d d g ƒ } | d } | | d ƒ d  S($   Nt   statet   ILt   MIt   NCR   R3   R6   R7   t   some_categoriesR   R   i   R   i   R   R2   t   Dt   20010102t   Eg      ð?g      I@g      Y@t   float32t   Fg      @g      @g      @Ru   t   Gt   HiÈ   i2 R`   t   int8c         S  s2   |  j  | g ƒ } |  j  | ƒ } t | | ƒ d  S(   N(   R'   R   (   R/   t   column_namet
   unstacked1t
   unstacked2(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   unstack_and_compareW  s    (   RI   R   t   dictR	   Rk   RN   t   randomt   randt	   TimestampR>   RH   (   R(   R/   R   t   df1Ro   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_preserve_dtypesG  s6    		!$	
c         C  s  t  j t t j t d ƒ d d ƒƒ ƒ } t t j j	 d d ƒ d | ƒ} t
 | j d d d g ƒ | j d d ƒ j d d ƒ ƒ t
 | j d d	 d
 g ƒ | j d d ƒ j d d ƒ ƒ | j ƒ  } | j j t d ƒ d t ƒt
 | j d d d g ƒ | j d d ƒ j d d ƒ ƒ d  S(   Ni   t   repeati   i   R   t   leveli   i   iþÿÿÿiÿÿÿÿt   inplace(   R   RJ   Rs   t	   itertoolst   productR\   R   RN   RŸ   t   randnR   RS   RM   R   t	   set_namesR"   (   R(   R   R/   t   df_named(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_stack_intso  s    !c         C  sO  t  j d d d d g d d d	 d
 g ƒ} t t j j d d ƒ d | ƒ} | j d d	 d
 g ƒ } | j d d d
 g ƒ } | j ƒ  } d d	 d g | j _	 t
 | j d d	 d g ƒ | d t ƒt
 | j d d d g ƒ | d t ƒt j t | j d d	 d g ƒ| j ƒ  } d d	 d g | j _	 t
 | j d d	 d g ƒ | d t ƒd  S(   NR   t   catt   longR   t   dogt   shortR    t   expt   animalt   hair_lengthi   R   R¥   i   R=   i    (   R   R­   R®   (   R   R­   R®   (   R   R¯   R°   (   R   R¯   R°   (   R   RJ   R   RN   RŸ   R©   RS   RM   R   R    R   R>   R9   R:   R;   (   R(   R   R/   t   animal_hair_stackedt   exp_hair_stackedt   df2t   df3(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_stack_mixed_levels  s$    !c         C  s·  t  j d d d d g d d d	 d
 g ƒ} t t j j d d ƒ d | ƒ} | j d d d	 g ƒ } | j d d	 d
 g ƒ } | j d d d
 g ƒ } | j ƒ  } d d d g | j _	 t
 | j d d d g ƒ | d t ƒt
 | j d d d g ƒ | d t ƒt
 | j d d d g ƒ | d t ƒ| j ƒ  } d d d g | j _	 t
 | j d d d g ƒ | d t ƒt
 | j d d d g ƒ | d t ƒt
 | j d d d g ƒ | d t ƒd  S(   NR   R­   R®   R   R¯   R°   R    R±   R²   R³   i   R   R¥   i    i   i   R=   (   R   R­   R®   (   R   R­   R®   (   R   R¯   R°   (   R   R¯   R°   (   R   RJ   R   RN   RŸ   R©   RS   RM   R   R    R   R>   (   R(   R   R/   t   exp_animal_stackedR´   Rµ   R¶   R·   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_stack_int_level_namesŸ  s0    !c      	   C  s¹   t  t t g d t j d d g d d g g ƒ d d g ƒ} | j ƒ  } t  t j t t j g t j t g g d t ƒd d d g d t j d d g d d g g ƒ ƒ} t	 | | ƒ d  S(	   NR   R3   R6   R7   t   lR   t   colR`   (
   R   R>   R   t   from_arraysR'   RN   t   arrayt   nant   objectR   (   R(   R/   t   rst   xp(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_bool¾  s    !'	c      
   C  s¯  t  j d t d ƒ t d ƒ g t d ƒ t d ƒ g t d ƒ t d ƒ g g d d	 d	 d
 d
 g d	 d
 d	 d
 g d
 d	 d
 d	 g g d t d ƒ t d ƒ t d ƒ g ƒ } t  j d	 d | ƒ} | j d
 d g ƒ j d	 ƒ } t  j d d d g d d g g d d	 d	 d
 d
 g d	 d
 d	 d
 g g d d d g ƒ } t  j t j t j	 d	 g d	 t j	 g t j	 d	 g d	 t j	 g g d t j
 ƒd | d t  j d d g d d ƒƒ} t | | ƒ d  S(   NR^   R2   R1   R4   R5   R3   R6   t   codesi    i   R    t   firstt   secondt   thirdR   i   R`   R   R   (   RI   R   R   R	   R'   RS   R   RN   R¾   R¿   Ru   R   R   (   R(   t   miRo   R?   t   expected_miR,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_level_bindingÊ  s&    	*3$	$c         C  sd  |  j  j ƒ  } t | t ƒ s$ t ‚ | j ƒ  j } t | |  j  ƒ t i d d t j	 g d 6d d t j	 g d 6ƒ } t
 d d d	 g ƒ | _ | j ƒ  } t d
 d d g d d d	 g g d d d d d d d g d d d d d d g g ƒ } t d d t j	 d d t j	 g d | ƒ} t | | ƒ | j ƒ  } x  t d ƒ D] } | j ƒ  } q=Wt | | ƒ d  S(   Ni   i   Ra   g      @i   Rb   R3   R6   R7   R^   RÄ   i    i   R   (   R*   R'   t
   isinstanceR	   R   RT   R   R   RN   t   NaNR   R   R   R   RM   R\   (   R(   R)   t   undoR?   t   midxR,   t   old_datat   _(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_to_seriesã  s    2!3*c         C  sÖ  d d d d g d d d d g d d d d g d d d d g g } t  | d t d ƒ ƒ} | j ƒ  } t i d d 6ƒ } t | | ƒ | j d d	 g ƒ } | j d	 ƒ } | j ƒ  } t i d d 6ƒ } t | | ƒ | j d d	 g ƒ } d
 | d <| j d	 ƒ } | j ƒ  } t i d d 6d d 6ƒ } t | | ƒ d | d <| j d	 ƒ } | j ƒ  } t i d d 6d d 6ƒ } t | | ƒ xLt j d ƒ t j d ƒ f t j	 d d d ƒt j	 d d d d ƒf f D]ÿ \ } } t  i d g d d 6| d 6| d 6t
 j d d d ƒd	 6ƒ } | j d  j d t ƒ }	 | j d d	 g ƒ } | d j d ƒ | d <| j d  j d ƒ }
 |	 j d d	 g ƒ j d ƒ }	 |	 d j d ƒ |	 d <|
 j d k s¾t ‚ t j |
 |	 ƒ qÏWd  S(   Ni   i   i   i   R   t   ABCDRl   R   R   g      @R   Ru   R2   R’   RÀ   i   R`   t   f8i
   R3   s
   2012-01-01Rx   t   deepi    (   R’   R3   (   R’   R3   (   i   i   (   R   Rs   t   get_dtype_countsR	   R   RH   R'   RN   t   zerosRO   RI   R   t   ilocRM   R"   Rk   RQ   R   R   R   (   R(   Rv   R/   R?   R,   R¶   R·   R7   R†   t   rightt   left(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_dtypesü  sH    

:"c         C  s†   t  j d
 d g d d d g ƒ} t d d g d	 | ƒ} t j t ƒ  | j d ƒ Wd  QXt j t ƒ  | j j d ƒ Wd  QXd  S(   NR3   R6   R7   R†   R    t   c1i   i   R   (   R3   R6   (   R7   R†   (	   R   RJ   R   R9   R:   R;   R'   RT   RS   (   R(   t   idxR/   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt#   test_unstack_non_unique_index_names1  s    c      
   C  s´  t  j j d g d d d d g g ƒ d  } t  j d d g g d	 d
 | ƒ} | j ƒ  } t  j j d d g d d d g g ƒ } t  j d d d d d d g g d
 d g d | ƒ} t j | | ƒ | j j d | j d k j	 ƒ  sì t
 ‚ d d d g d d d d	 g g } d d d d g d d d d g g } t  j | | ƒ } t j d ƒ j d d ƒ } t  j t j | | d g ƒ d
 | ƒ} | j ƒ  } t  j t j | d | d d g d d ƒd | ƒ} t j | | ƒ | j j d | j d k j	 ƒ  st
 ‚ d d d g d d	 d d g g } d d d d g d d d d g g } t  j | | ƒ } t j d ƒ }	 t  j |	 j d d ƒ d
 | ƒ} d d d d d d d d d g t j d d g t j d d g f d d d d d d d d d g t j d d g t j d d g f f }
 x¡ |
 D]™ \ } } } } | j d | ƒ } t j d ƒ t j } |	 | | <t  j j d d g | g ƒ } t  j | j d	 d ƒ d
 | d | ƒ} t j | | ƒ qWd  S(   NR3   R   R   R   R’   iÿÿÿÿi   i    i   R   R   i   i   i   t   axisR7   i   i   i   i   i   i	   i   i   i   R¥   i   (   RI   R   R]   R   R'   R   R   R   R^   t   allR   RN   RO   RR   t   concatenateR¿   RÖ   (   R(   RÜ   R/   R?   t   exp_colR,   R^   RÄ   t   blockR)   t   casesR¥   t   idcest	   col_levelt	   idx_levelt   exp_datat   cols(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_unused_levels;  sH    +"'*	)!$($		)!$!!'
Rè   R   R   c         C  sï   t  j d d d g d d d g g d d d	 d
 g ƒ} | j d d	 d
 g d t ƒ} | j t d  ƒ t d  ƒ d f | f } | j ƒ  } | j d g | } t	 j
 | j d g g d d  d
 g ƒ| _ | j j d
 ƒ | _ t j | | ƒ d  S(   NiÚ  R3   t   IiÛ  R6   t   IIR   R   R   R   t   dropi    R    (   RI   R   RH   R>   Rm   t   sliceR!   R'   R×   R   R]   R   R   RK   R   R   (   R(   Rè   R/   t   indt	   selectionR?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_unused_levelh  s    (c           sÉ  d „  ‰  ‡  f d †  } t  i d d t j d g d 6d d d	 d
 g d 6d d d d g d 6ƒ } | j d d g ƒ j ƒ  d } | j d d g ƒ j ƒ  d j } t | | ƒ x‘ t j | j	 d  ƒ D]y } | j t
 | ƒ ƒ } x[ t d ƒ D]M } | j d | ƒ } | j ƒ  j j ƒ  t | ƒ k s,t ‚ | | d ƒ qí WqÅ Wt  i d g d t j g d d g d d g d d g d d g d d 6d	 g d d g d t j g d d
 g d t j g d d g d t j g d d 6d d d d d d d  d! d" d# d$ d% d& d$ d' d( d) d d* d+ g d, 6ƒ } | j ‡  f d- †  d. d/ ƒ| j ‡  f d0 †  d. d/ ƒ| d1 <| d2 <x® t j d d d, g ƒ D]” } | j t
 | ƒ ƒ } xv t d ƒ D]h } | j d | ƒ } | j ƒ  j j ƒ  d t | ƒ k sût ‚ x" d1 d2 g D] }	 | | |	 ƒ qWq¸WqWt j  i t
 d3 ƒ d4 6t d5 ƒ d6 6t d5 ƒ d7 6ƒ } t j | j db <| j d4 d6 g ƒ j d8 ƒ } d d8 d/ d t j t j t j t j g t j t j t j t j d d d9 d: g g }
 t
 t t
 t |
 Œ  ƒ ƒ }
 t t j d8 d/ d d d d9 d: g d; d6 ƒ} t d< d7 g d d g g d= d8 d8 g d8 d/ g g d> d  d4 g ƒ } t  |
 d? | d@ | ƒ} t | | ƒ t  i t
 d3 ƒ d4 6t
 t d ƒ ƒ d d6 6t d5 ƒ d7 6ƒ } t j | j dc <| j d4 d6 g ƒ j d8 ƒ } d t j g d8 d g d/ d g t j d9 g d d: g g }
 t d< d7 g d d g g d= d8 d8 g d8 d/ g g d> d  d4 g ƒ } t t j d8 d/ d d g d; d6 ƒ} t  |
 d? | d@ | ƒ} t | | ƒ t j  i t
 d3 ƒ d4 6t
 t d ƒ ƒ d d6 6t d5 ƒ d7 6ƒ } t j | j dd <| j d4 d6 g ƒ j d8 ƒ } d t j g d8 d g d/ d g d d9 g t j d: g g }
 t d< d7 g d d g g d= d8 d8 g d8 d/ g g d> d  d4 g ƒ } t t j d8 d/ d d g d; d6 ƒ} t  |
 d? | d@ | ƒ} t | | ƒ t j  i t
 dA ƒ d4 6t dB dC d ƒj ƒ  d d6 6t j dD ƒ d7 6ƒ } t j | j de <| j d4 d6 g ƒ j ƒ  } t j d d8 d/ d t j d g t j d d9 d: d5 dE g g ƒ }
 t d d g d; d4 ƒ} t d< d7 g t dB dC d ƒg d= d8 d8 d8 d8 d8 d8 g dF d8 d/ d d d g g d> d  d6 g ƒ } t  |
 d? | d@ | ƒ} t | | ƒ dG t j t j dH g dI dJ t j dH g dK dL t j dH g dM dN dO dP g dQ dJ dO dP g dG dR dO dP g g }
 t  |
 d? dS dT dU dV g d@ dW dX dY dZ d[ d\ g ƒ} | j ƒ  j dV dU dS g ƒ j ƒ  } t j t j dL t j dJ g dJ dR t j dN t j g g }
 t d< dH dP g dO g g d= d8 d/ g dF d8 g g d> dV dU g ƒ } t d< dT g dQ dG dK dM dI g g d= d8 d8 d8 d8 d8 g d8 d/ d d d g g d> d  dS g ƒ } t  |
 d? | d@ | ƒ} t | | ƒ | j dX j ƒ  j dV dU dS g ƒ } t | j ƒ  | ƒ t  i d/ d d/ d d/ d g d 6t j d] dC d9 d^ d_ ƒd 6d` t j d9 ƒ d 6t j  j! d9 ƒ dD j" d ƒ d 6ƒ } | d t j# da ƒ | d, <t j | j df <| j dg <t j | j dh <| j di <| j d d d, g ƒ j d d, g ƒ } | j ƒ  j j ƒ  d t | ƒ k sSt ‚ xo d d g D]a }	 xX | j$ ƒ  D]J \ } } | d |	 | d | d, f f } | |	 | j | k sst ‚ qsWq`Wd  S(j   Nc         S  s   d j  |  |  k r d n |  ƒ S(   Ns   {0:1}t    (   t   format(   t   val(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   <lambda>z  s    c           s»   d „  } |  j  ƒ  j j ƒ  \ } } x t | | ƒ D] \ } } t |  j | | f j d ƒ ƒ } | |  j | ƒ | |  j | ƒ } t t	 t
 ˆ  | ƒ ƒ ƒ } | | k s4 t ‚ q4 Wd  S(   Nc         S  s    t  |  t ƒ r t |  ƒ S|  g S(   N(   RË   t   tupleRs   (   R3   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyRô   }  s    t   .(   t   notnaR   t   nonzerot   zipt   sortedR×   t   splitR   R   Rs   t   mapR   (   R/   t   mk_listRv   Rè   R}   Re   RÙ   RØ   (   t   cast(    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   verify|  s    	"$R3   R6   R†   t   jimRg   Ra   Rb   Rc   t   joes   a.ws   b.xs    .ys   d.zt   joliei   R¥   i   i   R7   t   et   1sti   t   2ndiC   i'   i5   iH   i9   iP   i   i   i   i   i;   i2   i>   iL   i4   i   i<   i3   t   3rdc           s   d j  t ˆ  |  ƒ ƒ S(   NRö   (   t   joinRü   (   t   r(   Rþ   (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyRô   œ  s    RÞ   i   c           s&   d j  t ˆ  |  j d  d  d … ƒ ƒ S(   NRö   iÿÿÿÿ(   R  Rü   R×   (   R  (   Rþ   (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyRô     s    t   4tht   5tht   aaaabbbbR   i   R   R   i    i   i   R   R^   RÄ   R    R   R   t
   aaaaabbbbbs
   2012-01-01Rx   i
   i	   iÿÿÿÿt   Hgi¼ç(t   Ug        t   Pbg¢	VÍZ§Ý>t   Sngº@¹ÕÂø>gÌ]KÈ=‹?i)=‘(t   Agga2U0*©#¿t   agentt   changet   dosaget   s_idioC  ipC  iqC  irC  isC  itC  s
   2014-02-01t   freqR’   id   s
   2014-02-02(   i   i   (   i   i   (   i   i   (   i   i   (   i   R  (   i   R  (   i   R  (   i   R  (%   R   RN   R¿   RH   R'   RT   R   R§   t   permutationsR   Rs   R\   R÷   R   t   sumt   lenR   t   applyRI   RÌ   R×   Rü   Rù   R   R   R!   R   t   tolistRO   R¾   RM   Rm   RŸ   R©   t   roundR¡   t   iterrows(   R(   Rÿ   R/   RÙ   RØ   RÜ   RÈ   t   levt   udfR¼   t   valsRè   RÐ   R  Rn   (    (   Rþ   s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_nan_indexy  sÞ    		"'HY!(*+0'--*9$-9$?!0$$*%
&'+!c         C  s³   t  d d d ƒ } t d d d d g d t j | d d f g ƒ ƒ} | j ƒ  } t j d d g ƒ } t j | d f g ƒ } t d d d d g d
 | d | ƒ} t | | ƒ d  S(   NiÞ  i   i   i   i   R   R   R   i    R   (   i    i   i   i   (   R   (   R   R   R   RJ   RS   R]   R   (   R(   t   tR/   R?   t   eidxt   ecolsR,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt%   test_stack_datetime_column_multiIndex  s    0$c         C  s	  d „  } t  j d d d d d g d	 d
 d g ƒ} xÊ d d d d d g d d d d g d d d d g d d d g d d d g d d d g d d g d d g d d g d g d g d g f D]A } | | | ƒ t | ƒ d k r» | j ƒ  | | | ƒ q» q» Wt t j d ƒ j d d ƒ d | d d d g ƒ} | j d t	 ƒ } t d d g d t j
 g d d g d t j
 g g d t  d d d g d d d d g g d d d d d g d d d d g g d	 d  d g ƒ d t d d g d d
 ƒd | j d ƒ} t | | ƒ d  S(   Nc         S  s@  t  t j d t |  ƒ ƒ j d t |  ƒ ƒ d |  ƒ} xd d d d d g d d g f D]ß } | j d | d t ƒ } t | t ƒ rÍ | j d | d t	 ƒ } t | t
 ƒ r½ t | | ƒ qÍ t | | ƒ n  t j | j j ƒ  d | j j ƒ| _ | j d | d t ƒ } t | t
 ƒ r+t | | ƒ qY t | | ƒ qY Wd  S(	   Ni   R   iÿÿÿÿi    i   R¥   t   dropnaR    (   R   RN   RO   R  RR   RS   R>   RË   t   intR"   R	   R   R   R   RJ   R   t
   get_valuesR    (   t
   multiindexR/   R¥   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   _test_stack_with_multiindex"  s     	(R   Ra   Rc   R   Rb   R   R   R    t   Uppert   Loweri    i   i   i   i   i   R   R&  i   R   R^   RÄ   R   R`   (   R   Ra   (   R   Rc   (   R   Rb   (   R   Ra   (   R   R   (   R   RJ   R  t   reverseR   RN   RO   RR   RS   R>   R¿   R!   R   t   dtypesR   (   R(   R*  t   full_multiindext   multiindex_columnsR/   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_stack_partial_multiIndex   s6    	$
3t   orderedt   labelst   yxzt   yxyc         C  s•   t  j | d t d ƒ d | ƒ} t d d d g g d | ƒ} | j ƒ  } t  j j | j | g ƒ } t d d d g d | ƒ} t	 j
 | | ƒ d  S(	   NRƒ   Rr   R2  i
   i   i   R   R   (   RI   t   CategoricalIndexRs   R   RS   R   R]   R   R	   R   R   (   R(   R2  R3  t   cidxR/   R?   RÎ   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt%   test_stack_preserve_categorical_dtypeW  s    	c      
   C  s¸   t  j d d d d g ƒ } t  j i | d 6| d 6ƒ } | j ƒ  } t  j j d d d d	 g d d g g ƒ } t  j t  j d d d d d d d d g ƒ d
 | ƒ} t j | | ƒ d  S(   NR3   R6   R7   R   R   i    i   i   i   R   (	   RI   R‰   R   RS   R   R]   R	   R   R   (   R(   R­   R/   R?   R   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt,   test_stack_preserve_categorical_dtype_valuesg  s    *	R¥   i    i   c         C  s  t  j j d d d g d d d g ƒ} t  j i t  j j j d d d  g ƒ d 6t  j d d d g ƒ d 6d | ƒ} | j	 d	 | ƒ } | j
 t ƒ j	 d	 | ƒ } t  j | j j g d
 | j j g d
 d | j ƒ} t j | j | ƒ t j | j
 t ƒ | ƒ d  S(   NR   i    i   R   R    R3   R6   R   R¥   i   (   R   i    (   R   i   (   R   i   (   RI   R   RJ   R   t   coret   arrayst   integer_arrayR!   R‰   R'   Rk   RÀ   R	   R   R`   R   R   R   R   R.  R   (   R(   R¥   R   R/   R?   R,   t   expected_dtypes(    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt"   test_unstack_mixed_extension_typesr  s    (%*t   bazc      	   C  sþ   t  j j d g d d g g d d d g ƒ} t  j d d g d d	 g g d
 | d d d g ƒ} d | j _ t  j d	 d d d g g d t  j j d d d d g d d d g ƒƒ} d | j _ | j ƒ  j	 d d ƒ j
 d d d | ƒ } t j | | ƒ d  S(   Ni    R†   R7   R    R1   R?  i   i   i   R   R   R   R   R2   RÞ   R¥   (   R7   R   (   R7   R   (   R†   R   (   R†   R   (   RI   R   R]   R   R   R   RJ   R   R'   t	   swaplevelt
   sort_indexR   R   (   R(   R¥   RÈ   R/   R,   R?   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt    test_unstack_swaplevel_sortlevel  s    3*N()   t   __name__t
   __module__R0   R<   R@   RG   RL   R[   R_   Rp   Rw   R{   R   R€   RŒ   R£   R¬   R¸   Rº   RÃ   RÊ   RÑ   RÚ   RÝ   Ré   R9   t   markt   parametrizeRí   R!   Rð   R!  R%  R1  R>   R"   Rs   R8  R9  R>  RB  (    (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyR      s@   	$				"			-	"					(		 					5	
	-0	›		73	$c          C  sú   t  j d d d d g d d ƒ}  t  j j d d d d g ƒ |  _ |  j ƒ  } t  j i d t j d g d 6d d t j g d 6d	 t	 d
 ƒ ƒ} t
 | | ƒ |  j d d ƒ } t  j i d d d g d 6d d d g d 6d	 t	 d
 ƒ ƒ} t
 | | ƒ d  S(   NR3   R6   R7   R`   RÀ   Ra   Rb   Rc   R   Rr   Rd   R†   (   Ra   R3   (   Ra   R6   (   Rb   R6   (   Rc   R3   (   RI   R	   R   RJ   R   R'   R   RN   R¿   Rs   R   (   R)   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   test_unstack_fill_frame_object“  s    !	,&c          C  s  t  j i t  j d d d ƒg d 6d g d 6d g d 6d g d 6d d d d d g ƒ}  |  j d d g ƒ j ƒ  } t  j t  j d d d ƒd g g d	 t  j d g d
 d ƒd t  j d d d g d g g d d d g d d g g d d  d g ƒ ƒ} t | | ƒ d  S(   Ns   2017-08-27 01:00:00.709949+0000t   tzt   UTCt	   timestampR3   R6   R7   R   R   R   R^   RÄ   i    i   R    (	   RI   R   R¡   RH   R'   R   R   R!   R   (   R/   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt"   test_unstack_timezone_aware_valuesª  s     	

	c          C  s·   t  j d d d d d d d d ƒ }  t  j i |  d	 6d
 d d d g ƒ} | j ƒ  } t  j |  d
 t  j d d d d g d	 g g d d d d g d d d g g ƒ ƒ} t | | ƒ d  S(   NR  R’   t   startt   20180101t   endt   20180103RH  s   America/New_YorkR   R   R3   R6   R7   R^   RÄ   i    i   i   (   RI   R   R   RS   R	   R   R   (   t   tsR/   R?   R,   (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt    test_stack_timezone_aware_values¿  s    	%!$(!   t
   __future__R    R   R§   t   warningsR   R   t   numpyRN   R9   t   pandas.compatR   t   pandasRI   R   R   R   R   R	   R
   R   t   pandas.tests.frame.commonR   t   pandas.util.testingt   utilt   testingR   R   R   R   RG  RK  RQ  (    (    (    s>   lib/python2.7/site-packages/pandas/tests/frame/test_reshape.pyt   <module>   s$   4ÿ ÿ ÿ €		