3
pd                 @   s   d dl Z d dlmZ d dlZd dlmZ d dlZd dlm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 d dljZddd	d
dddddddgZG dd dZG dd deZG dd deZdS )    N)StringIO)product)randn)is_float_dtypeis_integer_dtype)	DataFrameIndex
MultiIndexSeries	TimestampsumprodminmaxZmedianmeanZskewZmadstdvarZsemc               @   s   e Zd Zdd ZdS )Basec             C   sf  t ddddgdddggdddd	d	d
d
dddg
dd	d
dd	d	d
dd	d
g
gddgd}ttjjdd|tdddgddd| _t ddddggdd	d
dggdgd| _ddddddddgddddddddgg}t| }t j	|}t
td|d}tj|d< || _tjd| _| jjdd dd dd gj | _| jjjdd | jjjD dd  | jjjd!d"d#gdd  d S )$Nfoobarbazquxonetwothreer            firstsecond)levelscodesnames
   ABCexp)name)indexcolumns   )r)   d   c             S   s   | j S )N)year)x r/   >/tmp/pip-build-7vycvbft/pandas/pandas/tests/test_multilevel.py<lambda>>   s    z#Base.setup_method.<locals>.<lambda>c             S   s   | j S )N)month)r.   r/   r/   r0   r1   >   s    c             S   s   | j S )N)day)r.   r/   r/   r0   r1   >   s    c             S   s   g | ]}|j d qS )i8)astype).0Zlevr/   r/   r0   
<listcomp>C   s    z%Base.setup_method.<locals>.<listcomp>T)Zinplacer-   r2   r3   )r	   r   nprandomr   r   frameZsingle_levelzipfrom_tuplesr
   NaNseriestmmakeTimeDataFrameZtdfgroupbyr   ymdr)   Z
set_levelsr    	set_names)selfmethodr)   arraystuplessr/   r/   r0   setup_method    s.    .$

zBase.setup_methodN)__name__
__module____qualname__rI   r/   r/   r/   r0   r      s   r   c            
   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zejjd%d&d&d'd'd(d'gd)d)d'd'd(d'ggd*d+d,d-d.d/gd)d'd'd(d'gfd&d&d'd'd(gd)d)d'd'd(ggd*d+d,d-d.gd)d'd'd(gfd&d&d'd'd(gd)d'd'd'd(ggd*d+d,d-d.gd'd'd'd(gfgd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zejjd>d?d@gdAdB ZdCdD Z dEdF Z!dGdH Z"dIdJ Z#dKdL Z$dMdN Z%dOdP Z&dQdR Z'dSdT Z(dUdV Z)dWdX Z*dYdZ Z+d[d\ Z,d]d^ Z-ejj.d_d` Z/dadb Z0dcdd Z1dedf Z2dgdh Z3didj Z4dkdl Z5dmdn Z6dodp Z7dqdr Z8ejjdse9ejjdtdud&gejjdvdwdxgejjdydwdxgdzd{ Z:ejjdse9ejjdtdud&gejjd|dud&gejjdvdwdxgejjdydwdxgd}d~ Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMejjdddgdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZd'S )TestMultiLevelc             C   s^   | j d d | j dd   }}|j|}tj|| j  |d j|d }tj|| j d  d S )N   r$   )r:   appendr?   assert_frame_equalassert_series_equal)rD   abresultr/   r/   r0   test_appendI   s
    
zTestMultiLevel.test_appendc             C   s   t tjjddtjddddgtjddddggd}t|jtsFtt|j	t sXtt tjjddddddgddddggd}t|j	tstd S )N   rR   rS   r.   y)r)   )r*   )
r   r8   r9   r   array
isinstancer)   r	   AssertionErrorr*   )rD   multir/   r/   r0   test_dataframe_constructorR   s    ((z)TestMultiLevel.test_dataframe_constructorc             C   s   t dtjddddgtjddddggd}t|jts<tt dddddgddddggd}t|jtsltt tdddddgddddggd}t|jtstd S )Ng      ?rR   rS   r.   rW   )r)   rV   )r
   r8   rX   rY   r)   r	   rZ   range)rD   r[   r/   r/   r0   test_series_constructor_   s    * $z&TestMultiLevel.test_series_constructorc             C   s   | j jdd}|j| j jdd}| j jddjtj}tj|| |d j| j jdd}| j d jddjtj}tj	||dd | j j
jddd}|j| j jdd}| j jddjtjj
}tj|| d S )	Nr2   )levelr   r$   F)check_names)axisr_   )r*   r_   )rB   r   reindexr)   rA   	transformr8   r?   rP   rQ   T)rD   
month_sumsrT   expectedr/   r/   r0   test_reindex_levelk   s    z!TestMultiLevel.test_reindex_levelc                s0    fdd}|d |d |d |d d S )Nc                s   t t| } jjdd}| j|dd} jjddjtj}| j|}tj|| t t	| }| jd |d dd} jd jddjtj}| jd |}d|_
tj|| d S )Nr2   )r_   r$   )getattrr   rB   r   rA   rc   r8   r?   rP   r
   r(   rQ   )opnameopre   rT   Zbroadcastedrf   )rD   r/   r0   	_check_op   s    

z3TestMultiLevel.test_binops_level.<locals>._check_opsubaddmuldivr/   )rD   rk   r/   )rD   r0   test_binops_level~   s
    z TestMultiLevel.test_binops_levelc             C   s8   dd }|| j  || j j || j || jj d S )Nc             S   s   t j| }t j| | d S )N)r?   Zround_trip_picklerP   )r:   Z	unpickledr/   r/   r0   _test_roundtrip   s    
z3TestMultiLevel.test_pickle.<locals>._test_roundtrip)r:   rd   rB   )rD   rq   r/   r/   r0   test_pickle   s
    

zTestMultiLevel.test_picklec             C   s0   | j jddg }| j jddg }tj|| d S )Nr   r   r   r   r   )r   r   )r   r   )r:   iloclocr?   rP   )rD   rf   Z	reindexedr/   r/   r0   test_reindex   s    zTestMultiLevel.test_reindexc             C   s   | j jd d d }| j j|}|j|ks,t| j j| }|j|ksFt| j j}|j|d}|j|ksht|jd d |f }|j|kstd S )Nr#   )r*   )rB   r)   rb   rZ   rt   rd   r*   )rD   Z	new_indexchunkZymdTr/   r/   r0   test_reindex_preserve_levels   s    z+TestMultiLevel.test_reindex_preserve_levelsc             C   sr   t | j t | j t | jj t | jj t }| jj|d | jj|d | jjj|d | jjj|d d S )N)buf)reprr:   rB   rd   r   Z	to_string)rD   rx   r/   r/   r0   test_repr_to_string   s    

z"TestMultiLevel.test_repr_to_stringc             C   sP   t jddgdddgd}td	ddgi|d
}t|jd}|d jdsLtd S )NrR   r   r   rS   r   r   c)r"   value)r)   
r   za 0 foo)rR   r   r   )rS   r   r   )r	   r<   r   ry   split
startswithrZ   )rD   r)   dflinesr/   r/   r0   test_repr_name_coincide   s
    z&TestMultiLevel.test_repr_name_coincidec             C   sz   t tddgddgddg}tj|ddd	gd
}ttjjdddddg|d}|j }t	|d sft
t|d	 svt
d S )Nr   r   r#      g      ?g?Zprm0Zprm1Zprm2)r"   r+   r   r$   r%   r&   )r*   r)   )listr   r	   r<   r   r8   r9   r   reset_indexr   rZ   r   )rD   rG   r)   r   	deleveledr/   r/   r0   test_delevel_infer_dtype   s    z'TestMultiLevel.test_delevel_infer_dtypec             C   s   | j jdd}t|jt| j jks(t|jj| j jjks>t| jj }t|t	sVtt|jt| jjj
d ksvt|jj| jjjkst| jjdd}t|tst|jj| jjjkstd S )NT)dropr   )rB   r   lenr*   rZ   r)   r(   r>   rY   r   r    r
   )rD   r   r/   r/   r0   test_reset_index_with_drop   s    
 z)TestMultiLevel.test_reset_index_with_dropc             C   s   ddd}t j| jjdddgf< t j| jjdddgf< t j| jjdddgf< t j| jjdddgf< || j || j || jjdd || jjdd tj }tj	t
dd	 |jdd
 W d Q R X d| jd< | jjddd}tj|jttddd d S )Nr   c             S   s^   | j |}xNt|jD ]@}| j||d}| j||dj }|j|jd}tj|| qW d S )N)ra   r_   r4   )		_get_axisr]   ZnlevelscountrA   Zreindex_liker5   r?   rP   )r:   ra   r)   irT   rf   r/   r/   r0   _check_counts   s    
z6TestMultiLevel.test_count_level.<locals>._check_countsr   r      )ra   Zhierarchical)match)r_   r   DT)r_   Znumeric_onlyABCr'   )r(   )r   )r8   nanr:   rs   rB   rd   r?   r@   pytestraises	TypeErrorr   assert_index_equalr*   r   r   )rD   r   r   rT   r/   r/   r0   test_count_level   s    



zTestMultiLevel.test_count_levelc             C   s   t ddd ddgdddddgdd	d	d	dgd
}|jddgjdd}t tddgddtdgddgd}tj|| |jddgjjddd}t tddgddtdgddggd}tj|| d S )NZJohnZMylag      8@rN   g      5@!      FT)PersonAgeSingler   r   )r_   )r(   r   r   )r)   r*   datar   )r_   ra   )r*   r)   r   )r   	set_indexr   r   r?   rP   rd   )rD   r   resrf   r/   r/   r0   test_count_index_with_nan   s     z(TestMultiLevel.test_count_index_with_nanc             C   s   t dddgddddggdddd	d	gd	dd
d
d	ggd}ttjjt||d}|jdd}|jddj }tj	|j
d|j|jjd |jd
d}|jd
dj }tj	|j
d|j|jjd d S )Nr   r   r   r   r   r   fourr   r   r   )r    r!   )r)   )r_   Zf8)r	   r
   r8   r9   r   r   r   rA   r?   rQ   r5   rb   r)   fillna)rD   r)   rH   rT   rf   r/   r/   r0   test_count_level_series  s     z&TestMultiLevel.test_count_level_seriesc             C   s   | j d d d }|jdd}td|jjd dd}tj|| | j d d }|jdd}t|jjd jdg|j	dj
djtj}tj|| d S )Nr$   r   )r_   )r)   r(   r   )r)   r*   )r:   r   r
   r)   r    r?   rQ   r   rC   r*   r   r5   r8   int64rP   )rD   rH   rT   rf   r   r/   r/   r0   test_count_level_corner+  s    z&TestMultiLevel.test_count_level_cornerc             C   sT   t jtdd | jjjd W d Q R X t jtdd | jjjd W d Q R X d S )NzToo many levels)r   r   znot a valid level numberr   )r   r   
IndexErrorr:   r)   Z_get_level_number)rD   r/   r/   r0   #test_get_level_number_out_of_bounds:  s    z2TestMultiLevel.test_get_level_number_out_of_boundsc             C   s8   | j j }|j  | j jtj  | j jtjj  d S )N)rB   unstackr5   intr8   Zint32)rD   	unstackedr/   r/   r0   test_unstack@  s    
zTestMultiLevel.test_unstackz5result_rows,result_columns,index_product,expected_rowr   Ng      >@r   ix1ix2Zcol1Zcol2Zcol3Zcol4c             C   sx   t j||djddg}|jdd jd}t j|gt jj|dd  |ggd dgdt jdgddd}tj	|| d S )	N)r*   r   r   r   r   )r"   )r(   )r*   r)   )
pdr   r   rs   r   r	   from_productr   r?   rP   )rD   Zresult_rowsZresult_columnsZindex_productZexpected_rowrT   rf   r/   r/   r0   test_unstack_partialK  s    
z#TestMultiLevel.test_unstack_partialc             C   sR   t jddddg}ttjjd|d}|jdd	g}|jdd
d}tj	|| d S )Nr   r   r   r   r   r   rV   )r)   r   all)ra   how)r   r   r   )r   r   r   )r   r   r   )r   r   r   )
r	   r<   r
   r8   r9   r   r   dropnar?   rP   )rD   r)   rH   r   rf   r/   r/   r0   &test_unstack_multiple_no_empty_columnsv  s    z5TestMultiLevel.test_unstack_multiple_no_empty_columnsc             C   s  | j j }|j }tj|| j  | j jdd}|jd}|j }tj|jdd| j  |d d d }|jd}|j jdd}tj|jdd| j  |jdd}|jdjdddd}|jdjdd}tj|jdd| j  | j j }|jddd}|j }tj|| j  | j jdjd}|jd}| j j }tj|| |jd}| j jd}tj|| |jd}| j j jdjd}tj|| | j jdjd d d d df }|j j }| j j }tj||j	|j
 | j jdjd}| j jdjd}d	d
 }ttjdjddtddddgd}	tddgdddggtjtjdjddtjtjddgd}
|	j ttjd|
d }}||| dddg|	_tddgddggtjtjdjddtjdddgdgd}
|	j ttjd|
d }}||| d}tj||	_
tddgddgddggtjtjdjddtjdddgdddgtjdddgdgd}
|	j ttjd|
d }}||| d S )Nr   )r_   r   r   )ra   F)ra   Z	ascendingr   c             S   s:   t j| | | jjdkst| j|j }}t j|| d S )NF)r?   rQ   r)   Z	is_uniquerZ   r   )leftrightlirir/   r/   r0   check  s    z(TestMultiLevel.test_stack.<locals>.check   rV   ZababZ1stZ2ndZ3rd)r)   r*   rR   rS   )r    r!   )r)      rR   r   rS   r   rR   r   rS   r   )r   r   r   r   )rB   r   stackr?   rP   
sort_index	swaplevelrt   rQ   rb   r)   r   r8   arangereshaper   r	   tilerepeatr
   r*   r<   )rD   r   	restackedZunlexsortedrT   rf   stackedZymd_stackedr   r   mir   r   Ztplsr/   r/   r0   
test_stack  sx    







 
.
.
zTestMultiLevel.test_stackc             C   s@   d}t jt|jdddg}|jd}|j }tj|| d S )Na  day,time,smoker,sum,len
Fri,Dinner,No,8.25,3.
Fri,Dinner,Yes,27.03,9
Fri,Lunch,No,3.0,1
Fri,Lunch,Yes,13.68,6
Sat,Dinner,No,139.63,45
Sat,Dinner,Yes,120.77,42
Sun,Dinner,No,180.57,57
Sun,Dinner,Yes,66.82,19
Thur,Dinner,No,3.0,1
Thur,Lunch,No,117.32,44
Thur,Lunch,Yes,51.51,17r3   timeZsmokerr   )r   Zread_csvr   r   r   r   r?   rP   )rD   r   r   rT   reconsr/   r/   r0   test_unstack_odd_failure  s
    
z'TestMultiLevel.test_unstack_odd_failurec             C   sp   | j j}d|d< |jddd}|j }|d j j }tj|d |dd |jd ksXt|d jt	j
ksltd S )	Nr   r   r   )r_   ra   F)r`   r   )r   r   )r:   rd   r   r   r?   rQ   r(   rZ   dtyper8   Zfloat_)rD   r   r   rT   r/   r/   r0   test_stack_mixed_dtype  s    z%TestMultiLevel.test_stack_mixed_dtypec          
   C   s   t ddddddgddddddgddddddgd	d	d
d
d
dgtjdd}|jddddgjt}|j }|j }tj	||j
|jjt d S )NZnaiveZactivrR   rS   r   r   r   rV   hiZbyeZpeaceg      @)stater'   barcodevextrar   r'   r   r   )r   r8   r   rA   applyr   r   r   r?   rQ   rb   r)   r5   float)rD   r   rT   r   r   r/   r/   r0   test_unstack_bug  s    zTestMultiLevel.test_unstack_bugc             C   sP   | j j }|jjdkst|jjddgks.t|j }|jj| j jjksLtd S )Nr   r'   r   )r:   r   r)   r(   rZ   r*   r"   r   )rD   r   r   r/   r/   r0   !test_stack_unstack_preserve_names  s
    
z0TestMultiLevel.test_stack_unstack_preserve_namesrE   r   r   c             C   sz   | j jd }tjtdd t||d W d Q R X |dkrv|jd d df }tjtdd t||d W d Q R X d S )Nr   zdoes not match index name)r   Zmistaker   r   )r:   rt   r   r   KeyErrorrh   rs   )rD   rE   r   rH   r/   r/   r0   #test_stack_unstack_wrong_level_name  s    z2TestMultiLevel.test_stack_unstack_wrong_level_namec          	   C   s^   t dddgddggddgddggd}tdtd	|d
}tjtdd |d  W d Q R X d S )NZa_lotZonlyoneZ
notevenonei   r   r   )r    r!   r   )r)   r*   )r   r   )r	   r   r]   r   r   r   )rD   r   r   r/   r/   r0   test_unused_level_raises,  s    z'TestMultiLevel.test_unused_level_raisesc             C   s*   | j jd}| j jdd}tj|| d S )Nr   r   )r_   )r:   r   r?   rP   )rD   rT   rf   r/   r/   r0   test_unstack_level_name7  s    z&TestMultiLevel.test_unstack_level_namec             C   sX   | j jd}|jd}| j j jd}tj|| | j jd}| j j }tj|| d S )Nr   r'   r   )r:   r   r   r?   rP   rQ   )rD   r   rT   rf   r/   r/   r0   test_stack_level_name<  s    

z$TestMultiLevel.test_stack_level_namec             C   s@  | j jddg}| j jdjd}tj|| |jj|jjksBt| j d }|jddg}tj||d  |jddg}|jddjdd}|j	dd}tj|| j  |j
j| j j
jkst| j jddg}| j jdjdjddd	}tj|| | j jddg}| j jdjdjddd	}tj||jd d |jf  d S )
Nr-   r2   r$   r   r   r   )r_   r   )ra   r   )rB   r   r?   rP   r*   r"   rZ   r   r   r   r)   r   rt   )rD   r   rf   rH   Zs_unstackedr   r/   r/   r0   test_stack_unstack_multipleF  s$    
z*TestMultiLevel.test_stack_unstack_multiplec          
   C   s<   | j jddg}tjtdd |jddg W d Q R X d S )Nr-   r2   zlevel should contain)r   r   )rB   r   r   r   
ValueErrorr   )rD   r   r/   r/   r0   test_stack_names_and_numbersa  s    z+TestMultiLevel.test_stack_names_and_numbersc             C   sd   | j jddg}tjtdd |jddg W d Q R X tjtdd |jd	d
g W d Q R X d S )Nr-   r2   zToo many levels)r   r   r   znot a valid level numberrV   r   )rB   r   r   r   r   r   )rD   r   r/   r/   r0   !test_stack_multiple_out_of_boundsh  s
    z0TestMultiLevel.test_stack_multiple_out_of_boundsc          	   C   s   t jddddddgddd}tddgd	 d
d}ddd	dddg}tj||g}t||d}|j }|jdd}|jdd}t jdddgddd}	tdd	dgdddgd|	ddgd}
d
|
j_	t
j||
 t
j||
 t
j||
j t jddddddgddd}t jddddddgddd}tj||g}t||d}|j }|jdd}|jdd}t jdddgddd}	t jddddddgddd}ttjtjtjtjddgtjtjdd	tjtjgddtjtjtjtjgg|	|d}
t
j||
 t
j||
 t
j||
j d S )Nz2013-01z2013-02z2013-03MZperiod)freqr(   r$   r%   r   str)r(   r   r   rV   rN   r   )r)   )r_   r   )r$   r%   )r)   r*   period1z2013-12z2013-11z2013-10z2013-09z2013-08z2013-07period2)r   PeriodIndexr   r	   from_arraysr
   r   r   r*   r(   r?   rP   rd   r8   r   )rD   idx1idx2r|   idxrH   result1result2result3Ze_idxrf   e_colsr/   r/   r0   test_unstack_period_seriesq  s^    "z)TestMultiLevel.test_unstack_period_seriesc             C   s  t jddddddgddd}t jddddddgddd}d	d
ddddgddddd
d	gd}tj||g}t||d}|j }|jd	d}|jdd}t jddgddd}	t jddddddgddd}
tjdj |
g}tdd	dd
dd	gdd
ddddgg|	|d}tj|| tj|| t jddddgddd}	t jdddgddd}
tjdj |	g}tddd
dgd	d
ddgddd	dgg|
|d}tj|| d S )Nz2014-01z2014-02r   r   )r   r(   z2013-12z2013-10r   r   r   r   rV   rN   r   )r$   r%   )r)   )r_   r   zA A A B B B)r)   r*   zA A B B)	r   r   r	   r   r   r   r~   r?   rP   )rD   r   r   r|   r   r   r   r   r   Ze_1Ze_2r   rf   r/   r/   r0   test_unstack_period_frame  s@    "(*z(TestMultiLevel.test_unstack_period_framec             C   s   dgd dgd  }dgd dgd  }t jdddgd }tjjd	d
d}tt||||d}|jddg}d|j_	|j
d}|jdj }|jd}	|jdddgf jdj jd}
d|
j_	tj|	|
 dS )z8 bug when some uniques are not present in the data #3170r   r   r   rR   rS   z
2013-01-03z
2013-01-04z
2013-01-05r   r,   r   )IDNAMEDATEVAR1r   r   ZParamszW-THUNr   )r   to_datetimer8   r9   randintr   dictr   r*   r(   r   Zresampler   r   rt   r?   rP   )rD   Zid_colr(   dateZvar1r   r[   ZunstZdownrsZxpr/   r/   r0   test_stack_multiple_bug  s    

$z&TestMultiLevel.test_stack_multiple_bugc             C   sv   t ddgddgddgd}|jddg}|j jd	d
}t|t|j ksRt|j jdd
}tj||j  d S )Na1a2b1b2r   )r$   r%   r&   r$   r%   F)r   T)	r   r   r   r   r   r   rZ   r?   rP   )rD   r   r   r/   r/   r0   test_stack_dropna  s    z TestMultiLevel.test_stack_dropnac             C   s   t ddddddddgddddddddgddddddddggddddgddddggd}dddg|j_ddg|j_|jddg d S )	Nr   r   )r)   r*   rR   rS   r{   de)r   r)   r"   r*   r   )rD   r   r/   r/   r0   "test_unstack_multiple_hierarchical  s    z1TestMultiLevel.test_unstack_multiple_hierarchicalc             C   s\   | j d }|jjd}|j|}|jdd }|jdd }|j|j}tj||dd d S )Nr$   r   c             S   s   | d S )Nr   r/   )r.   r/   r/   r0   r1     s    z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>c             S   s   | d S )Nr   r/   )r.   r/   r/   r0   r1     s    F)r`   )	r:   r)   get_level_valuesrA   r   rc   rb   r?   rQ   )rD   rH   ZgroupergroupedZappliedrf   rT   r/   r/   r0   test_groupby_transform  s    

z%TestMultiLevel.test_groupby_transformc          	   C   s   d}t tjjd|dtjjd|dtjjdd|dtjjdd|dtjjd|dtjj|d}|jd	d
dddg}|jd d S )Ni  r,   )sizei,  r      i  )r$   r%   r&   r   EFr$   r%   r&   r   r  ii)r   r8   r9   r   r   r   r   )rD   ZNUM_ROWSr   idfr/   r/   r0   test_unstack_sparse_keyspace  s    z+TestMultiLevel.test_unstack_sparse_keyspacec             C   s~   ddgddddgg}ddddgddddgg}t ||}ttjjdd|d}|j }t|jdksft|j	 }t
j|| d S )Nr   r   r   r   rV   )r)   )r	   r   r8   r9   r   r   r   r*   rZ   r   r?   rP   )rD   r    r!   r)   r   rT   r   r/   r/   r0   test_unstack_unobserved_keys2  s    
z+TestMultiLevel.test_unstack_unobserved_keysc          	   C   sL   t tjjddtjdtjdgd}tjtdd |j  W d Q R X d S )	Nr      )r)   zint32 overflow)r   i   i   i   )	r   r8   r9   r   r   r   r   r   r   )rD   r   r/   r/   r0   /test_unstack_number_of_levels_larger_than_int32A  s    $z>TestMultiLevel.test_unstack_number_of_levels_larger_than_int32c       
   	   C   s  dd }xdD ]}t jt jdddg|dd}xl|D ]d}t|ddddgddddggd}t|td	gd
}x,tdD ] }|j|}||||d|  qtW q4W qW tdddgdddggtjtddtj	tddgd}	t|	tdtj
dt|	 jddd}|||jddd d S )Nc                s&   t  fdd jD s"td S )Nc             3   sB   | ]:} j D ].} j||f j|| f| f kV  qqd S )N)r*   rt   )r6   rowcol)r   
df_stackedlev0lev1r/   r0   	<genexpr>O  s   zgTestMultiLevel.test_stack_order_with_unsorted_levels.<locals>.manual_compare_stacked.<locals>.<genexpr>)r   r)   rZ   )r   r  r  r  r/   )r   r  r  r  r0   manual_compare_stackedM  s    zTTestMultiLevel.test_stack_order_with_unsorted_levels.<locals>.manual_compare_stackedr   r   r   r   )r   )r    r!   rV   )r*   r   r$   r&   r%   rN   )r*   r)   r   )r   r   r   )	itertoolsr   permutationsr	   r   r]   r   r8   r   r   r   r   r   )
rD   r  widthZlevels_possr    r*   r   Z	stack_levr  r   r/   r/   r0   %test_stack_order_with_unsorted_levelsJ  s     

 
$&z4TestMultiLevel.test_stack_order_with_unsorted_levelsc             C   s   t jd}t jdd |D dd |D g}tj|jddgd}d|j_d	|i}tj|d
d}ddg|j_	|j
t|jd
d}|jddgjddg}tddgddgddgddgddggdd
dddgtjddgddgdd}tj|| d S )NrN   c             S   s   g | ]}d | qS )rS   r/   )r6   r.   r/   r/   r0   r7   p  s    zJTestMultiLevel.test_stack_unstack_unordered_multiindex.<locals>.<listcomp>c             S   s   g | ]}d | qS )rR   r/   )r6   r.   r/   r/   r0   r7   q  s    rS   rR   )r*   r   r.   r   )ra   r   Za0Zb0r  r  r  r  a3Zb3Za4Zb4r   r   r   rV   )r"   )r)   r*   )rR   r.   )rS   r.   )r8   r   Zvstackr   r   rd   r*   r(   concatr"   rb   sortedr   r   r	   r<   r?   rP   )rD   valuesr   r   Zsecond_level_dictZmulti_level_dfrT   rf   r/   r/   r0   'test_stack_unstack_unordered_multiindexk  s"    
 z6TestMultiLevel.test_stack_unstack_unordered_multiindexc             C   s\   t dgdgdggdgdgdggdddgd}ttjjd	gd
dddg|d}|jdd d S )Nr   r   r   r   r   r   r   )r    r!   r"   rV   rR   rS   r{   r  )r*   r)   )r_   )r	   r   r8   r9   ZrandrA   )rD   midxr   r/   r/   r0   test_groupby_corner  s     z"TestMultiLevel.test_groupby_cornerc             C   s   t jddddddg}tdddd	d
dgddddddgg|d}|jdd|jjdd  }|jddd}|j }|jddgkj st	d S )Nf1s1s2f2f3r   r   r   rV   rN   r   r   r+   	   r#      r   )r*   )ra   c             S   s   | d dkS )Nr   r+  r,  )r+  r,  r/   )ur/   r/   r0   r1     s    z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   )ra   r_   )r(  r)  )r(  r*  )r+  r)  )r+  r*  )r,  r)  )r,  r*  )
r	   r<   r   rt   r*   maprA   r   r   rZ   )rD   r&  r   df1r  rT   r/   r/   r0   test_groupby_level_no_obs  s    (z(TestMultiLevel.test_groupby_level_no_obsc             C   s   | j j| j jd d dgf }| j j| j jdd  ddgf }|j|ddj| j j}| j j }tj|jtj	|j< tj	|jj
  sttj||dd	 d S )
NrN   r$   r   r%   r&   outer)r   F)r`   )r:   rt   r)   joinrb   copyr8   r   r$  isnanr   rZ   r?   rP   )rD   rR   rS   Zjoinedrf   r/   r/   r0   	test_join  s     
zTestMultiLevel.test_joinc          
   C   sD  | j d j }| j d jd}| j d jdd}| j d jdd}|jj| j j sXttj|| tj|| tj|| |j }|jd}|jdd}|jdd}|jj| j jsttj|| tj|| tj|| | j j}	|	jdddd}| j jddj}
tj||
 d}t	j
t|d ttd	j  W d Q R X d S )
Nr$   r   r   r   r   )ra   z,Can only swap levels on a hierarchical axis.)r   r   )r:   r   r)   equalsrZ   r?   rQ   rd   rP   r   r   r   r   r]   )rD   ZswappedZswapped2Zswapped3Zswapped4backZback2Zback3Zback4ftr'   msgr/   r/   r0   test_swaplevel  s.    
zTestMultiLevel.test_swaplevelc             C   sH   | j d d j}|d |d< t|jts,t|d |d	 kj sDtd S )
NrN     r   r   r#   )r=  r   r   )r=  r   r#   )r=  r   r#   )r=  r   r   )rB   rd   rY   r*   r	   rZ   r   )rD   r   r/   r/   r0   test_insert_index  s    z TestMultiLevel.test_insert_indexc             C   s   t dddgtjdddgd}t ddd	gtjdddgd}|| }|jj|j}|j||j| }tj|| |d d d |d d d  }|jj|j}|j||j| }tj|| d S )Nr   r   r   r$   r%   )r   r)   rV   rN   r   Z)r$   r   )r$   r   )r%   r   )r?  r   )r?  r   )r%   r   r   r   )r
   r	   r<   r)   unionrb   r?   rQ   )rD   r.   rW   r   	exp_indexr'   r/   r/   r0   test_alignment  s    zTestMultiLevel.test_alignmentc             C   s*  | j j }ddg|j_|jdd}| j jdd}tj||dd |jdd}| j jdd}tj||dd | jj }ddg|j_|jdd}| jjddjd}tj	|| |jdd}| jjddjd}tj	|| d}t
jt|d	 |jd
 W d Q R X t
jt|d	 |jd
d W d Q R X d S )NrR   rS   )r_   r   F)r`   r   zLevel x not found)r   r.   )r:   r5  r)   r"   r   r?   rP   r>   rename_axisrQ   r   r   r   )rD   r:   rT   expectr>   r;  r/   r/   r0   
test_count  s*    

zTestMultiLevel.test_countrj   r_   r   skipnaTFsortc                sX   | j j||d}|j fdd}t| j  |d}|rH|j|d}tj|| d S )N)r_   rG  c                s   t |  dS )N)rF  )rh   )r.   )rj   rF  r/   r0   r1   	  s    z:TestMultiLevel.test_series_group_min_max.<locals>.<lambda>)r_   rF  )r_   )r>   rA   aggrh   r   r?   rQ   )rD   rj   r_   rF  rG  r  leftside	rightsider/   )rj   rF  r0   test_series_group_min_max  s    z(TestMultiLevel.test_series_group_min_maxra   c                s   t j| jjdddgf< t j| jjdddgf< | jjj| } dkrJ| j}n| jj}|j| |d}g  fdd}	|j|	}
t	|| d}|r|j
| d	}|j
| d	}|j j| j|}tj|
j | tj|j | tj|
| d S )
Nr   r   r   r   )r_   ra   rG  c                s   j |  t|  dS )N)rF  ra   )rO   rh   )r.   )ra   rj   piecesrF  r/   r0   aggf$  s    
z1TestMultiLevel.test_frame_group_ops.<locals>.aggf)r_   ra   rF  )r_   ra   )r8   r   r:   rs   r)   r"   rd   rA   rH  rh   r   r   r    renamer?   r   rP   )rD   rj   r_   ra   rF  rG  Z
level_namer:   r  rM  rI  rJ  Zlevel_indexr/   )ra   rj   rL  rF  r0   test_frame_group_ops  s$    
z#TestMultiLevel.test_frame_group_opsc             C   sB   t dgtjdgd}|jdd}t dgdgd}tj|| d S )Ng      $@r   r   )r)   r   )r_   )r   r   )r
   r	   r<   r   r?   rQ   )rD   objrT   rf   r/   r/   r0   test_stat_op_corner6  s    z"TestMultiLevel.test_stat_op_cornerc          
   C   s   t ddddddddgidddddddgddddddd	ggd
}|jdd}t dddgiddgd
}tj|| |jdd}t dddgiddgd
}tj|| d S )Nr   FTr   r   r   r   r   r   )r)   )r_   )r   anyr?   rP   r   )rD   r   rT   exr/   r/   r0   test_frame_any_all_group=  s    z'TestMultiLevel.test_frame_any_all_groupc             C   s   t tddgttjddtjddgd}|jdd}tddgd	d
gd}tj|| |jdd}tddgd}tj|| d S )Nr   rH   r   ms)rR   t)ra   FTrR   rV  )r   r)   )r   )r   r
   r   Zto_timedeltarR  r?   rQ   )rD   r   rT   rf   r/   r/   r0   test_series_any_timedeltaN  s    
"z(TestMultiLevel.test_series_any_timedeltac                s   t jtjdjdtjtjddg}ttjjt	|d|d}xdD ]~d  fdd}t
|d	 d	 d
}|d	 jd	dj|}tj|| t
|d	 d
}|jd	dj|}tj|| qHW d S )NrN   r#   )r)   r   r   rV   c                s   t |  dS )N)ddof)rh   )r.   )rX  methr/   r0   r1   g  s    z7TestMultiLevel.test_std_var_pass_ddof.<locals>.<lambda>r   )r_   rX  )r_   )r   r   )r	   r   r8   r   r   r   r   r9   r   r   rh   rA   rH  r?   rQ   rP   )rD   r)   r   ZaltrT   rf   r/   )rX  rY  r0   test_std_var_pass_ddof_  s    $
z%TestMultiLevel.test_std_var_pass_ddofc             C   st   | j jddgd}| j jddgdj }tj|| | j d jddgd}| j d jddgdj }tj|| d S )Nr-   r2   )r_   r$   )rB   r   rA   r?   rP   rQ   )rD   rT   rf   r/   r/   r0   %test_frame_series_agg_multiple_levelsq  s    z4TestMultiLevel.test_frame_series_agg_multiple_levelsc             C   s   | j jddgdj }| j jjd}| j jjd}| j j||gj }tj||dd |jj| j jjd d kstt| j j| j jjd d dj }tj|| d S )Nr   r   )r_   F)r`   r   )	rB   rA   r   r)   r
  r?   rP   r"   rZ   )rD   rT   Zk1Zk2rf   r   r/   r/   r0   test_groupby_multilevelz  s     z&TestMultiLevel.test_groupby_multilevelc             C   s   d S )Nr/   )rD   r/   r/   r0   &test_groupby_multilevel_with_transform  s    z5TestMultiLevel.test_groupby_multilevel_with_transformc             C   sD   t jd
dddg}ttjjdd||d}|jd|d< |j }d S )Nr   r   r   r   rV   )r)   r*   r   Totalsr   )r   r   )r   r   )r   r   )r   r   )r^  r   )r	   r<   r   r8   r9   r   r   Z_consolidate)rD   r)   r   r/   r/   r0   test_multilevel_consolidate  s
    z*TestMultiLevel.test_multilevel_consolidatec             C   s   | j jd }| j d jd }|jj| j jjdd  ks:t|jj| j jjdd  ksXt| j jd }| j d jd }|jj| j jjd kst|jj| j jjd kstd S )N  r$   r   r   )r`  r   )r`  r   )rB   rt   r)   r"   rZ   r(   )rD   rT   r   r/   r/   r0   test_loc_preserve_names  s    z&TestMultiLevel.test_loc_preserve_namesc             C   s`   d| j d< d| j d< | j jd}|d jtjks4t|d	 jtjksHt|d
 jtjks\td S )Nr   r  r   r  r2   r$   r   )r$   r   )r  r   )r  r   )rB   r   r   r8   Zfloat64rZ   Zobject_)rD   r   r/   r/   r0   test_unstack_preserve_types  s    

z*TestMultiLevel.test_unstack_preserve_typesc             C   sj  t jt jdd}t jd}t|gd ddgg |gd t jdjdg d}tt jd|d}|j }|jd
ksxt|j	 }t
j||j|j tddgg|gd  t jdjdg|gd  d}tt jd|d}|jd}|jdkstt|gd	 ddgg |gd	  |gd	 t jdjdg |gd	  d}tt jd|d}|jd	}|jdksftd S )N  r   r+   r   r   )r    r!   i  )r)   rV   )rc  r   )rc  r   )rc  r   )r8   r   r   r	   r   r
   r   shaperZ   r   r?   rQ   rb   r)   )rD   r!   r_   r)   rH   rT   r   r/   r/   r0   !test_unstack_group_index_overflow  s,    
  
*
z0TestMultiLevel.test_unstack_group_index_overflowc             C   s$   d| j j_| j j  | j jj  d S )Nr   )rB   r*   r(   Zto_htmlrd   )rD   r/   r/   r0   test_to_html  s    

zTestMultiLevel.test_to_htmlc             C   s  t dddgddggddddddgddddddggd}ttjjd	|d
}ttjjd	d|d
}|d }|jd }|d d }|jjd|_t	j
|| t	j
|| tjtdd |d  W d Q R X |jd }|jd}|d d }|jjd|_t	j|| t	j|| t dddgddggddddddgddddddggd}ttjjd	|d
}ttjjd	d|d
}|d }|jd }|d d }|jjd|_t	j
|| t	j
|| |jd }|jd}|d d }|jjd|_t	j|| t	j|| d S )Nr   r   r   r   r   r   r   )r    r!   r   )r)   rV   z^\(\('foo', 'bar', 0\), 2\)$)r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r   r   r   )rg  r   )r   r   r   )r   r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r	   r
   r8   r9   r   r   rt   r)   Z	droplevelr?   rQ   r   r   r   xsrP   )rD   r)   r>   r:   rT   r   rf   r/   r/   r0   test_level_with_tuples  sH    $


$


z%TestMultiLevel.test_level_with_tuplesc       	      C   s   ddddddgddddddgdd	d
dddgg}t t| }tj|}ttdd|d}|j }|j }|jd}|jd}tj	||dd tj
|| |jdkst|d }|jdgdd}|jd}tj
|| tj
|| d S )NrR   topZroutine1Zroutine2r   ZODr   r   ZwxZwyrV   r   )r*   F)r`   r   )ra   )rR   r   r   )r#  r;   r	   r<   r   r   r5  popr?   rQ   rP   r(   rZ   r   )	rD   rF   rG   r)   r   r1  df2rT   rf   r/   r/   r0   test_mixed_depth_pop  s$    



z#TestMultiLevel.test_mixed_depth_popc             C   s   | j jddgdd}| j jdddddd	g }tj|| | j jjddgddd
}tj||j | j jddg }tj|| | j d jddg }tj||d  | j jjd d ddgf }tj||j d S )Nr   r   r   )r_   r   r   r   r+   r-  )ra   r_   r$   )r:   rb   rs   r?   rP   rd   rt   rQ   )rD   rT   rf   r/   r/   r0   $test_reindex_level_partial_selection  s    z3TestMultiLevel.test_reindex_level_partial_selectionc             C   sP   t jd	d
gddgd}ttd|d}ttjjdd|d}t| t| d S )Nr   r   u   Δi1)r"   r   )r)   rV   )r   r   )r   r   )	r	   r<   r
   r]   r   r8   r9   r   ry   )rD   r)   rH   r   r/   r/   r0   test_unicode_repr_level_names-  s
    z,TestMultiLevel.test_unicode_repr_level_namesc             C   st   t ddgddgddgd}t ddgddgddgd}|jddg}|jddg}xdD ]}|j||d
 qZW d S )Nr   r   )rR   rS   r.   )rR   rS   rW   rR   rS   r   r   r3  )r   )r   r   r3  )r   r   r4  )rD   r1  rl  r   r/   r/   r0   test_join_segfault5  s    
z!TestMultiLevel.test_join_segfaultc             C   st   t ddddgtjd	d
ddgd}t ddddgtjddddgd}t td}t|||d tj|||d d S )Nr   r   r   rV   )r)   )r   )r   r   r   )r   r   r   )r   r   )r   r   )r   r   )r   rV   )r   r   )r   r   )r   r   )r   rV   )r
   r	   r<   objectr   Z	from_dict)rD   r)  r*  Zs3r/   r/   r0   (test_frame_dict_constructor_empty_series?  s      
z7TestMultiLevel.test_frame_dict_constructor_empty_seriesr  rV   c             C   sx   dddg}t dgdgdg|gd}||jdk j|}|j j}tdgdgdggg g g gdddgd}tj|| d S )	NrR   rS   r{   r   r   r   )rR   rS   r{   r  )r    r!   r"   )r   rR   rA   r   r)   r	   r?   r   )rD   r  Z
group_keysr   grT   rf   r/   r/   r0   +test_empty_frame_groupby_dtypes_consistencyL  s    

$z:TestMultiLevel.test_empty_frame_groupby_dtypes_consistencyc             C   sz   t dd d
didd dtjidd dtjidd dtjidd ddid	d dtjii}|jdd dd g}t| d S )Nr$      A0006000nuitr%   r&   r   r  r  )r$   rw  rx  )r$   rw  rx  )r$   rw  rx  )r$   rw  rx  )r$   rw  rx  )r$   rw  rx  )r   r8   r   r   ry   )rD   Zdf3r  r/   r/   r0   test_multiindex_na_reprZ  s    z&TestMultiLevel.test_multiindex_na_reprc             C   sj   t dddgdddgddd	gd
jddg}t|j}d|d< ||_t| ddg|d< ||_t| d S )Nr   r   r   rV   rN   r   r   r+   r-  )rR   rS   r{   rR   rS   fazboor   )rz  r{  )r   r   r   r)   ry   )rD   r   r)   r/   r/   r0   test_assign_index_sequencesj  s    "

z*TestMultiLevel.test_assign_index_sequencesc             C   sZ   ddddg}ddddg}t j|ddgd}t||d	}|j|jj }t|d
ksVtd S )N600809200612312007033120070630ZdemoZSTK_IDZRPT_Date)r"   )r)   r   )r}  r~  )r}  r  )r}  r  )r}  r  )r	   r<   r
   rA   r)   r   r   rZ   )rD   Zidx_tpdtr   rH   rT   r/   r/   r0   test_duplicate_groupby_issuesy  s    z,TestMultiLevel.test_duplicate_groupby_issuesc          
   C   s   t ddddgddddgddd	d
gddddgddddgddddggtdd}|jddg}|jdd}t ddddgddddgddddggtddjddg}|jd }tj|| d S )Nr   r   g      ?r   g       @r   ZbahZbamg      @r   g      @rV   g      @rN   g      @r   ABCD)r*   r$   r%   r   )r_   )r   r   )r   r   r   r   rt   r?   rP   )rD   r   rf   rT   r/   r/   r0   test_duplicate_mi  s     




 

z TestMultiLevel.test_duplicate_mic             C   sL   dddgdddgd}t |}dddg}||d
< tj|d
 }|j| d S )Nr   g      @r   rV   rN   r   )t1t2r   r   rG   )r   r   )r   r   )r   r   )r   r	   r<   r   )rD   r  r   rG   r)   r/   r/   r0   test_multiindex_set_index  s    
z(TestMultiLevel.test_multiindex_set_indexc             C   sF  t ddddddgddddddgtdd}tj|jdd	d
|_|jjd|_tjdddgdd}|jdjd}|j	dd	d}t
j|jjd | t
j|jjd tddgdd |jjddgkst|jdd}t
j|jjd tddgdd t
j|jjd | |jjddgks tt tjjd}tjddddddgdd}tjddddddgdd}tjdddd}|jd }|j	|}|j	|d	d}|j	|d	d}tjdddgdd}tjddgdd}t
j|jjd | t
j|jjd | t
j|jjd | t
j|jjd| t
j|jjd| t
j|jjd| d S )NrR   rS   z2011-07-19 07:00:00z2011-07-19 08:00:00z2011-07-19 09:00:00r   )labeldatetimer|   r  T)utcz
US/Pacific)r(   UTCr  )rO   r   r   z
US/Eastern)tzz2012-04-01 09:00z2012-04-02 09:00z2011-01-01 09:00z
Asia/Tokyo)periodsr  r   )r   r]   r   r   rk  r)   Z
tz_convertZDatetimeIndexZtz_localizer   r?   r   r    r   r"   rZ   r   r8   r9   
date_rangeZ
_with_freqr
  )rD   r   rf   r   r   idx3	expected1	expected2r/   r/   r0   test_set_index_datetime  sp      

z&TestMultiLevel.test_set_index_datetimec                s  xd0D ] t jddd dd}ttdd	d
d}tj||g}ttjdd
ddddddgd|d}tt	j	dddt	j	dddt	j	dddt	j	dddt	j	dddgtjdd
dtjdd
ddddddgddd	ddgd}|d j
 fdd|d< tj|j | t jdddd d!d}tj|||g}ttjdd
ddddddgd|d}tt	j	dddt	j	dddt	j	dddt	j	dddt	j	dddgtjdd
dt	j	d"ddt	j	d"ddt	j	d"ddt	j	d"ddt	j	d"ddgtjdd
ddddddgd#dd	d!ddgd}|d j
 fd$d|d< |d! j
d%d |d!< tj|j | tjddgt jd&d d'g}ttjd(d
djd(ddg|d)}td*j t	j	d+ddt	j	d+ddt	j	d+ddgd tjd(d
dd,d-d.dgd}|d. j
 fd/d|d.< tj|j | qW d S )1Nr  
Asia/Tokyo
US/Easternz1/1/2011rN   r   r   )r  r   r  r(   r   r   )r(   r   )r   r$   r%   r&   r  )rR   rS   )r)   i  r   r   r   rV   )r   r   rR   rS   rR   rS   )r*   c                s   t |  dS )N)r  )r   )r  )r  r/   r0   r1     s    z:TestMultiLevel.test_reset_index_datetime.<locals>.<lambda>z1/1/2012ZMSzEurope/Parisr  i  )r   r   r  rR   rS   c                s   t |  dS )N)r  )r   )r  )r  r/   r0   r1   8  s    c             S   s   t | ddS )NzEurope/Paris)r  )r   )r  r/   r/   r0   r1   :  s    20130101)r  r  r   )r*   r)   za a a b b bi  )level_0level_1rR   r  r  c                s   t | d dS )Nr   )r   r  )r   )r  )r  r/   r0   r1   T  s    )r  r  r  )r   r  r   r]   r	   r   r   r8   r   r  r   r?   rP   r   r   r   r~   )rD   r   r   r   r   rf   r  r/   )r  r0   test_reset_index_datetime  sv     z(TestMultiLevel.test_reset_index_datetimec             C   s   t jtjddddtdgddgd}ttjd	d
djdd|dgd}ttj	dddgd tj	dddgd  tj	dddgd  dddgd tjd	d
dddddgd}t
j|j | d S )Nr  r   r   )r  r   abcr2   feature)r"   r-  r   )r   r   rR   )r)   r*   z2013-01)r   z2013-02z2013-03rS   r{   )r2   r  rR   )r*   r   )r	   r   r   period_ranger   r   r8   r   r   ZPeriodr?   rP   r   )rD   r   r   rf   r/   r/   r0   test_reset_index_periodX  s     :z&TestMultiLevel.test_reset_index_periodc             C   s  ddgddgg}t ddgddggtj|d	}|dg jdj }tj|| d
}tjt	|d |jdj  W d Q R X |j
dgj }tj|| t dgdggtjdgd	}tj||ddg gdd}|j
dgddj }tj|| d}tjt	|d |jdgj  W d Q R X dddgdddgg}t ddgddggtj|d	}t dgdggtjdgd	}tj||gdd}|jd gjdd}tj|| tjt	dd |jd!gjd d W d Q R X |jd"gjddd}tj|| d S )#Nr$   r   r%   rS   r   r   r   r   )r*   z)cannot insert \('A', ''\), already exists)r   r  )ra   T)rO   z0Item must have length equal to number of levels.r&   r{   r   rR   ii)col_fillzFcol_fill=None is incompatible with incomplete column name \('C', 'c'\))Z	col_levelr  )r$   r   )r  r   )r%   rS   )r$   r   )r%   rS   )r&   r{   r   )r&   r{   r  )r&   r{   )r&   r{   )r{   r  )r   r	   r<   rC  r   r?   rP   r   r   r   r   r   r"  )rD   r    r   rT   r;  Zidx_colrf   rl  r/   r/   r0   #test_reset_index_multiindex_columnsp  s<    
z2TestMultiLevel.test_reset_index_multiindex_columnsc             C   s  t tjjd}tjdddd}|j|}tjdddd}|j|j|}tjd	dd
d}|j|}|j|dd}|j|dd}tjdddd}tjdddd}tj|j	j
d | tj|j	j
d | tj|j	j
d | tj|j	jd| tj|j	jd| tj|j	jd| d S )Nr   z
2011-01-01r   r   )r  r   z2013-01-01 09:00r   HZ2005r$   T)rO   r   r   )r   r8   r9   r   r  rO   r   r?   r   r)   r    r
  )rD   r   r   r   r  r  r  r/   r/   r0   test_set_index_period  s"    

z$TestMultiLevel.test_set_index_periodc             C   sL   t jddddg}d	d
ddg}t||d}|jdjdt| fksHtd S )Nr   r   r   rV   rN   r   r   r+   rR   rS   r{   r  )r)   )r   r   )r   rV   )rN   r   )r   r+   )r	   r<   r
   r   rd  r   rZ   )rD   Zm_idxr   Zm_dfr/   r/   r0   test_repeat  s    zTestMultiLevel.test_repeatc             C   sR   ddgg}ddt jfdg}t|tjj|d}|jjj}|jjj}t	j
|| d S )	Nr.   r   rR   rS   r{           )r*   )rR   r{   r  )r8   r   r   r   r	   r<   ZdtypesrR   rS   r?   rQ   )rD   r   r*   r   rf   rT   r/   r/   r0   test_subsets_multiindex_dtype  s    


z,TestMultiLevel.test_subsets_multiindex_dtype)[rJ   rK   rL   rU   r\   r^   rg   rp   rr   ru   rw   rz   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  Zslowr  r   r%  r'  r2  r7  r<  r>  rB  rE  AGG_FUNCTIONSrK  rO  rQ  rT  rW  rZ  r[  r\  r]  r_  ra  rb  re  rf  ri  rm  rn  rp  rq  rs  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r/   r/   r/   r0   rM   H   s   	


a
	E/	!
 "#	
%0
R]4rM   c               @   sF  e Zd ZdZdd Zdd Zdd Zejj	dd	d
gd	d	d
d
gddddggfd
d	gd
d
d	d	gddddggfd
d	gddgfd
d
d	d	gddddggfd
d	gddgfd
d
d	d	gddddggfd	d
gddgfd	d	d
d
gddddggfd	d
gddgfd	d	d
d
gddddggfdd
gddgfdd
d
gdddggfgejj	dddgdd Z
dS )
TestSortedz- everything you wanted to test about sorting c             C   s$   | j j }|jj| j jjks td S )N)r:   r   r)   r"   rZ   )rD   rT   r/   r/   r0   test_sort_index_preserve_levels  s    
z*TestSorted.test_sort_index_preserve_levelsc       	   	   C   s  t jjd t jjdd}xdddddgdfd	dd
dgdftdtdtdtdgtdfddddgdfgD ]\}}tjdd |D }t|td|d}t	j
|tdtdtjd|fgdgd	d}t|j d j dgkst|j jd	d}|jd d dd
d	dgf }tj|| |jd	d}|jd d dd
d	ddgf }tj|| |j }d|d|f< |jd	d}tj|| qnW d S )Nr   r   rV   g      ?g      @g       @g      @g      @r   r   rN   r  Z20130103Z20130102Z20130105Z20130104Z1oneZ3oneZ2oneZ5oneZ4onec             S   s   g | ]}d |fqS )redr/   )r6   r   r/   r/   r0   r7     s    z5TestSorted.test_sorting_repr_8017.<locals>.<listcomp>def)r)   r*   Zworldr  )ra   )r8   r9   seedr   r   r	   r<   r   r   r   r"  r   
splitlinesr~   rZ   r5  r   rs   r?   rP   )	rD   r   genr   r*   r   rl  rT   rf   r/   r/   r0   test_sorting_repr_8017  s>    z!TestSorted.test_sorting_repr_8017c          	   C   s   t dddgdddggddd	ddd	gdd	dddd	gg}td
tt|i|dd}|jj dksbt|jjdksrt|j }|jj dkst|jjdksttd
dddd	git j	ddddgdd}|j
tjddddf d d f }tj|| d S )Nr$   r%   r&   r{   rS   rR   r   r   r   r  r   )r)   r   FTrV   rN   )r%   rR   )r%   r{   )r&   rR   )r&   rS   )r	   r   r]   r   r)   Zis_lexsortedrZ   Zis_monotonicr   r<   rt   r   Z
IndexSlicer?   rP   )rD   r   r   r#  rf   rT   r/   r/   r0   test_sort_non_lexsorted  s    4$z"TestSorted.test_sort_non_lexsortedzkeys, expectedrS   rR   r   r   r{   dimr)   r*   c             C   s   |dddddgdddddggi}t jtjdjddf|}tj|}|dkrp|j|d d f }tj	|j
| n(|d	kr|jd d |f }tj	|j| d S )
Nr{   rR   rS   r   r      rN   r)   r*   )r   r   r8   r   r   r	   r   rt   r?   r   r)   r*   )rD   r  keysrf   kwargsr   rA  r   r/   r/   r0   test_multilevel_index_loc_order(  s     
z*TestSorted.test_multilevel_index_loc_orderN)rJ   rK   rL   __doc__r  r  r  r   r  r  r  r/   r/   r/   r0   r    s   9&&&&&r  )r  ior   r  r   numpyr8   Znumpy.randomr   r   Zpandas.core.dtypes.commonr   r   Zpandasr   r   r   r	   r
   r   Zpandas._testingZ_testingr?   r  r   rM   r  r/   r/   r/   r0   <module>   sJ   
)             