B
    x\o?                @   s  d dl Z d dlZ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mZmZ d dlZd dlmZmZmZmZmZ d dlmZm Z  d dl!m"  m#Z$ dd	d
ddddddddgZ%G dd de&Z'G dd de'Z(G dd de'Z)dS )    N)catch_warningssimplefilter)randn)StringIOlrangelzipproductrangeuzip)is_float_dtypeis_integer_dtype)	DataFramePanelSeries	Timestampisna)Index
MultiIndexsumZ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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 	|}t
td|d}tj|d< || _td| _| jdd dd dd g | _| 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   )r1   d   c             S   s   | j S )N)year)x r7   ;lib/python3.7/site-packages/pandas/tests/test_multilevel.py<lambda>3   s    z#Base.setup_method.<locals>.<lambda>c             S   s   | j S )N)month)r6   r7   r7   r8   r9   3   s    c             S   s   | j S )N)day)r6   r7   r7   r8   r9   4   s    c             S   s   g | ]}| d qS )i8)astype).0Zlevr7   r7   r8   
<listcomp>7   s   z%Base.setup_method.<locals>.<listcomp>T)inplacer5   r:   r;   )r   r   nprandomr   r   frameZsingle_levelr   from_tuplesr   ZNaNseriestmmakeTimeDataFrameZtdfgroupbyr   ymdr1   
set_levelsr(   Z	set_names)selfmethodr1   arraystuplessr7   r7   r8   setup_method   s.    

zBase.setup_methodN)__name__
__module____qualname__rP   r7   r7   r7   r8   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d%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'e(j)j*dKdL Z+dMdN Z,dOdP Z-dQdR Z.dSdT Z/dUdV Z0dWdX Z1dYdZ Z2d[d\ Z3d]d^ Z4d_d` Z5e(j)6dae7e(j)6dbdcddge(j)6dedfdgge(j)6dhdfdggdidj Z8e(j)6dae7e(j)6dbdcddge(j)6dkdcddge(j)6dedfdgge(j)6dhdfdggdldm Z9dndo Z:dpdq Z;drds Z<dtdu Z=dvdw Z>dxdy Z?dzd{ Z@d|d} ZAd~d ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLe(j)6deMeNgdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd ZcdS )TestMultiLevelc             C   s^   | j d d | j dd   }}||}t|| j  |d |d }t|| j d  d S )N   r,   )rC   appendrF   assert_frame_equalassert_series_equal)rK   abresultr7   r7   r8   test_append?   s
    
zTestMultiLevel.test_appendc       
      C   s  t dddg}tjddddd}t d	d
dg}t||g}t|||g}||}td}d|t		dddfd|t		dddfd|t		dddfg}t dddg| }	t
||	 ||}t |dddg }	t
||	 ||}t||||g}	t
||	 ||}t
||	 ||}t td|t		dddd	fd|t		dddd
fd|t		ddddfg| d }	t
||	 d S )Ng?g333333?g?z
2011-01-01Dr%   z
Asia/Tokyo)freqperiodstzr,   r-   r.   i  r#   r$   )r   pd
date_ranger   from_arraysrV   pytzZtimezoneZlocalizedatetimerF   assert_index_equalZ_simple_newrA   array)
rK   idx1idx2idx3Zmidx_lv2Zmidx_lv3r[   r`   Zexpected_tuplesexpectedr7   r7   r8   test_append_indexH   s:    






z TestMultiLevel.test_append_indexc          	   C   s   t tjddtddddgtddddggd}t|jtsFtt|j	trVtt tjddddddgddddggd}t|j	tstd S )N   rY   rZ   r6   y)r1   )r2   )
r   rA   rB   r   rg   
isinstancer1   r   AssertionErrorr2   )rK   multir7   r7   r8   test_dataframe_constructoro   s    
z)TestMultiLevel.test_dataframe_constructorc          	   C   s   t dtddddgt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      ?rY   rZ   r6   rn   )r1   rm   )r   rA   rg   ro   r1   r   rp   r   )rK   rq   r7   r7   r8   test_series_constructor{   s     z&TestMultiLevel.test_series_constructorc             C   s   | j jdd}|j| j jdd}| j jddtj}t|| |d j| j jdd}| j d jddtj}tj	||dd | j j
jddd}|j| j jdd}| j jddtjj
}t|| d S )	Nr:   )levelr#   r,   F)check_names)axisrt   )r2   rt   )rI   r   reindexr1   rH   	transformrA   rF   rW   rX   T)rK   
month_sumsr[   rk   r7   r7   r8   test_reindex_level   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tj}| j|}t|| t t	| }| jd |d dd} jd jddtj}| jd |}d|_
t|| d S )Nr:   )rt   r,   )getattrr   rI   r   rH   rx   rA   rF   rW   r   r0   rX   )opnameoprz   r[   Zbroadcastedrk   )rK   r7   r8   	_check_op   s    

z3TestMultiLevel.test_binops_level.<locals>._check_opsubaddmulZdivr7   )rK   r   r7   )rK   r8   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 | }t | | d S )N)rF   Zround_trip_picklerW   )rC   Z	unpickledr7   r7   r8   _test_roundtrip   s    
z3TestMultiLevel.test_pickle.<locals>._test_roundtrip)rC   ry   rI   )rK   r   r7   r7   r8   test_pickle   s
    

zTestMultiLevel.test_picklec          	   C   sl   | j jddg }| j jddg }t|| tdd  tdt | j jddg }W d Q R X t|| d S )Nr   r%   )r   r    )r   r    T)recordignore)	rC   iloclocrF   rW   r   r   DeprecationWarningix)rK   rk   Z	reindexedr7   r7   r8   test_reindex   s    
zTestMultiLevel.test_reindexc          	   C   s   | j jd d d }| j |}|j|ks,t| j j| }|j|ksFttdd tdt | j j| }W d Q R X |j|kst| j j	}|j|d}|j
|kst|jd d |f }|j
|kstd S )Nr+   T)r   r   )r2   )rI   r1   rw   rp   r   r   r   r   r   ry   r2   )rK   Z	new_indexchunkZymdTr7   r7   r8   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)reprrC   rI   ry   r   Z	to_string)rK   r   r7   r7   r8   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|d}|d dsLtd S )N)rY   r   r   )rZ   r#   r   rY   rZ   c)r*   valuer   r#   )r1   
r$   za 0 foo)r   rD   r   r   split
startswithrp   )rK   r1   dflinesr7   r7   r8   test_repr_name_coincide   s
    
z&TestMultiLevel.test_repr_name_coincidec             C   s   dd t ddgddgddgD }tj|d	d
dgd}ttjdddddg|d}| }t|d
 slt	t
|d s|t	d S )Nc             S   s   g | ]}|qS r7   r7   )r>   tupler7   r7   r8   r?      s   z;TestMultiLevel.test_delevel_infer_dtype.<locals>.<listcomp>r   r   r+      g      ?g?Zprm0Zprm1Zprm2)r*   r3   r%   r,   r-   r.   )r2   r1   )cart_productr   rD   r   rA   rB   r   reset_indexr   rp   r   )rK   rN   r1   r   	deleveledr7   r7   r8   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 }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#   )rI   r   lenr2   rp   r1   r0   rE   ro   r   r(   r   )rK   r   r7   r7   r8   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 }tj	t
dd	 |jdd
 W d Q R X d| jd< | jjddd}t|jttddd d S )Nr   c             S   s^   |  |}xNt|jD ]@}| j||d}| j||d }||d}t|| qW d S )N)rv   rt   r<   )		_get_axisr	   ZnlevelscountrH   Zreindex_liker=   rF   rW   )rC   rv   r1   ir[   rk   r7   r7   r8   _check_counts	  s    
z6TestMultiLevel.test_count_level.<locals>._check_countsr#   r$      )rv   Zhierarchical)match)rt   r   r]   T)rt   Znumeric_onlyABCr/   )r0   )r   )rA   nanrC   r   rI   ry   rF   rG   pytestraises	TypeErrorr   rf   r2   r   list)rK   r   r   r[   r7   r7   r8   test_count_level  s    



zTestMultiLevel.test_count_levelc             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t||d}|jdd}|jdd }t	|
d||jd |jd
d}|jd
d }t	|
d||jd d S )Nr   r   r   r    r!   r"   fourr   r$   r#   )r(   r)   )r1   )rt   Zf8)r   r   rA   rB   r   r   r   rH   rF   rX   r=   rw   r1   fillna)rK   r1   rO   r[   rk   r7   r7   r8   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 d d }|jdd}ti |jjd |jd	d
tj}t|| d S )Nr,   r   )rt   )r1   r0   )r1   r2   )rC   r   r   r1   r(   rF   rX   r   r2   r   r=   rA   int64rW   )rK   rO   r[   rk   r   r7   r7   r8   test_count_level_corner5  s    z&TestMultiLevel.test_count_level_cornerc          	   C   sT   t jtdd | jjd W d Q R X t jtdd | jjd W d Q R X d S )NzToo many levels)r   r$   znot a valid level number)r   r   
IndexErrorrC   r1   Z_get_level_number)rK   r7   r7   r8   #test_get_level_number_out_of_boundsA  s    z2TestMultiLevel.test_get_level_number_out_of_boundsc             C   s8   | j  }|  | j t  | j tj  d S )N)rI   unstackr=   intrA   int32)rK   	unstackedr7   r7   r8   test_unstackG  s    
zTestMultiLevel.test_unstackc             C   sR   t ddddg}ttjd|d}|ddg}|jdd	d
}t	|| d S )N)r   r   r   )r   r   r   )r#   r   r#   )r#   r   r#   rm   )r1   r#   r$   all)rv   how)
r   rD   r   rA   rB   r   r   dropnarF   rW   )rK   r1   rO   r   rk   r7   r7   r8   &test_unstack_multiple_no_empty_columnsR  s    
z5TestMultiLevel.test_unstack_multiple_no_empty_columnsc          	   C   s  | j  }| }t|| j  | j jdd}|d}| }t|jdd| j  |d d d }|d}| dd}t|jdd| j  |dd}|djdddd}|ddd}t|jdd| j  | j  }|jddd}| }t|| j  | j dd}|d}| j  }t|| |d}| j d}t|| |d}| j  dd}t|| | j djd d d d d	f }|  }| j  }t||	|j
 | j dd
}| j dd}dd }ttddd	tddddgd}	tddgdddggttdd	dttd	dgd}
|	 ttd|
d }}||| dddg|	_tddgddggttdd	dtdddgdgd}
|	 ttd|
d }}||| d}t||	_
tddgddgddggttdd	dtdddgd	dd	gtdddgdgd}
|	 ttd|
d }}||| d S )Nr$   )rt   r   r#   )rv   F)rv   	ascendingr%   c             S   s:   t | | | jjdkst| j|j }}t || d S )NF)rF   rX   r1   	is_uniquerp   rf   )leftrightZliZrir7   r7   r8   check  s    z(TestMultiLevel.test_stack.<locals>.check   rm   ZababZ1stZ2ndZ3rd)r1   r2   rY   rZ   )r(   r)   )r1   ))rY   r$   )rZ   r#   )rY   r#   )rZ   r$      )rI   r   stackrF   rW   
sort_index	swaplevelr   rX   rw   r1   r   rA   arangereshaper   r   tilerepeatr   r2   rD   )rK   r   	restackedZunlexsortedr[   rk   stackedZymd_stackedr   r   mir   r   Ztplsr7   r7   r8   
test_stack\  sx    







 


zTestMultiLevel.test_stackc             C   s@   d}t t|dddg}|d}| }t|| 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,17r;   ZtimeZsmokerr$   )ra   Zread_csvr   	set_indexr   r   rF   rW   )rK   datar   r[   reconsr7   r7   r8   test_unstack_odd_failure  s
    
z'TestMultiLevel.test_unstack_odd_failurec             C   sp   | j j}d|d< |jddd}| }|d   }tj|d |dd |jd ksXt|d jt	j
ksltd S )Nr   )r   r   r#   )rt   rv   F)ru   r   )rC   ry   r   r   rF   rX   r0   rp   dtyperA   Zfloat_)rK   r   r   r[   r7   r7   r8   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dd}|ddddgt}| }| }t	||
|jt d S )NZnaiveZactivrY   rZ   r#   r$   r%   rm   hiZbyeZpeaceg      @)stater/   barcodevextrar   r/   r   r   )r   rA   r   rH   applyr   r   r   rF   rX   rw   r1   r=   float)rK   r   r[   r   r   r7   r7   r8   test_unstack_bug  s    zTestMultiLevel.test_unstack_bugc             C   sP   | j  }|jjdkst|jjddgks.t| }|jj| j jjksLtd S )Nr&   r/   r'   )rC   r   r1   r0   rp   r2   r*   r   )rK   r   r   r7   r7   r8   !test_stack_unstack_preserve_names  s
    
z0TestMultiLevel.test_stack_unstack_preserve_namesc             C   s*   | j d}| j jdd}t|| d S )Nr'   r#   )rt   )rC   r   rF   rW   )rK   r[   rk   r7   r7   r8   test_unstack_level_name  s    z&TestMultiLevel.test_unstack_level_namec             C   sX   | j d}|d}| j  d}t|| | j d}| j  }t|| d S )Nr'   r/   r   )rC   r   r   rF   rW   rX   )rK   r   r[   rk   r7   r7   r8   test_stack_level_name  s    

z$TestMultiLevel.test_stack_level_namec             C   s@  | j ddg}| j dd}t|| |jj|jjksBt| j d }|ddg}t||d  |ddg}|dddd}|j	dd}t|| j  |j
j| j j
jkst| j ddg}| j ddjddd	}t|| | j ddg}| j ddjddd	}t||jd d |jf  d S )
Nr5   r:   r,   r   r#   r$   )rt   r   )rv   r   )rI   r   rF   rW   r2   r*   rp   r   r   r   r1   r   r   )rK   r   rk   rO   Zs_unstackedr   r7   r7   r8   test_stack_unstack_multiple  s$    
z*TestMultiLevel.test_stack_unstack_multiplec          	   C   s<   | j ddg}tjtdd |ddg W d Q R X d S )Nr5   r:   zlevel should contain)r   r   )rI   r   r   r   
ValueErrorr   )rK   r   r7   r7   r8   test_stack_names_and_numbers  s    z+TestMultiLevel.test_stack_names_and_numbersc          	   C   sd   | j ddg}tjtdd |ddg W d Q R X tjtdd |dd	g W d Q R X d S )
Nr5   r:   zToo many levels)r   r$   r%   znot a valid level numberr   )rI   r   r   r   r   r   )rK   r   r7   r7   r8   !test_stack_multiple_out_of_bounds   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||g}t||d}| }|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
||
 t
||
 t
||
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||g}t||d}| }|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
||
 t
||
 t
||
j d S )Nz2013-01z2013-02z2013-03MZperiod)r^   r0   r,   r-   r%   str)r0   r#   r$   rm   rU   r   )r1   )rt   r   )r,   r-   )r1   r2   period1z2013-12z2013-11z2013-10z2013-09z2013-08z2013-07period2)ra   PeriodIndexr   r   rc   r   r   r   r2   r0   rF   rW   ry   rA   r   )rK   rh   ri   r   idxrO   result1result2result3Ze_idxrk   e_colsr7   r7   r8   test_unstack_period_series)  sL    

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||g}t||d}| }|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d |
g}tdd	dd
dd	gdd
ddddgg|	|d}t|| t|| t jddddgddd}	t jdddgddd}
td |	g}tddd
dgd	d
ddgddd	dgg|
|d}t|| d S )Nz2014-01z2014-02r   r   )r^   r0   z2013-12z2013-10r   r#   r$   r%   rm   rU   r   )r,   r-   )r1   )rt   r   zA A A B B B)r1   r2   zA A B B)	ra   r   r   rc   r   r   r   rF   rW   )rK   rh   ri   r   r   r   r   r   r   Ze_1Ze_2r   rk   r7   r7   r8   test_unstack_period_frame[  s8    

" 

"
z(TestMultiLevel.test_unstack_period_framec             C   s   dgd dgd  }dgd dgd  }t dddgd }tjd	d
d}tt||||d}|ddg}d|j_	|
d}|d }|d}	|jdddgf d d}
d|
j_	t|	|
 dS )z8 bug when some uniques are not present in the data #3170r#   r%   r$   rY   rZ   z
2013-01-03z
2013-01-04z
2013-01-05r   r4   r   )IDNAMEDATEVAR1r   r   ZParamszW-THUNr   )ra   to_datetimerA   rB   randintr   dictr   r2   r0   r   Zresampler   r   r   rF   rW   )rK   Zid_colr0   datevar1r   rq   ZunstZdownrsZxpr7   r7   r8   test_stack_multiple_bug  s    

$z&TestMultiLevel.test_stack_multiple_bugc             C   sv   t ddgddgddgd}|ddg}| jd	d
}t|t| ksRt| jdd
}t||  d S )NZa1Za2Zb1Zb2r#   )r,   r-   r.   r,   r-   F)r   T)	r   r   r   r   r   r   rp   rF   rW   )rK   r   r   r7   r7   r8   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_|ddg d S )	Nr   r#   )r1   r2   rY   rZ   r   de)r   r1   r*   r2   r   )rK   r   r7   r7   r8   "test_unstack_multiple_hierarchical  s    &z1TestMultiLevel.test_unstack_multiple_hierarchicalc             C   s\   | j d }|jd}||}|dd }|dd }||j}tj||dd d S )Nr,   r   c             S   s   | d S )Nr$   r7   )r6   r7   r7   r8   r9     s    z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>c             S   s   | d S )Nr$   r7   )r6   r7   r7   r8   r9     s    F)ru   )	rC   r1   get_level_valuesrH   r   rx   rw   rF   rX   )rK   rO   ZgroupergroupedZappliedrk   r[   r7   r7   r8   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|d
}|dddddg}|d d S )Ni  r4   )sizei,  ir   i   i  )r,   r-   r.   r]   EFr,   r-   r.   r]   r  )r   rA   rB   r   r   r   r   )rK   ZNUM_ROWSr   idfr7   r7   r8   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dd|d}| }t|jdksft|	 }t
|| d S )Nr   r#   r$   r%   rm   )r1   )r   r   rA   rB   r   r   r   r2   rp   r   rF   rW   )rK   r(   r)   r1   r   r[   r   r7   r7   r8   test_unstack_unobserved_keys  s    
z+TestMultiLevel.test_unstack_unobserved_keysc          	   C   sL   t tjddtdtdgd}tjtdd |  W d Q R X d S )Ni   r$   )r1   zint32 overflow)r   )	r   rA   rB   r   r   r   r   r   r   )rK   r   r7   r7   r8   /test_unstack_number_of_levels_larger_than_int32  s    z>TestMultiLevel.test_unstack_number_of_levels_larger_than_int32c       
   	   C   s  dd }xdD ]}t jt 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 ] }||}||||d|  qtW q4W qW tdddgdddggttddt	tddgd}	t|	tdt
dt|	 ddd}|||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)r2   r   )r>   rowcol)r   
df_stackedlev0lev1r7   r8   	<genexpr>  s   zgTestMultiLevel.test_stack_order_with_unsorted_levels.<locals>.manual_compare_stacked.<locals>.<genexpr>)r   r1   rp   )r   r  r  r  r7   )r   r  r  r  r8   manual_compare_stacked  s    zTTestMultiLevel.test_stack_order_with_unsorted_levels.<locals>.manual_compare_stacked)r$   r%   r   r#   r$   )r   )r(   r)   rm   )r2   r   r,   r.   r-   r%   rU   r   )r2   r1   r   )	itertoolsr   permutationsr   r   r	   r   rA   r   r   r   r   r   )
rK   r  widthZlevels_possr(   r2   r   Z	stack_levr  r   r7   r7   r8   %test_stack_order_with_unsorted_levels  s&    



$
z4TestMultiLevel.test_stack_order_with_unsorted_levelsc             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d	gd
dddg|d}|jdd d S )Nr   r   r   r   r    r!   r"   )r(   r)   r*   rm   rY   rZ   r   r  )r2   r1   )rt   )r   r   rA   rB   ZrandrH   )rK   midxr   r7   r7   r8   test_groupby_corner  s    z"TestMultiLevel.test_groupby_cornerc             C   s   t 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dd  }|jddd}| }|jddgk st	d S )N)f1s1)r  s2)f2r  )r!  r   )f3r  )r"  r   r#   r$   r%   rm   rU   r   r   r3   	   r+      r   )r2   )rv   c             S   s   | d dkS )Nr   )r!  r"  r7   )r
   r7   r7   r8   r9   
  s    z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>r   )rv   rt   r!  r"  )
r   rD   r   r   r2   maprH   r   r   rp   )rK   r  r   df1r  r[   r7   r7   r8   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  }tj|jt	|j< t	|j
 rttj||dd	 d S )
NrU   r,   r$   r-   r.   outer)r   F)ru   )rC   r   r1   joinrw   copyrA   r   valuesZisnanr   rp   rF   rW   )rK   rY   rZ   Zjoinedrk   r7   r7   r8   	test_join  s     
zTestMultiLevel.test_joinc             C   s  | j d  }| j d d}| j d dd}| j d dd}|j| j jrVtt|| t|| t|| | }|d}|dd}|dd}|j| j jstt|| t|| t|| | j j}	|	jdddd}| j ddj}
t||
 d S )Nr,   r   r#   r&   r'   )rv   )	rC   r   r1   Zequalsrp   rF   rX   ry   rW   )rK   ZswappedZswapped2Zswapped3Zswapped4ZbackZback2Zback3Zback4Zftr/   r7   r7   r8   test_swaplevel  s(    
zTestMultiLevel.test_swaplevelc          	   C   s   t dd| tdt t| j| jd d}| }|jdd|_x<|jdd	|jddd	|jdddd	fD ]}t	|| qnW W d Q R X d S )
NT)r   r   r$   )ZItemAZItemBr   r#   major)rv   )
r   r   FutureWarningr   rC   r*  Z
major_axisr   rF   Zassert_panel_equal)rK   Zpanelrk   r[   r7   r7   r8   test_swaplevel_panel5  s    
z#TestMultiLevel.test_swaplevel_panelc          	   C   s  | j dddg}| j dddd}t|| | j d dddg}| j d dddd}t|| | j jjdddgdd}| j jjddddjdddd}t|| tjt	d	d
 | j jddgdd W d Q R X tjt
dd
 | j jdddg W d Q R X d S )Nr:   r;   r5   r   r#   r$   r,   )rv   zhierarchical axis)r   zToo many levelsr%   )rI   Zreorder_levelsr   rF   rW   rX   ry   r   r   r   r   r1   )rK   r[   rk   r7   r7   r8   test_reorder_levelsA  s     z"TestMultiLevel.test_reorder_levelsc             C   sH   | j d d j}|d |d< t|jts,t|d |d k sDtd S )NrU   )i  r#   r   )i  r#   r+   )rI   ry   ro   r2   r   rp   r   )rK   r   r7   r7   r8   test_insert_indexT  s    z TestMultiLevel.test_insert_indexc             C   s   t dddgtdddgd}t dd	d
gtdddgd}|| }|j|j}|||| }t|| |d d d |d d d  }|j|j}|||| }t|| d S )Nr#   r$   r%   )r,   r#   )r,   r$   )r-   r%   )r   r1   rm   rU   r   )Zr#   )r3  r$   r   )r   r   rD   r1   unionrw   rF   rX   )rK   r6   rn   ZresZ	exp_indexr/   r7   r7   r8   test_alignmentZ  s    zTestMultiLevel.test_alignmentc             C   s  | 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 }ddg|j_|jdd}| jjdd}tj||dd |jj	dkst
|jdd}| jjdd}tj||dd |jj	dkst
tt|jd tjt|jdd d S )	NrY   rZ   )rt   r#   F)ru   r   r6   )rC   r*  r1   r*   r   rF   rW   rE   rX   r0   rp   r   r   KeyError)rK   rC   r[   ZexpectrE   r7   r7   r8   
test_countl  s(    

zTestMultiLevel.test_countr~   rt   r   r#   skipnaTFsortc                sX   | j j||d}| fdd}t| j  |d}|rH|j|d}t|| d S )N)rt   r9  c                s   t |  dS )N)r8  )r|   )r6   )r~   r8  r7   r8   r9     s    z:TestMultiLevel.test_series_group_min_max.<locals>.<lambda>)rt   r8  )rt   )rE   rH   aggr|   r   rF   rX   )rK   r~   rt   r8  r9  r  leftside	rightsider7   )r~   r8  r8   test_series_group_min_max  s    z(TestMultiLevel.test_series_group_min_maxrv   c                s   t j| jjdddgf< t j| jjdddgf<  dkr<| j}n| jj}|j| |d}g  fdd}||}	t|| d}
|r|
j| d	}
|j| d	}|	 j
| }t|		 | t|
	 | t|	|
 d S )
Nr#   r$   r   r   )rt   rv   r9  c                s    |  t|  dS )N)r8  rv   )rV   r|   )r6   )rv   r~   piecesr8  r7   r8   aggf  s    
z1TestMultiLevel.test_frame_group_ops.<locals>.aggf)rt   rv   r8  )rt   rv   )rA   r   rC   r   ry   rH   r:  r|   r   r   r(   rF   rf   rW   )rK   r~   rt   rv   r8  r9  rC   r  r?  r;  r<  Zlevel_indexr7   )rv   r~   r>  r8  r8   test_frame_group_ops  s$    
z#TestMultiLevel.test_frame_group_opsc             C   sB   t dgtdgd}|jdd}t dgdgd}t|| d S )Ng      $@)r$   r%   )r1   r   )rt   r$   )r   r   rD   r   rF   rX   )rK   objr[   rk   r7   r7   r8   test_stat_op_corner  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dd}t dddgiddgd
}t|| d S )Nr   FTr    r!   r   r#   r$   r%   )r1   )rt   )r   anyrF   rW   r   )rK   r   r[   exr7   r7   r8   test_frame_any_all_group  s    z'TestMultiLevel.test_frame_any_all_groupc                s   t tddttddg}ttjt	|d|d}xdD ]~d  fdd}t
|d d d	}|d jdd
|}t|| t
|d d	}|jdd
|}t|| qHW d S )NrU   r+   )r1   )r   r   rm   c                s   t |  dS )N)ddof)r|   )r6   )rF  methr7   r8   r9     s    z7TestMultiLevel.test_std_var_pass_ddof.<locals>.<lambda>r   )rt   rF  )rt   )r   rc   rA   r   r   r   r   rB   r   r   r|   rH   r:  rF   rX   rW   )rK   r1   r   Zaltr[   rk   r7   )rF  rG  r8   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 }t|| | j d jddgd}| j d jddgd }t|| d S )Nr5   r:   )rt   r,   )rI   r   rH   rF   rW   rX   )rK   r[   rk   r7   r7   r8   %test_frame_series_agg_multiple_levels  s    z4TestMultiLevel.test_frame_series_agg_multiple_levelsc             C   s   | j jddgd }| j jd}| j jd}| j ||g }tj||dd |jj| j jjd d kstt| j j| j jjd d d }t|| d S )Nr   r#   )rt   F)ru   r$   )	rI   rH   r   r1   r  rF   rW   r*   rp   )rK   r[   Zk1Zk2rk   r   r7   r7   r8   test_groupby_multilevel  s     z&TestMultiLevel.test_groupby_multilevelc             C   s   d S )Nr7   )rK   r7   r7   r8   &test_groupby_multilevel_with_transform  s    z5TestMultiLevel.test_groupby_multilevel_with_transformc             C   sD   t ddddg}ttjdd||d}|d|d< | }d S )	N)r   r    )r   r!   )r   r    )r   r!   rm   )r1   r2   r#   )ZTotals )r   rD   r   rA   rB   r   r   Z_consolidate)rK   r1   r   r7   r7   r8   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 )Ni  r,   r#   )i  r$   r$   )rI   r   r1   r*   rp   r0   )rK   r[   r   r7   r7   r8   test_ix_preserve_names  s    z%TestMultiLevel.test_ix_preserve_namesc             C   s`   d| j d< d| j d< | 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  r:   )r,   r#   )r  r#   )r  r#   )rI   r   r   rA   Zfloat64rp   Zobject_)rK   r   r7   r7   r8   test_unstack_preserve_types  s    

z*TestMultiLevel.test_unstack_preserve_typesc             C   sj  t t dd}t d}t|gd ddgg |gd t ddg d}tt d|d}| }|jd	ksxt|	 }t
|||j tddgg|gd  t ddg|gd  d}tt d|d}|d}|jd	kstt|gd
 ddgg |gd
  |gd
 t ddg |gd
  d}tt d|d}|d
}|jd	ksftd S )Ni  r$   r3   r   r#   )r(   r)   i  )r1   )i  r$   rm   )rA   r   r   r   r   r   r   shaperp   r   rF   rX   rw   r1   )rK   r)   rt   r1   rO   r[   r   r7   r7   r8   !test_unstack_group_index_overflow  s(    
  

z0TestMultiLevel.test_unstack_group_index_overflowc          	      s\  d}dd dgd | dgd | dgd | t jg| dgd |  dg| dgd |  t jg| dgd	 |  dg|  gD  xltt D ]\}t }| | |kstt j|d t j	d
}|
 fdd|D }t|| qW tt }t jdgt| t j	d
}tddgd | }|
|g fdd|D  }t|| d S )NrU   c             S   s   g | ]}t |qS r7   )r   )r>   lr7   r7   r8   r?   ?  s    z4TestMultiLevel.test_pyint_engine.<locals>.<listcomp>r   r+   r#   r$   r#  r3   )r   c                s   g | ]} | qS r7   r7   )r>   r   )keysr7   r8   r?   P  s    r   c                s   g | ]} | qS r7   r7   )r>   r   )rS  r7   r8   r?   W  s    )rA   r   r	   r   r   rD   Zget_locrp   r   ZintpZget_indexerrF   assert_numpy_array_equalrg   r   r   )rK   Nr   r1   rk   r[   ZidcesZmissingr7   )rS  r8   test_pyint_engine:  s$    *
z TestMultiLevel.test_pyint_enginec             C   s$   d| j j_| j   | j j  d S )Nr   )rI   r2   r0   Zto_htmlry   )rK   r7   r7   r8   test_to_htmlZ  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d|d	}ttjdd
|d	}|d }|jd }|d d }|jd|_t	
|| t	
|| tt|jd |jd }|d}|d d }|jd|_t	|| t	|| 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d|d	}ttjdd
|d	}|d }|jd }|d d }|jd|_t	
|| t	
|| |jd }|d}|d d }|jd|_t	|| t	|| d S )N)r   r   r   )r   r   r   )r   r   r   r   r#   r$   )r(   r)   r   )r1   rm   ))r   r   r   r$   )r   r   )r   r   )r   r   )r   r   rA   rB   r   r   r   r1   Z	droplevelrF   rX   r   r   r6  __getitem__ZxsrW   )rK   r1   rE   rC   r[   r   rk   r7   r7   r8   test_level_with_tuples_  sF    $


$


z%TestMultiLevel.test_level_with_tuplesc             C   s6  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|}ttdd|d}|jddd}|jdgdd}t|| |jdgdd}|jdgdd}|jdgdd}t|| |jddd}|jdgdd}t|| |jdgdd}|jddd}|jdddd}|jddgdd}t|| d S )NrY   toproutine1routine2rL  ODr   r   wxwyrm   r   )r2   r#   )rv   )rY   rL  rL  )rZ  r]  r^  )rZ  r]  r_  )rt   rv   )r[  r   rL  )r\  r   rL  )	sortedr   r   rD   r   r   r   rF   rW   )rK   rM   rN   r1   r   r[   rk   r7   r7   r8   test_mixed_depth_drop  s,    
z$TestMultiLevel.test_mixed_depth_dropc             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ddddgddddgddddgg	ddddgd}|d }|j|dk }|dddg}|j|jdd }||j	|j  }|j|_t
|| d S )Nzx-ar6   rY   g      ?g333333?zz-czr   g@gffffff@zx-brZ   gffffff@g@zy-arn   zz-bg @r   Zvar2Zvar3Zvar4)r2   r#   r   )rt   )r   rH   r	  r   r   r   r1   r   r   ZisinrF   rW   )rK   r   Zgrp_sizeZdrop_idxr  r[   rk   r7   r7   r8   test_drop_nonunique  s    
z"TestMultiLevel.test_drop_nonuniquec       	      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|}ttdd|d}| }| }|d}|d}tj	||dd t
|| |jdkst|d }|jdgdd}|d}t
|| t
|| d S )NrY   rZ  r[  r\  rL  r]  r   r   r^  r_  rm   r   )r2   )rY   rL  rL  F)ru   r#   )rv   )r`  r   r   rD   r   r   r*  poprF   rX   rW   r0   rp   r   )	rK   rM   rN   r1   r   r&  df2r[   rk   r7   r7   r8   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ddgddd
}t||j | j jddg }t|| | j d jddg }t||d  | j jjd d ddgf }t||j d S )Nr   r   r   )rt   r#   r$   r   r3   r#  )rv   rt   r,   )rC   rw   r   rF   rW   ry   r   rX   )rK   r[   rk   r7   r7   r8   $test_reindex_level_partial_selection  s    z3TestMultiLevel.test_reindex_level_partial_selectionc             C   s   | j jddgdd}| j jddddd	g }t|| | j jd
gdd}| j jdddd	ddg }t|| | j jjddgddd}| j jddddd	g j}t|| | j jjd
gddd}| j jdddd	ddg j}t|| d S )Nr   r   r&   )rt   r   r#   r$   rU   r   r!   r'   r%   r   r#  )rv   rt   )rC   r   r   rF   rW   ry   )rK   r[   rk   r7   r7   r8   test_drop_level  s    zTestMultiLevel.test_drop_levelc             C   s   t dddddgdd}tddd	d	d
g}ttdddtd|d}||d< |jddd}t	d	}|j
jdksxt|j|dd}|j|dk }t|| d S )Nr$   r%   rm   rU   id)r0   Z201603231400Z201603231500Z201603231600Z201603231700r+   ab)r2   r1   ZtstampT)rV   F)rt   )r   ra   r   r   rA   r   r   r   r   r   r1   r   rp   r   r   rF   rW   )rK   r   Zidxdtr   Ztsr[   rk   r7   r7   r8   "test_drop_level_nonunique_datetime  s    z1TestMultiLevel.test_drop_level_nonunique_datetimeboxc       
      C   s   t ddd}t ddd}tj||dd}|dgt| |d}||}t d	dd}tj||dd}|dgt| |d}	t||	 d S )
Nz
2017-10-29zEurope/Berlin)r`   z2017-10-29 04:00:00Z15min)r^   r#   )r   r1   z2017-10-29 00:15:00)r   ra   rb   r   r   rF   Zassert_equal)
rK   rl  startendr1   r   r[   Zexpected_startZexpected_idxrk   r7   r7   r8   'test_drop_tz_aware_timestamp_across_dst  s    
z6TestMultiLevel.test_drop_tz_aware_timestamp_across_dstc             C   sd   t jddddddgddddddggddgd}ttjdd|d	}|d
g}|jjdks`t	d S )Nr   r#   r$   r%   r    r!   )r*   r   )r1   )r   r$   )r    r!   )
r   rc   r   rA   rB   r   r   r1   r*   rp   )rK   r1   r   r[   r7   r7   r8   test_drop_preserve_names  s    z'TestMultiLevel.test_drop_preserve_namesc             C   sb   t tdtdtdgt ddgg}tddttddg}t||d}t|j d S )	Nu   a/σu   b/σu   c/σr   r#   r%   r$   )r(   r)   )	r   r
   rA   r   r   r   r   r   r(   )rK   r(   r)   r1   r7   r7   r8   test_unicode_repr_issues"  s
    "z'TestMultiLevel.test_unicode_repr_issuesc             C   sT   t jddgtddgd}ttd|d}ttjdd|d}t	| t	| d S )	N)r   r   )r#   r#   u   ΔZi1)r*   r$   )r1   rm   )
r   rD   r
   r   r   r   rA   rB   r   r   )rK   r1   rO   r   r7   r7   r8   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}|ddg}|ddg}xdD ]}|j||d qZW d S )	Nr#   r$   )rY   rZ   r6   )rY   rZ   rn   rY   rZ   )r   r   r(  )r   )r   r   r)  )rK   r&  re  r   r7   r7   r8   test_join_segfault6  s    
z!TestMultiLevel.test_join_segfaultc             C   sp   t ddddgtddddgd	}t ddddgtddd
dgd	}t  }t|||d t|||d d S )Nr#   r$   r%   rm   )r#   r$   )r#   r%   )r$   r$   )r$   rm   )r1   )r%   r$   )r%   rm   )r   r   r   )r   r   r   )r   r   rD   r   Z	from_dict)rK   r  r   Zs3r7   r7   r8   (test_frame_dict_constructor_empty_series@  s    

z7TestMultiLevel.test_frame_dict_constructor_empty_seriesc             C   sT   ddl m} tddid|id|id|iddid|id}|ddg}t| d S )	Nr   )r   )r,   A0006000Znuitru  r,   )AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCZDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDZEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEZFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFrv  rw  )numpyr   r   r   r   )rK   r   Zdf3r  r7   r7   r8   test_multiindex_na_reprM  s    z&TestMultiLevel.test_multiindex_na_reprc             C   sj   t dddgdddgddd	gd
ddg}t|j}d|d< ||_t| ddg|d< ||_t| d S )Nr#   r$   r%   rm   rU   r   r   r3   r#  )rY   rZ   r   rY   rZ   )fazboor   rz  r{  )r   r   r   r1   r   )rK   r   r1   r7   r7   r8   test_assign_index_sequences]  s    

z*TestMultiLevel.test_assign_index_sequencesc             C   sn   t ddgddddggddddddddgddddddddggd}t|d d sTtt|jd d sjtd S )Nr#   r   r$   r%   r   )r(   r)   rm   )r   r   rp   r+  )rK   r1   r7   r7   r8   test_tuples_have_nal  s
    z"TestMultiLevel.test_tuples_have_nac             C   sZ   ddddg}ddddg}t j|ddgd}t||d}||j }t|d	ksVtd S )
N)600809Z20061231)r~  Z20070331)r~  Z20070630ZdemoZSTK_IDZRPT_Date)r*   )r1   r%   )r   rD   r   rH   r1   r&   r   rp   )rK   Zidx_tpZdtr   rO   r[   r7   r7   r8   test_duplicate_groupby_issuest  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}|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ddg}|jd }t|| d S )Nr   r   g      ?r#   g       @r$   ZbahZbamg      @r%   g      @rm   g      @rU   g      @r   ABCD)r2   r,   r-   r   )rt   )r   r   )r   r   r   r   r   rF   rW   )rK   r   rk   r[   r7   r7   r8   test_duplicate_mi  s    

z TestMultiLevel.test_duplicate_mic          	   C   sz  t ddddddgddddddgf}tjddddddgtd}| }t|| |jtksbt	t dddddgdddddgf}t
| | tddddddg}|jdd}t|| |jtkst	t dddddgdddddgf}t
|jdd| tddddddg}|jdd}t|| |jtksDt	t ddddgddddgf}t
|jdd| d S )	Nr#   r$   r%   FT)r   last)Zkeep)r   rc   rA   rg   bool
duplicatedrF   rT  r   rp   rf   Zdrop_duplicates)rK   r   rk   r  r7   r7   r8   test_duplicated_drop_duplicates  s(    &""z.TestMultiLevel.test_duplicated_drop_duplicatesc             C   sL   dddgdddgd}t |}dd	d
g}||d< t|d }|| d S )Nr$   g      @r%   rm   rU   r   )Zt1Zt2)r   r#   )r   r$   )r#   r$   rN   )r   r   rD   r   )rK   r  r   rN   r1   r7   r7   r8   test_multiindex_set_index  s    
z(TestMultiLevel.test_multiindex_set_indexc             C   s   t jdddgd dd}t jddd	d
d}t||g}t jdddgdd}t|jd | t|jd | tj	
 }tj
 }t
 }xbt|||g|||gD ]F\}}	t|g|	gg}
t|
jd t jstt|
jd t jstqW d S )Nz2013-04-01 9:00z2013-04-02 9:00z2013-04-03 9:00r$   z
Asia/Tokyo)r`   z
2010/01/01r   r   z
US/Eastern)r_   r^   r`   r   r#   )ra   DatetimeIndexrb   r   rc   rF   rf   r(   re   r   Ztodayr   r  r   from_productro   rp   )rK   rh   ri   r   	expected1Zdate1Zdate2Zdate3Zd1Zd2r1   r7   r7   r8   test_datetimeindex  s$    


z!TestMultiLevel.test_datetimeindexc             C   s   t jddgddd}t jddgdd	d}t||g}t|jd
 | t|jd | tt|t|g}t|jd
 | t|jd | d S )Nz2013/01/01 09:00z2013/01/02 09:00Zdt1z
US/Pacific)r0   r`   z2014/01/01 09:00z2014/01/02 09:00Zdt2z
Asia/Tokyor   r#   )ra   r  r   rc   rF   rf   r(   r   )rK   r1   r2   r[   r7   r7   r8   test_constructor_with_tz  s    



z'TestMultiLevel.test_constructor_with_tzc             C   s  t ddddddgddddddgtdd}tj|dd	d
|_|jd|_tjdddgdd}|dd}|j	dd	d}t
|jjd | t
|jjd tddgdd |dd}t
|jjd tddgdd t
|jjd | t t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	d}|j	|d	d}tjdddgdd}tjddgdd}t
|jjd | t
|jjd | t
|jjd | t
|jd| t
|jd| t
|jd| d S )NrY   rZ   z2011-07-19 07:00:00z2011-07-19 08:00:00z2011-07-19 09:00:00r   )labelre   r   re   T)Zutcz
US/Pacific)r0   UTCr  )rV   r   r#   z
US/Eastern)r`   z2012-04-01 09:00z2012-04-02 09:00z2011-01-01 09:00z
Asia/Tokyo)r_   r`   r$   )r   r	   ra   r   rd  r1   Z
tz_convertr  Ztz_localizer   rF   rf   r(   r   r   rA   rB   rb   r  )rK   r   rk   rh   ri   rj   r  	expected2r7   r7   r8   test_set_index_datetime  sX    

z&TestMultiLevel.test_set_index_datetimec                s  xdD ] t jddd dd}ttdddd	}t||g}ttjddd
dddddgd|d}tt		dddt		dddt		dddt		dddt		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 
 fdd|d< t| | t jdddddd}t|||g}ttjddd
dddddgd|d}tt		dddt		dddt		dddt		dddt		dddgtjddd
t		d ddt		d ddt		d ddt		d ddt		d ddgtjddd
dddddgd!dddddgd}|d 
 fd"d|d< |d 
d#d |d< t| | tddgt jd$d d%g}ttjd&dd
d&ddg|d'}td( t		d)ddt		d)ddt		d)ddgd tjd&dd
d*d+d,dgd}|d, 
 fd-d|d,< t| | qW d S ).N)r  z
Asia/Tokyoz
US/Easternz1/1/2011rU   r]   rh   )r_   r^   r`   r0   ri   r   )r0   r   )r   r,   r-   r.   r  )rY   rZ   )r1   i  r#   r$   r%   rm   )rh   ri   rY   rZ   rY   rZ   )r2   c                s   t |  dS )N)r`   )r   )r  )r`   r7   r8   r9   )  s    z:TestMultiLevel.test_reset_index_datetime.<locals>.<lambda>z1/1/2012ZMSzEurope/Parisrj   i  )rh   ri   rj   rY   rZ   c                s   t |  dS )N)r`   )r   )r  )r`   r7   r8   r9   C  s    c             S   s   t | ddS )NzEurope/Paris)r`   )r   )r  r7   r7   r8   r9   E  s    20130101)r_   r`   r   )r2   r1   za a a b b bi  )level_0level_1rY   r  r  c                s   t | d dS )Nr]   )r^   r`   )r   )r  )r`   r7   r8   r9   W  s    )ra   rb   r   r	   r   rc   r   rA   r   re   r   rF   rW   r   r  r   r   )rK   rh   ri   r   r   rk   rj   r7   )r`   r8   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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
| | d S )Nr  r%   r   )r_   r^   abcr:   feature)r*   r#  r   )r   r   r#   rY   )r1   r2   z2013-01)r^   z2013-02z2013-03rZ   r   )r:   r  rY   )r2   )r   r  ra   period_ranger   r   rA   r   r   ZPeriodrF   rW   r   )rK   r   r   rk   r7   r7   r8   test_reset_index_periodZ  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|d	}|dg d }t|| tjt	d
d |d  W d Q R X |
dg }t|| t dgdggtdgd	}tj||ddg gdd}|j
dgdd }t|| tjt	dd |dg  W d Q R X dddgdddgg}t ddgddggt|d	}t dgdggtdgd	}tj||gdd}|dgjdd}t|| tjt	dd |dgjd d W d Q R X |dgjddd}t|| d S )Nr,   rL  r-   rZ   r   r$   r#   r%   )r2   z)cannot insert \('A', ''\), already exists)r   )r,   rL  )r  rL  )r-   rZ   )rv   T)rV   z0Item must have length equal to number of levels.)r.   r   r   rY   r   )r.   r   ii)r.   r   r  )col_fillzFcol_fill=None is incompatible with incomplete column name \('C', 'c'\))r   r  r.   )Z	col_levelr  )r   r   rD   Zrename_axisr   rF   rW   r   r   r   r   ra   concat)rK   r(   r   r[   Zidx_colrk   re  r7   r7   r8   #test_reset_index_multiindex_columnsk  s@    


z2TestMultiLevel.test_reset_index_multiindex_columnsc             C   s  t tjd}tjdddd}||}tjdddd}|||}tjd	dd
d}||}|j|dd}|j|dd}tjdddd}tjdddd}t|j	j
d | t|j	j
d | t|j	j
d | t|j	d| t|j	d| t|j	d| d S )Nr   z
2011-01-01r%   r   )r_   r^   z2013-01-01 09:00r$   HZ2005r,   T)rV   r   r#   )r   rA   rB   ra   r  rV   r   rF   rf   r1   r(   r  )rK   r   rh   ri   rj   r  r  r7   r7   r8   test_set_index_period  s"    

z$TestMultiLevel.test_set_index_periodc             C   sL   t ddddg}ddddg}t||d	}|d
jd
t| fksHtd S )N)r#   r$   )r%   rm   )rU   r   )r   r3   rY   rZ   r   r  )r1   r%   )r   rD   r   r   rP  r   rp   )rK   Zm_idxr   Zm_dfr7   r7   r8   test_repeat  s    zTestMultiLevel.test_repeatN)drQ   rR   rS   r\   rl   rr   rs   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   ZmarkZslowr  r  r  r'  r,  r-  r0  r1  r2  r5  r7  ZparametrizeAGG_FUNCTIONSr=  r@  rB  rE  rH  rI  rJ  rK  rM  rN  rO  rQ  rV  rW  rY  ra  rc  rf  rg  rh  rk  r   r   ro  rp  rq  rr  rs  rt  ry  r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r7   r7   r7   r8   rT   =   s   	'

	
[
	2$	 ""	
  -
	
8F3rT   c               @   sx   e Zd 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S )
TestSortedz- everything you wanted to test about sorting c             C   s$   | j  }|jj| j jjks td S )N)rC   r   r1   r*   rp   )rK   r[   r7   r7   r8   test_sort_index_preserve_levels  s    
z*TestSorted.test_sort_index_preserve_levelsc       	   
   C   s  t jd t 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dd |D }t|td|d}t	j
|tdtdtd|fgdgd	d}t| d  dgkst| jd	d}|jd d dd
d	dgf }t|| |jd	d}|jd d dd
d	ddgf }t|| | }d|d|f< |jd	d}t|| qnW d S )Nr   r%   rm   g      ?g      @g       @g      @g      @r#   r$   rU   r  Z20130103Z20130102Z20130105Z20130104Z1oneZ3oneZ2oneZ5oneZ4onec             S   s   g | ]}d |fqS )redr7   )r>   r   r7   r7   r8   r?     s    z5TestSorted.test_sorting_repr_8017.<locals>.<listcomp>def)r1   r2   Zworldr  )rv   )rA   rB   Zseedr   r   r   rD   r   r   ra   r  r   
splitlinesr   rp   r*  r   r   rF   rW   )	rK   r   genr   r2   r   re  r[   rk   r7   r7   r8   test_sorting_repr_8017  s0     
z!TestSorted.test_sorting_repr_8017c             C   st   | j  }tt||_| j d jdd}|jj| j jjksBt| j  }|jddd t	
|| j jdd d S )Nr,   r   )rt   T)rt   r@   )rC   r*  rA   r   r   r1   r   r*   rp   rF   rW   )rK   r   Za_sortedr   r7   r7   r8   test_sort_index_level  s    

z TestSorted.test_sort_index_levelc             C   s   t tdgd }ttjd|tjd}|jdd}|j	j
dksJtt tdgd }ttjd|tjd}|jdd}|jj|jjk st|j	j
dkstd S )Ni  r%   )r1   r   r   )rt   )r   rc   rA   r   r   rB   r   r   r   r1   lexsort_depthrp   r   Zdtypesr+  r   )rK   r1   r   r[   r7   r7   r8   'test_sort_index_level_large_cardinality   s    z2TestSorted.test_sort_index_level_large_cardinalityc             C   s:   ddg| j j_| j jdd}| j jdd}t|| d S )Nr&   r'   )rt   r#   )rC   r1   r*   r   rF   rW   )rK   r[   rk   r7   r7   r8   test_sort_index_level_by_name  s    z(TestSorted.test_sort_index_level_by_namec             C   s   | j jdd}| j  }d|d< |jdd}t||jdgdd | j j}|jddd}d|d< |jddd}t|jdgdd|jdgdd d S )Nr#   )rt   r   r   )rv   )rt   rv   )r   r"   )rC   r   r*  rF   rW   r   ry   )rK   Zsorted_beforer   Zsorted_afterZdftr7   r7   r8   test_sort_index_level_mixed  s    
z&TestSorted.test_sort_index_level_mixedc          	   C   s   ddgdddgg}t |ddddddgddddddggd}| sFtt |ddddddgddddddggd}| rztt |ddddddgddddddggd}| rt|jdkstd S )Nr   r#   r$   )r(   r)   )r   is_lexsortedrp   r  )rK   r(   r1   r7   r7   r8   test_is_lexsorted*  s    $$$zTestSorted.test_is_lexsortedc          	   C   s:  t ddgddggtdd}t ddgddgddgddggtddddgd}|j s\tt ddgddgddgddggtd	d
gtdgd}| }|j st|jj	stt
|| t ddgddgddgddggtd	d
gddggddddgddddggdd}| }|j s$tt
|| tj||gd
d	gd}| }|j s^t|jj	sltt
|| t ddgddggtjddgddgdd}|jjt|jjd ddd |j rt|jj	rt|jdd}|j st|jj	s
t|jddd}|j s(t|jj	s6td S )Nr#   r$   rj  )r1   )g      ?rY   )g      ?rZ   )g?rY   )g?rZ   g      ?g?rY   rZ   r   )r(   r)   )rS  r   r   )r   z20160811 12:00:00)r   z20160809 12:00:00l1ZDate)r*   )r2   T)rt   r@   )rv   )rv   rt   )r   r   r   rD   r1   r  rp   r  r   is_monotonicrF   rW   ra   r  r2   rJ   r   r(   )rK   r   rk   r[   Z	concattedr7   r7   r8   "test_sort_index_and_reconstruction:  sT     z-TestSorted.test_sort_index_and_reconstructionc          	   C   s
  t dddddgitddgdd	ggd
d
ddgd
dd
dggdd}|j sNt|jjrZtt dddddgitddgd	dggd
d
ddgd
dd
dggdd}| }|j st|jjstt|| | 	 }|j
 |_|j st|jjstt|| d S )Nr   r#   r$   r%   rm   rY   rZ   ZbbZaar   )r(   r)   )r1   )r   r   r1   r  rp   r  r   rF   rW   r*  Z_sort_levels_monotonic)rK   r   rk   r[   r7   r7   r8   .test_sort_index_and_reconstruction_doc_exampleu  s&      z9TestSorted.test_sort_index_and_reconstruction_doc_examplec             C   s   t tjddtjddgddgddggd	d
dgdddgd}| }dd }|jd	d
gd| }tjddgddgddggd	d
d gd}t	
|j| d S )Nr3   r$   rY   rZ   ZbigZsmallr  ZbluZletterr	  Zcolor)r*   ZnearZfar)r1   r2   c             S   s   ddg| _ | S )Nnewznewa)r1   )groupr7   r7   r8   my_func  s    
z:TestSorted.test_sort_index_reorder_on_ops.<locals>.my_func)rt   r  r  )r   rA   rB   r   r   r  r   rH   r   rF   rf   r1   )rK   r   r  r[   rk   r7   r7   r8   test_sort_index_reorder_on_ops  s    
z)TestSorted.test_sort_index_reorder_on_opsc          	   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 dksbt|jjdksrt| }|j dkst|jjdksttd
dddd	git 	ddddgdd}|j
tjddddf d d f }t|| d S )Nr,   r-   r.   r   rZ   rY   r   r#   r$   r  r   )r1   r   FTrm   rU   )r-   rY   )r-   r   )r.   rY   )r.   rZ   )r   r   r	   r   r1   r  rp   r  r   rD   r   ra   Z
IndexSlicerF   rW   )rK   r   r   r`  rk   r[   r7   r7   r8   test_sort_non_lexsorted  s&    

$z"TestSorted.test_sort_non_lexsortedc             C   s  ddgt jt jgt jdgddgg}t|}tt ddd|tdd	}tt d|d
}tt	
ddddddddddddgddddddddddddgdt jddt jdddt jdddgdddddddt jd d!ddgd"d#d$g}| }|jddddgd d f }t|| |jd%d&}|jddddgd d f }t|| |jd'd&}|jddddgd d f }t|| |  }|  }t|| | }|jddddg }t|| |jd%d&}|jddddg }t|| |jd'd&}|jddddg }t|| d S )(Nr      r%   r#   r$      rm   r  )r1   r2   )r1   Z20121002Z20121007Z20130130Z20130202Z20130305Z20121207rU   i  i  i  io  Z   i8  i-  ig  i!     r+      '   r   -   "   )r   user_idZ
whole_costZcostr   r  r  )Zna_positionr&   )rA   r   r   rD   r   r   r   r   r   ra   r   r   r   r   rF   rW   r   rX   )rK   rN   r   r   rO   re  r[   rk   r7   r7   r8   test_sort_index_nan  sH    "


$
zTestSorted.test_sort_index_nanc          
   C   s   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}t | }tj|dddgd}ttd|d}|jddgdd}|jdddd
dd	ddg }t|| |jddgddgd}|jddd
dd	dddg }t|| d S )Nr   r   r   r   r    r!   rm   r%   r$   r#   r&   r'   Zthird)r*   r3   )r1   F)rt   r   r   rU   r   r   T)	r   r   rD   r   r	   r   r   rF   rX   )rK   rM   rN   r   rO   r[   rk   r7   r7   r8   test_sort_ascending_list  s    
z#TestSorted.test_sort_ascending_listN)rQ   rR   rS   __doc__r  r  r  r  r  r  r  r  r  r  r  r  r  r7   r7   r7   r8   r    s   );9r  )*re   r  warningsr   r   rx  rA   Znumpy.randomr   r   rd   Zpandas.compatr   r   r   r   r   r	   r
   r   Zpandas.core.dtypes.commonr   r   Zpandasra   r   r   r   r   r   Zpandas.core.indexr   r   Zpandas.util.testingutilZtestingrF   r  objectr   rT   r  r7   r7   r7   r8   <module>   s<   $
#             