ó
šxŠ\c           @   sç   d  d l  m Z m Z d  d l Z d  d l m Z d  d l Z d  d l Z	 d  d l m
 Z
 m Z m Z m Z m Z m Z m Z d  d l j j Z d  d l m Z e j j d ƒ d e f d „  ƒ  Yƒ Z d	 „  Z d
 „  Z d „  Z d S(   iÿÿÿÿ(   t   catch_warningst   simplefilterN(   t   randn(   t	   DataFramet
   MultiIndext   Seriest	   Timestampt
   date_ranget   isnat   notna(   t   testings   ignore:\n.ix:DeprecationWarningt   TestMultiIndexSetItemc           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 RS(   c            sØ  t  d t ƒ Ãx»d4 D]³‰  d „  } d  ‡  f d † } t j t j d d ƒ t j d d ƒ g d	 d
 d g ƒ} d5 \ } } t t j d d d d d d d d d g d | ƒ} | d | d | | f d f d d d | ƒ t d d d d d d d d d d g d | ƒ} | d | d | | f d f d d d | ƒ t d d d d d d d d d g d | ƒ } | d | d | | f d f d d d | ƒ t d d d d d d d d d d g d | ƒ} | d | d | | f d f d t j	 d ƒ d | d d ƒ t t j d ƒ j
 d  d  ƒ d d! j d" ƒ d# t ƒ} d$ | d% <| d d d k } d& d' g } t  d t ƒ  | d% | j | | f <Wd  QXt d( d d d d) g d d& d' g ƒ}	 t  d t ƒ " t j | j | | f |	 ƒ Wd  QX| d | d | | f d | d% d t j d |	 ƒ t j d d& d' g t d* d+ d, d- ƒg ƒ }
 t j d. d/ g t d0 d1 d, d- ƒg ƒ } t t j j d6 ƒ d |
 d | ƒ} t j d t d* ƒ f d t d3 ƒ f g ƒ } t j d. t d0 ƒ f d. t d1 ƒ f g ƒ } t t j j d7 ƒ d | d | ƒ} | d | d | | f d | d t j ƒ t t j j d8 ƒ d | d | ƒ} | d | d | t d  d  d  ƒ f d | d t j ƒ | j ƒ  } | d | d | j | j f d | d t j d | ƒ q WWd  QXd  S(9   Nt   recordt   ixt   locc         S   s   |  | k s t  ‚ d  S(   N(   t   AssertionError(   t   at   b(    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   assert_equal   s    c            sT   t  |  ˆ  ƒ } | j | | ƒ | j | ƒ } | d  k rC | } n  | | | ƒ d  S(   N(   t   getattrt   __setitem__t   __getitem__t   None(   t   targett   indexerst   valuet
   compare_fnt   expectedt   fnt   result(   t   index_fn(    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   check   s    	i    id   iP   t   namest   timet   firmi   t   columnst   At   wt   lR   t   xt   Xt   dt   profitt   indexR   R   R   R   iüÿÿi   i   R   i   i   s	   A,B,C,D,Et   ,t   dtypeic   t   Ft   Bt   Cg     ÀX@i   s
   2015-01-01s
   2015-04-01t   freqt   MSt   foot   bars
   2016-01-01s
   2016-02-01i   s
   2015-02-01(   R   R   (   i    i   (   i   i   (   i   i   (   i   i   (   R    t   TrueR   R   t   from_productt   npt   arangeR   t   nant   arrayt   reshapet   splitt   floatR   t   tmt   assert_frame_equalR   t   randomt   from_tuplesR   t   slicet   copyR+   R#   (   t   selfR   R   R+   t   tt   nt   dft   row_selectiont   col_selectiont   outputt   idxt   colst   subidxt   subcolst   valsRC   (    (   R   sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   test_setitem_multiindex   s˜    		$	$	$	
'
		
!
$c         C   s>  t  j d d d d d d g ƒ t  j d d d d d d g ƒ t  j d d d ƒ g } t t  j j d d	 ƒ d
 | d d d d g ƒj ƒ  } | j d g d } | j ƒ  } | j d g c d 9<t	 j
 | j d g | ƒ t j t ƒ  | j d c d 9<Wd  QXt j i i d d! 6d d" 6d d# 6d d$ 6d d% 6d d& 6d 6ƒ } t j | j d d d d  g ƒ| _ | j ƒ  } | j d d d	 g c d 9<t j } | j ƒ  } | j | d  d  … d  d  … d f d  d  … f c d 9<t	 j
 | | ƒ | j ƒ  } | j | d  d  … d  d  … d f d f c d 9<t	 j
 | | ƒ d  S('   NR4   t   bazt   quxt   onet   twoi    i   i   i   R+   R#   R$   R/   R0   i   t   DEt   Coalt   Stocki   t   Gast   Elect   Demandi   t   FRt   Solart   SupImt   Windt   priceR    t   Sitt   Comt   Type(   RU   RV   RW   (   RU   RX   RW   (   RU   RY   RZ   (   R[   RX   RW   (   R[   R\   R]   (   R[   R^   R]   (   R7   R:   R8   R   R@   R   t
   sort_indexR   RC   R>   R?   t   pytestt   raisest	   TypeErrort	   from_dictR   RA   R+   t   iloct   pdt
   IndexSlice(   RD   t   arrayst   df_origR   RG   RK   (    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   test_multiindex_setitemw   s:    	82c            s  t  t j j d d d d ƒj d d ƒ d t d ƒ d d	 d	 d
 g d
 d d g g ƒ} t j | d <t j d d g ƒ } t d t	 ƒ A | | j
 d <t j | j
 d t | d d
 d g d d ƒƒ Wd  QXt  t j j d d d d ƒj d d ƒ d t d ƒ d d	 d	 d
 g d
 d d g g ƒ} t d t	 ƒ M | | j
 d <t | d d
 d g d d d d ƒ} t j | j
 d | ƒ Wd  QXt d t	 ƒ M d | j
 d  <t d d d
 d g d d d d ƒ} t j | j
 d! | ƒ Wd  QXt j t ƒ 4 t d t	 ƒ  d d d d g | j
 d" <Wd  QXWd  QXt j t ƒ + t d t	 ƒ  d g | j
 d# <Wd  QXWd  QXd } d } g  t t t j | ƒ j ƒ  ƒ D] } d | ^ qŠ} | d  } t  t j j d d | | f ƒd t j d | ƒ} | j | ƒ j ƒ  } | j d | d	  ƒ }	 t j | d <t j d ƒ ‰  ‡  f d †  }
 xS |	 D]K \ } } t j | j d ƒ } t d t	 ƒ  | | j
 | d f <Wd  QXq:Wd  S($   Ni   i
   t   sizei	   i   R#   t   abcR+   i   i   i   R)   g        g      ð?R   t   namet   cR-   t   float64i    i   i   id   R$   t   levelt   new_colc            s3   t  t j | j d ƒ d | j j d ƒj ˆ  ƒ S(   Ni    Rp   (   R   R7   R8   t   shapeR+   t   valuest   reindex(   Rp   t   df2(   t   f_index(    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   fÜ   s    (   i   R)   (   i   R)   (   i   Rq   (   i   Rq   (   i   Rq   (   i   Rq   (   i   Rq   (   i   Rq   (   R   R7   R@   t   randintR;   t   listR9   R:   R    R5   R   R>   t   assert_series_equalR   Rd   Re   t
   ValueErrort   mapt   strR8   t   tolistt   int64t	   set_indexRc   t   groupbyRu   (   RD   RG   t   arrt   expt   NUM_ROWSt   NUM_COLSt   numt	   col_namest
   index_colst   grpRz   Rp   Rx   t   new_vals(    (   Ry   sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   test_multiindex_assignment¤   sT    *!%*!$$%2
!	c         C   s¤   | } | d } t  j | d <t | j d d !ƒ j ƒ  s? t ‚ t | j d  ƒ j ƒ  s^ t ‚ t | j d ƒ j ƒ  s} t ‚ t  j | d	 <t | d ƒ s  t ‚ d  S(
   NR$   iÐ  i   i*   iA   i
   i1   (   iÐ  i   (   iÐ  i   i
   (   R7   R9   R   Rv   t   allR   R	   (   RD   t/   multiindex_year_month_day_dataframe_random_datat   ymdt   s(    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   test_series_setitemê   s    
"c         C   s/  | } | j  j ƒ  } | j } | | d k } | j | d k ƒ } t j | | ƒ d | | d k <d | | d k <t j | j | ƒ d | | d k <d | | d k <t j | j | ƒ d | | d  d k  <t j | d  | d  d k  d ƒ t j | j | ƒ t	 j
 t d d ƒ d | | d <Wd  QXd  S(   Ni    i   i   iÿÿÿÿt   matchs   boolean values only(   t   TRC   Rv   t   whereR>   R?   t   assert_almost_equalR7   t   putmaskRd   Re   Rf   (   RD   t    multiindex_dataframe_random_datat   frameRG   Rv   R   R   (    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt"   test_frame_getitem_setitem_boolean÷   s"    	!c         C   sÞ  d d g d d d g g } d d d d d g d d d d d g g } t  d	 | d
 | d d  d g ƒ } t i d d d d d g d 6d | ƒ} | j d  d  … d f } t j | d | ƒ t d t ƒ + t d t	 ƒ | j
 d  d  … d f } Wd  QXt j | d | ƒ | j | j d d !d f } t j | d d d !| ƒ | j d  d  … d  d  … f } t j | | ƒ | } d | j d  d  … d f <d | d <t j | | ƒ d | j d  d  … d  d  … f <t j | | ƒ d  S(   Nt   t1t   t2R   R   Rq   i    i   i   t   codest   levelsR    t   idi   i   i   R   R+   R   t   ignorei
   (   R   R   R   R   R>   R}   R    R5   R   t   DeprecationWarningR   R+   R?   (   RD   RŸ   Rž   t   midxRG   R   (    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt%   test_frame_getitem_setitem_multislice  s(    *!(
c         C   s­  t  t d d ƒ d d d d d g d d d d g g ƒ} | j ƒ  } | d | d <t j | d | d ƒ | j ƒ  } | d j | d <t j | d | d ƒ t j d d d g ƒ } t  d d d d g d | ƒ } d | d <| d j d k j ƒ  sÿ t	 ‚ d d d g | d <| d | d <| d } | d } | d } t j
 | | d t ƒt j
 | | d t ƒ| j d k st	 ‚ | j d k s”t	 ‚ | j d k s©t	 ‚ d  S(   Ni
   i   R#   R   R   i    i   R$   t   1t   2R/   R+   i   i   g        i   t   check_names(   R$   R¥   (   R$   R¦   (   R/   R¥   (   R/   R¥   (   R/   R¥   (   R$   R¥   (   R$   R¦   (   R/   R¥   (   R$   R¥   (   R$   R¦   (   R/   R¥   (   R   R   RC   R>   R?   Rv   R   RA   R   R   R}   t   FalseRp   (   RD   RG   t   cpR#   t	   sliced_a1t	   sliced_a2t	   sliced_b1(    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   test_frame_setitem_multi_column-  s,    !



c         C   sZ   | } | d  } | j  d d d d g f } | j  d	 d d d g } t j | | ƒ d  S(
   Ni   iÐ  i   i   R$   R/   R0   (   iÐ  i   i   (   iÐ  i   i   (   R   R>   R}   (   RD   R   R‘   RG   R   R   (    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt'   test_getitem_setitem_tuple_plus_columnsP  s
    
c         C   s‹  t  d d d d g d d g g d d d d d d d g d d d d d d g g ƒ } t t j j t | ƒ d ƒ d | d d	 d
 d d g ƒ} | j d d !} | j | j d ƒ } t	 j
 | | ƒ d | j d d +| j d d !d k j j ƒ  sø t ‚ t t j j t | ƒ ƒ d | ƒ} | j d d !} | j | j d ƒ } t	 j | | ƒ d | j d d +| j d d !d k j j ƒ  s‡t ‚ d  S(   NRŸ   i    i   i   Rž   i   R+   R#   R   R   Rq   R)   i   (   R   R   R7   R@   R   t   lenR   Rw   R+   R>   R?   Rv   R   R   R   R}   (   RD   R+   Rš   t   resR†   t   series(    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt#   test_getitem_setitem_slice_integersZ  s    !3$%$c         C   sˆ   | } | j  } | d } | | j ƒ  k | d <t j | d | | j ƒ  k ƒ | j d d g ƒ } t j | d | | j ƒ  k ƒ d  S(	   NR3   RT   R#   (   R3   RT   (   R3   RT   (   R3   RT   (   R3   RT   (   R3   RT   (   R•   t   medianR>   R}   Rw   (   RD   R™   Rš   t   dftR’   t	   reindexed(    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   test_setitem_change_dtypep  s    	
 c         C   sˆ   | } | j  d d d g } d | j | <| j | j d k j ƒ  sK t ‚ | d } d | | <| j | d f d k j ƒ  s„ t ‚ d  S(   Ni   i   i   ic   R/   ia   (   R+   R   Rv   R   R   (   RD   R™   Rš   t   subsett   col(    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   test_set_column_scalar_with_ix{  s    "

c         C   s¨   t  d d d d g d d d d g d d d d g g d	 t d
 ƒ ƒ} | j d d g ƒ } t j d g ƒ } d | j | d f <| j d ƒ d d k j ƒ  s¤ t ‚ d  S(   Ni   R'   R(   t   yt   Yi   t   zt   ZR#   t   ABCDR$   R/   t   _R0   (   i   i   (   i   i   (	   R   R|   Rƒ   R   RA   R   t   xsR   R   (   RD   RG   R   (    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   test_nonunique_assignment_1750†  s    6c         C   s‚   t  j d	 d
 d g ƒ } t t j d ƒ j d ƒ d | d t ƒ} | j j ƒ  } | d j	 t j
 ƒ | d <t j | j | ƒ d  S(   NR$   R¥   R/   R¦   i   i   R#   R-   (   R$   R¥   (   R/   R¥   (   R$   R¦   (   i   i   (   R   RA   R   R7   R8   R;   t   objectR+   RC   t   astypeRr   R>   t   assert_index_equal(   RD   RL   RG   R+   (    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt    test_astype_assignment_with_dups‘  s    (   t   __name__t
   __module__RP   Rm   RŽ   R“   R›   R¤   R­   R®   R²   R¶   R¹   RÁ   RÅ   (    (    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyR      s   	f	-	F				#	
				c         C   s:   |  j  } d | d j (| d j d k j ƒ  s6 t ‚ d  S(   Ni    R3   (   R•   Rv   R   R   (   R™   RG   (    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   test_frame_setitem_view_directž  s    	c         C   s@   |  j  } d } t j t j d | ƒ d | d d <Wd  QXd  S(   NsA   A value is trying to be set on a copy of a slice from a DataFrameR”   i   R3   RS   (   R•   Rd   Re   t   comt   SettingWithCopyError(   R™   RG   t   msg(    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   test_frame_setitem_copy_raises¦  s    	c         C   sh   |  j  } | } | j ƒ  } d } t j t j d | ƒ d | d d <Wd  QX| } t j | | ƒ d  S(   NsA   A value is trying to be set on a copy of a slice from a DataFrameR”   i   R3   RS   (   R•   RC   Rd   Re   RÉ   RÊ   R>   R?   (   R™   Rš   R   RG   RË   R   (    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt    test_frame_setitem_copy_no_write®  s    	(   t   warningsR    R   t   numpyR7   t   numpy.randomR   Rd   t   pandasRi   R   R   R   R   R   R   R	   t   pandas.core.commont   coret   commonRÉ   t   pandas.utilR
   R>   t   markt   filterwarningsRÂ   R   RÈ   RÌ   RÍ   (    (    (    sL   lib/python2.7/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyt   <module>   s   4ÿ 		