U
    +if3                    @   s  d dl mZm Z mZ d dlmZ d dlZd dlZd dlm	Z	 d dl
Zd dl
mZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ ejd	d
gddd Z ejd gd dgd fe!d de!ddfgddd Z"G dd dZ#G dd dZ$dS )    )datedatetime	timedelta)productN)PerformanceWarning)Categorical	DataFrameGrouperIndex
MultiIndexSeriesconcat
date_range)CategoricalDtype)reshape)pivot_tableTF)paramsc                 C   s   | j S N)param)request r   R/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/reshape/test_pivot.pydropna   s    r            c                 C   s   | j \}}ttj|||S r   )r   r   pdIntervalIndexfrom_arrays)r   closedleftrightr   r   r   interval_values#   s    
r"   c                   @   st  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ejdddd gfddd dgfd!dd dgfgd"d# Zd$d% Zd&d' Zd(d) Zejd*d+d,gd-d. Zejd/ejd*d+d,gd0d1 Zd2d3 Zejd*d+d,gd4d5 Zd6d7 Zejd8d9d:ged9d:ge d9d:ge!d9d:ggejd*d+d,gd;d< Z"ejd8d=d9ged=d9ge d=d9ge!d=d9ggejd*d+d,gd>d? Z#d@dA Z$ejj%dBdCejd*d+d,gdDdE Z&ejd*d+d,gdFdG Z'dHdI Z(ejdJdKej)dLdLdMdMgdNdNdOdOgge!d=dPdQdPgdKdRfdKdSgdTdUdVdWdXdYdZgd[d\d]dZdZdWgge*j+d^d_d`dadbdcgdKdSgddfgdedf Z,dgdh Z-didj Z.ejdkdldmdndogdpdq Z/drds Z0dtdu Z1dvdw Z2dxdy Z3dzd{ Z4d|d} Z5d~d Z6dd Z7dd Z8ejddQdddddggdd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIejddTejJfdej)fdejKfdTdgejJej)gfdTdgejJejKgfddgejKej)gfgdd ZLejjMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdS )TestPivotTablec                 C   sv   t dddddddddddgdddddddddddgdddddddddddgtjdtjdtjdd| _d S )	Nfoobaronetwodullshiny   )ABCDEF)r   nprandomrandndata)selfmethodr   r   r   setup_method*   sT    


zTestPivotTable.setup_methodc                 C   s   ddg}d}t | jd|||d}| jj d|||d}t|| t | jd||d t|dkrt|jjt|kstn|jj	|d kstt|dkr|j
j|kstn|j
j	|d kst| j||g d tj }t|| d S )	Nr+   r,   r-   r.   )valuesindexcolumnsobserved)r8   r9   r;   r   r   )r   r4   tmassert_frame_equallenr9   namestupleAssertionErrornamer:   groupbyaggr1   meanunstack)r5   r;   r9   r:   tabletable2expectedr   r   r   test_pivot_tableZ   s2           "zTestPivotTable.test_pivot_tablec                 C   s   t tdtddddddgd}|jd	d
dtjdd}|jd|_|jd|_|jd|_|j	d|_	|jd	d
dtjd|d}t
|| d S )NZabcdeZfghijr      r   r      col1col2col3rN   rP   rO   r   )r9   r8   r:   aggfunc
fill_valuecategory)r9   r8   r:   rQ   rR   r;   )r   listr   r1   sumr9   astyper:   rN   rO   r<   r=   )r5   r;   dfrI   resultr   r   r   +test_pivot_table_categorical_observed_equalv   s.        	z:TestPivotTable.test_pivot_table_categorical_observed_equalc                 C   s   t dddgdddgddd	gd
}|jdtjd}|jdtjdj}t|| |jdddid}|jdddidj}t|| d S )Nabcxyzr   rK   r   )rowscolsr8   ra   )r:   rQ   r9   rQ   r8   rE   )r   r   r1   rU   Tr<   r=   )r5   rW   rsZxpr   r   r   test_pivot_table_nocols   s    z&TestPivotTable.test_pivot_table_nocolsc                 C   s   t ddddddddddd	d
dddddddddddddd}|jddddgdd}|jdddgddd}tjdddddd d!d"d#d$d%d&gddgd'}t|j| t|j| d S )(Ni`  i iP  i0u  )r   r   rK   r   r+   r,   r-   i[ i] i\ i^ rZ   r[   r\   di i  i@B )amountcustomermonthr   quantityrj   ri   rh   r   F)r   )r+   rZ   )r+   r[   )r+   r\   )r+   rf   )r,   rZ   )r,   r[   )r,   r\   )r,   rf   )r-   rZ   )r-   r[   )r-   r\   )r-   rf   r?   )r   r   r   from_tuplesr<   assert_index_equalr:   r9   )r5   rW   Zpv_colZpv_indmr   r   r   test_pivot_table_dropna   sL    	      z&TestPivotTable.test_pivot_table_dropnac                 C   s   t ddddgdddgdd}t ddddgdddgdd}t||d	d
ddgd}t|dddgdd}tj||gddgd}tdd	d
ddgi|d}t|| d S )NrZ   r[   r_   T
categoriesorderedr\   rf   r^   r   rK   r   r   )r+   r,   r8   r8   r+   r,   )r8   r9   r   rk   r9   )r   r   r   r   r   r<   r=   )r5   Zcat1cat2rW   rX   Z	exp_indexrI   r   r   r   test_pivot_table_categorical   s    
  
  z+TestPivotTable.test_pivot_table_categoricalc                 C   s   ddddg}t dddddddddg	dddddddddg	tdd	d
}|d t|dd|d< |jddd|d}tdddgdd}|t|dd}tdddgdd}t dddgdddgdddgg||d}|s|jt|dd}t	|| d S )NrZ   r[   r\   rf   r   rK   r   r   	   r+   r,   r-   r+   Frr   r,   r-   )r9   r:   r8   r   rB      r      rL      r9   r:   r:   float)
r   rangerV   CDTr   r   Zreindexr   r<   r=   )r5   r   rq   rW   rX   expected_columnsexpected_indexrI   r   r   r   $test_pivot_table_dropna_categoricals   s(    z3TestPivotTable.test_pivot_table_dropna_categoricalsc                 C   s  t ttjddddgddgddddddd	gd
}|jdd|d}t dddgittjddgddgddddd}t|| t tdddddgdddgddt	dd
}|jdd|d}t ddddgittjdddgdddgddddd}|s|d 
t|d< t|| d S )NlowhighTrp                 ?       @      @      @r+   r,   r+   r,   r9   r8   r   r   r   ry   rs   r    rL   rK   r   )r   r   r1   nanr   r
   Z
from_codesr<   r=   r   rV   r   )r5   r   rW   rX   rI   r   r   r   %test_pivot_with_non_observable_dropna   s\    
  
  	z4TestPivotTable.test_pivot_with_non_observable_dropnac                 C   sX   t |dd}|jdd|d}t ddit| ddd}|sH|t}t|| d S )Nr   r   r+   r,   r   ry   rs   )r   r   r
   uniquerV   r   r<   r=   )r5   r"   r   rW   rX   rI   r   r   r   test_pivot_with_interval_index"  s    
z-TestPivotTable.test_pivot_with_interval_indexc                 C   s   t jddddgddddg}ttjdddtjdddddgt|d	d
jddd}t	|ddddd	d}|d }t
dddgtt ddt dddgdddtjd}t|| d S )Nr   r   rK   r   dtyperZ   r[   Trx   F)Z	ascendingrw   r-   r,   r+   rU   )r9   r:   r8   rQ   marginsAllr   r{   
   ry   )r9   rB   r   )r   r   r   r   r1   arangeZintpr   Zsort_valuesr   r   r
   ZIntervalr<   assert_series_equal)r5   Zordered_catrW   Z	pivot_tabrX   rI   r   r   r   &test_pivot_with_interval_index_margins+  s2    

      z5TestPivotTable.test_pivot_with_interval_index_marginsc                 C   s<   | j jd| j j| j jd}| j jdddd}t|| d S )Nr.   r}   r+   r-   )r4   r   r+   r-   r<   r=   r5   rX   rI   r   r   r   test_pass_arrayE  s    zTestPivotTable.test_pass_arrayc                 C   sD   | j jddd | j jd}| j jd| j jd dd}t|| d S )Nr.   c                 S   s   | d S )NrL   r   r]   r   r   r   <lambda>K      z3TestPivotTable.test_pass_function.<locals>.<lambda>r}   rL   r-   )r4   r   r-   r9   r<   r=   r   r   r   r   test_pass_functionJ  s    z!TestPivotTable.test_pass_functionc                 C   sJ   ddg}d}t | j||d}| j||g tj }t|| d S )Nr+   r,   r-   r}   )	r   r4   rC   rD   r1   rE   rF   r<   r=   )r5   r9   r:   rG   rI   r   r   r   test_pivot_table_multipleO  s
    z(TestPivotTable.test_pivot_table_multiplec                 C   s  t ddddgddddgddddgd	}|jd
 dks:tt|d
dgdgdtjd}|j}ttdgd tt	dddd}t
|| t ddddgddddgddddgd	}|jd
 dkstt|d
dgdgdtjd}|j}ttdgd tt	dddd}t
|| d S )Ncatbatr   rK   r   r   rZ   r[   )rZ   vir   int64r   r   )r8   r9   r:   rR   rQ   abry   rs         ?      @      @      @float64)r   dtypesrA   r   r1   rU   r   r   r
   rT   r<   r   rE   )r5   fr_   rX   rI   r   r   r   test_pivot_dtypesV  sH    


     $


     $z TestPivotTable.test_pivot_dtypeszcolumns,valuesbool1float1float2bool2c                 C   sj   t jdt jd}t||d |dk|dkd}| jd||d}t|j}d	d
 |D }||ksftd S )NrL   r   r   rK   r   )r   r   r   r   r9   r9   r:   r8   c                 S   s   i | ]}|t d qS )r   )r1   r   ).0colr   r   r   
<dictcomp>  s      z=TestPivotTable.test_pivot_preserve_dtypes.<locals>.<dictcomp>)	r1   r   r   r   reset_indexr   dictr   rA   )r5   r:   r8   r   rW   Zdf_resrX   rI   r   r   r   test_pivot_preserve_dtypesz  s    
  
z)TestPivotTable.test_pivot_preserve_dtypesc                 C   sH  t dddddg}tdddddd	gi|d
}|j|jj|jjd}tddg}tddgdt	j
ggddg|d}t|| tddddd	gtddd	dd|d
}|j|jjtdddd}tdt dfg}d dg|_tddgddg|d}t|| |jtddtdddd}tdgt jdgdd|d}t|| d S )Nz
2011-01-01z
2011-02-01z
2011-01-02r+   r   rK   r   r   rL   rs   r}   )r+   r   )r+   rK   r   r   r   r.   )freqperiods)r+   dtr   M)keyr   z
2011-01-31      
@r   z
2011-12-31)r   DatetimeIndexr   r   r9   ri   dayr   rl   r1   r   r<   r=   r   r	   	Timestampr?   )r5   idxrW   resZexp_columnsexpr   r   r   test_pivot_no_values  s:     
 
  z#TestPivotTable.test_pivot_no_valuesc                 C   sN   t | jddgdddgdd}t | jjdgd	d
dddgdd}t|| d S )Nr.   r/   r+   r,   r-   r   )r8   r9   r:   rR   r0   r   axis)r9   r:   rR   )r   r4   Zdropr<   r=   r   r   r   r   test_pivot_multi_values  s           z&TestPivotTable.test_pivot_multi_valuesc                    s    fdd}|t jt jg}|t j}|t j}t||gddgdd}t||  fdd}|t jt jg}|t j}|t j}t||gddgdd}t|| d S )Nc                    s   t  jddgddgd| dS )Nr.   r/   r+   r,   r-   r8   r9   r:   rQ   r   r4   funcr5   r   r   r     s       z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>rE   stdr   )keysr   c                    s   t  jddgddgd| ddS )Nr.   r/   r+   r,   r-   T)r8   r9   r:   rQ   r   r   r   r   r   r   r     s   )r1   rE   r   r   r<   r=   )r5   r   rX   ZmeansZstdsrI   r   r   r   test_pivot_multi_functions  s    



z)TestPivotTable.test_pivot_multi_functionsr6   TFc           	      C   s  t j}tdd|dgddddgdd	d
dgd}|rB|ddd}nt|ddd}t||d
|gd|||g|d	||g|||dggt|dddgddtddddgddd}t|| t|ddd|j tt	dddddt 
d d}|d td |d< | |jd< |jd< | |jd< |jd< |rB|ddd}nt|ddd}| j t|ksnt| D ].\}}|j|d |d f |d ksvtqv|r|ddd}nt|ddd}t||j d S )NZR1ZR2ZR4C1C2ZC3ZC4r            rZ   r[   r\   rZ   r[   r\   ry   r}   z
2014-02-01rz   r.   )r   r   d   )rZ   r\   z
2014-02-02)r   rZ   )r   rZ   r   r[   )r   r[   )r1   r   r   pivotr   r
   r<   r=   rc   r   r   r   locZnotnar8   rU   r>   rA   Ziterrows)	r5   r6   r   rW   rX   rI   pv_rowr   r   r   test_pivot_index_with_nan  sN    







(z(TestPivotTable.test_pivot_index_with_nanz1ignore:Timestamp.freq is deprecated:FutureWarningc                 C   s  t tdddddtdddddtdddddtdddddgtdddddtdddddtdddddtdddddgtjddd	tjddd	d
}|d dd |d< |d dd |d< tddddg}tjddgd ddd}t	||g}t ddddgddddggtjddgddd|d}|r@|j
ddd}ntj
|ddd}t|| t ddgddggtjddgdddtjddgdddd}|r|j
dddd}ntj
|dddd}t|| d S )N  r   rv   r   rK     r   r   r   )dt1dt2data1data2r   c                 S   s   t j| ddS N
US/Pacifictzr   r   rf   r   r   r   r   !  r   z3TestPivotTable.test_pivot_with_tz.<locals>.<lambda>r   c                 S   s   t j| ddS N
Asia/Tokyor   r   r   r   r   r   r   "  r   r   r   z2014/01/01 09:00z2014/01/02 09:00r   )rB   r   r   z2013/01/01 09:00z2013/01/02 09:00r   r}   r   )r   r   r1   r   applyr
   r   r   r   r   r   r<   r=   r5   r6   rW   exp_col1exp_col2exp_colrI   r   r   r   r   test_pivot_with_tz
  sl    
        
z!TestPivotTable.test_pivot_with_tzc              
   C   s  t dtjdddddtjdddddtjdddddtjdddddtjd	dddg}|d
 }|jdd }t|d
 d
dg|gtj	d}t tjdddtjdddggt
dgddtjtjdddtjdddgd
dd}t|| d S )NZaaz2016-08-12 13:00:00-0700r   r   )uidtsz2016-08-12 08:00:00-0700z2016-08-12 14:00:00-0700z2016-08-25 11:00:00-0700z2016-08-25 13:00:00-0700r   c                 S   s   | j dddddS )Nr   )hourminutesecondmicrosecond)replacer   r   r   r   r   c  r   z8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>r   r   ry   z2016-08-12 00:00:00z2016-08-25 00:00:00r}   )r   r   r   	set_indexr   r   mapr   r1   minr
   r   r<   r=   )r5   rW   ZminsrX   rI   r   r   r   test_pivot_tz_in_valuesG  sR    z&TestPivotTable.test_pivot_tz_in_valuesc              	   C   s  t tddtddtddtddgtddtddtddtddgtjddd	tjddd	d
}tddddg}tjddgd ddd}t||g}t ddddgddddggtjddgddd|d}|r|j	ddd}ntj	|ddd}t
|| t ddgddggtjddgdddtjddgdddd}|r`|j	dddd}ntj	|dddd}t
|| d S )Nz
2013-01-01r.   z
2013-01-02z2013-01r   z2013-02r   r   r   )p1p2r   r   r   r   rK   r  )rB   r   r   r   r   r  r}   r   )r   r   Periodr1   r   r
   ZPeriodIndexr   r   r   r<   r=   r   r   r   r   test_pivot_periods~  sH    







z!TestPivotTable.test_pivot_periodsc                 C   s   t ddddgtdtdtdtdgdd}t dtdddgdd	ttdtddgd
d	d}|jdd
ddd}t|| d S )Nr   rK   Z2019Q1Z2019Q2r   )rZ   r[   r]   r   rZ   ry   r[   )r4   r9   r:   r]   T)r9   r:   r8   r   )r   r   r  r
   r   r<   r=   )r5   rW   rI   rX   r   r   r   test_pivot_periods_with_margins  s"    
z.TestPivotTable.test_pivot_periods_with_marginsr8   bazzooc           	   
   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d}|rX|jdd|d}ntj|dd|d}ddddddgd	d
ddddgg}tddgdd}tddgdddggddddddgddddddggd dgd}t |||dd}t|| d S )Nr&   r'   r+   r,   r-   r   rK   r   r   rL   rz   r]   r^   r_   qwtr$   r%   r  r  r$   r%   r   r4   rB   r  r  r   levelscodesr?   objectr4   r9   r:   r   )r   r   r   r
   r   r<   r=   	r5   r8   r6   rW   rX   r4   r9   r:   rI   r   r   r    test_pivot_with_list_like_values  s&    	 z/TestPivotTable.test_pivot_with_list_like_valuesr%   c           	   
   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d}|rX|jdd|d}ntj|dd|d}tjdtjd	gtjdtjdgtjdtjd
gdtjdtjgdtjdtjgdtjdtjgg}tddddddgdd}tddgddggddddgddddggd dgd}t |||dd}t|| d S )Nr&   r'   r+   r,   r-   r   rK   r   r   rL   rz   r]   r^   r_   r  r	  r
  r  r  r$   r   r  r%   r  r   r  r  r  )	r   r   r   r1   r   r
   r   r<   r=   r  r   r   r   %test_pivot_with_list_like_values_nans  s2    	z4TestPivotTable.test_pivot_with_list_like_values_nansc              	   C   sR   t dddgdddgdddgd}d}tjt|d	 |jd
dd W 5 Q R X d S )NrZ   r[   r\   r   rK   r   rM   z0pivot\(\) missing 1 required argument: 'columns'matchrN   rP   )r9   r8   )r   pytestraises	TypeErrorr   )r5   rW   msgr   r   r   #test_pivot_columns_none_raise_error  s    "z2TestPivotTable.test_pivot_columns_none_raise_errorzBMultiIndexed unstack with tuple names fails with KeyError GH#19966reasonc              	   C   s  t ddddddgd}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gddggddddgddddggd}t|||dd}|r|jdddd}ntj|dddd}tddgddgdtddgddgdtddgddgdd }t|}t|| d S )!Nr   r   rK   r   r   rL   r4   r&   r+   r]   r,   r^   r-   r_   r'   r  r	  rz   r
  r%   r  firstr   )r  r  r  r  )r%   r  )r%   r   )r  r  r   rs   rw   )r
   r   r   r   r   r   r<   r=   )r5   r6   r9   r4   r:   rW   rX   rI   r   r   r   test_pivot_with_multiindex  s>    





z)TestPivotTable.test_pivot_with_multiindexc              
   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d}tjtdd. |rh|jdddd ntj|dddd W 5 Q R X d S )Nr&   r'   r+   r,   r-   r   rK   r   r   rL   rz   r]   r^   r_   r  r	  r
  r  z^\('bar', 'baz'\)$r  r  r$   )r%   r  r   )r   r  r  KeyErrorr   r   )r5   r6   rW   r   r   r   test_pivot_with_tuple_of_valuesD  s    z.TestPivotTable.test_pivot_with_tuple_of_valuesc                    sP  ddgdgdf fdd	} j jdddgddtjd	}||d  j jdddgddtjd
d}||dd
d  j jddgddtjd}|jjd D ]}||| | qdd  j jD  j _ j jddgdtjd}|jD ](}|jd|f }| j |  kstqڈ j jddgddd}dD ],}|jd|f }| j |  kstqd S )Nr+   r,   r-   r   c                    s   | j | jd d |f } j||  }tj||dd |j|ksJt| 	 } | j |df j
d d } j||  }tj||dd |j|dfkst| j |df|f }	 j|  }
|	|
kstd S )Nr   FZcheck_names )r   r9   r4   rC   rE   r<   r   rB   rA   Z
sort_indexZiloc)rX   Z
values_colr9   r:   margins_colZcol_marginsZexpected_col_marginsZindex_marginsZexpected_ix_marginsZgrand_total_marginsZexpected_total_marginsr   r   r   _check_outputW  s       z2TestPivotTable.test_margins.<locals>._check_outputr.   T)r8   r9   r:   r   rQ   ZTotals)r8   r9   r:   r   rQ   margins_name)r%  )r9   r:   r   rQ   r   c                 S   s   g | ]}|d  qS )rK   r   )r   kr   r   r   
<listcomp>  s     z/TestPivotTable.test_margins.<locals>.<listcomp>ZAABB)r9   r   rQ   r   r$  rE   )ZDDZEEZFF)r4   r   r1   rE   r:   r  r   rA   )r5   r&  rX   rG   Z	value_colZtotalsitemr   r   r   test_marginsV  sL          
   
zTestPivotTable.test_marginsz*columns, aggfunc, values, expected_columnsr+         @g@       @g@r   r$   ry   r,   rU   rv         rL   rz   r*             )r%   r&   )r%   r'   )r%   r   )r$   r&   )r$   r'   )r$   r   rk   c                 C   s   t dddddddddg	dddddddddg	dddddddddg	dddd	d	d
dddg	dd
dddddddg	d}|j|d|d}t |tddg|d}t|| d S )Nr$   r%   r&   r'   smalllarger   rK   r   r   rL   rz   r{   r|   rv   r+   r,   r-   r.   r/   T)r:   r   rQ   r.   r/   r}   r   r   r
   r<   r=   )r5   r:   rQ   r8   r   rW   rX   rI   r   r   r   %test_margin_with_only_columns_defined  s(    z4TestPivotTable.test_margin_with_only_columns_definedc                 C   s   | j  }tt|d t|dd|dddg< ttddgdd	gd
g }t	j
|dd}tdddddgdddddgd|djddd}|d |d  |d< |jdddgdd tjdd!}t|| d S )"Nr   i8r.   r/   r0   r%   r$   r&   r'   r+  r   rk         rv   -   !   r   $   3   x   r(   r)   rs   r-   r   r   r(   r)   r   r+   r,   Tr8   r9   r:   r   rQ   rR   )r4   copyr1   r   r>   r   rV   rT   r   r   rl   r   rename_axisr   rU   r<   r=   )r5   rW   mi_valmirI   rX   r   r   r   test_margins_dtype  s*    
.  	z!TestPivotTable.test_margins_dtypec                 C   s   t tddgddgdg }tj|dd}tddd	dd
gd	dd	d	dgd|djddd}|d |d  |d< | jjdddgddtdd}t	
|| d S )Nr%   r$   r&   r'   r+  r   rk   r   rK   rL   r   rz   rB  rs   r-   r   r(   r)   r   r.   r+   r,   TrC  )rT   r   r   rl   r   rE  r4   r   r>   r<   r=   )r5   rF  rG  rI   rX   r   r   r   test_margins_dtype_len  s&      	z%TestPivotTable.test_margins_dtype_lenra   )r   rK   )rZ   r[   r   )rZ   r   c              	   C   sx   t |d dddg|d dddgddddgi}|jd|d	}t dddggtjd
ddg|dtdgd}t|| d S )Nr   r   rK   r   r   r   rL   rz   )r8   r:   )r   r   )rK   rK   )r   r   rk   r:   r9   )r   r   r   rl   r
   r<   r=   )r5   ra   df2rX   rI   r   r   r    test_pivot_table_multiindex_only  s    .
z/TestPivotTable.test_pivot_table_multiindex_onlyc                 C   sZ   t dddd}ttjdtjd|d}|jddgdd	}|jjd
 |sVt	d S )Nz
2016-01-01r   zEurope/Amsterdam)r   r   rw   r,   r-   F)r9   r   r   )
r   r   r1   r2   r3   r   r9   r  equalsrA   )r5   ZdtirW   rX   r   r   r   test_pivot_table_retains_tz  s     z*TestPivotTable.test_pivot_table_retains_tzc                    s   t j ttddgdddgddg fdd	td
D dg}t|}|jddddgdgd}|jtd}|jddddgdgd}t	j
||dd d S )Nr$   r%   r+   r,   r-   x1Zx2c                    s   g | ]} t | qS r   )r   )r   r   r   r   r   r)    s     z=TestPivotTable.test_pivot_integer_columns.<locals>.<listcomp>r   r   r   r   r   r   rK   )r8   r9   r:   r~   40132Fr#  )r   r   rT   r   r   r   r   renamestrr<   r=   )r5   r4   rW   rG   rK  rH   r   r   r   test_pivot_integer_columns  s    	z)TestPivotTable.test_pivot_integer_columnsc              
   C   s   t ddddddddgd ddddddddgd dgd dgd  d tjd	d
}|jddddgd}|dddgd  }|ddjddd}t	
|| d S )NrZ   r[   rK   r   r   r$   r   r%      )rZ   r[   r\   valuerY  r\   r}   all)r   how)r   r1   r2   r3   r   rC   rE   rF   r   r<   r=   )r5   r4   rG   groupedrI   r   r   r   test_pivot_no_level_overlap   s    
	z*TestPivotTable.test_pivot_no_level_overlapc           
   
   C   s@  d}t dtfdtfdtfdtfdtfdtfdtfg}t jd	d
dddddddg	dtfdtfgd}t j||d}t jdt	||}|d | |d< |d | |d< t
tdddtddd}|t jdt	|| }|j|d< |j|d< |j|d< t jdd||d< t|}|jdddgdddgdd}	|	jjs<td S )Ni'  r
   SymbolYearMonthZDayQuantityZPrice)SP500ZADBE)rb  ZNVDA)rb  ZORCL)NDQ100ZAAPL)rc  ZMSFT)rc  ZGOOG)FTSEzDGE.L)rd  zTSCO.L)rd  zGSK.Lr   r   i  r   i  r;     r   r   rE   r9   r:   rQ   )r1   r   r  intr   arrayemptyr2   randintr>   r   r   yearri   r   Z	lognormalr   r   r:   Zis_monotonicrA   )
r5   nr   ZproductsitemsZiproductZdrdatesrW   pivotedr   r   r   test_pivot_columns_lexsorted2  sT    


z+TestPivotTable.test_pivot_columns_lexsortedc                 C   sL   dgdgd}| j ddg|d}| j jdd|d}t|| d S )Nr   rU   r.   r/   r+   r,   rf  )r4   rC   rD   rF   r   r<   r=   )r5   r   rI   rX   r   r   r   test_pivot_complex_aggfuncf  s    z)TestPivotTable.test_pivot_complex_aggfuncc                 C   sF   | j ddg jddgtdd}| }t|d d |d ksBtd S )Nr+   r,   T)r9   rQ   r   r   )r4   r   r>   tolistrU   rA   )r5   rX   Zresult_listr   r   r   test_margins_no_values_no_colsm  s      z-TestPivotTable.test_margins_no_values_no_colsc                 C   sB   | j dddg jddgdtdd}|j ddddd	gks>td S )
Nr+   r,   r-   Tr9   r:   rQ   r   r   r   r         &@r4   r   r>   r   rs  rA   r5   rX   r   r   r   test_margins_no_values_two_rowsu  s       z.TestPivotTable.test_margins_no_values_two_rowsc                 C   s8   | j ddg jddtdd}|j dddgks4td S )Nr+   r,   Tru  r         @rv  rw  rx  r   r   r   &test_margins_no_values_one_row_one_col}  s       z5TestPivotTable.test_margins_no_values_one_row_one_colc                 C   sh   ddddddddd	d
dg| j d< | j ddddg jddgddgtdd}|j dddddgksdtd S )NrZ   r[   r\   rf   er   ghr   jr(  r.   r+   r,   r-   Tru  r   r   r   rv  rw  rx  r   r   r   'test_margins_no_values_two_row_two_cols  s        z6TestPivotTable.test_margins_no_values_two_row_two_colsmargin_namer&   i  NrZ   r[   c              	   C   s   d| d}t jt|d" t| jdddgdgd|d	 W 5 Q R X t jt|d" t| jddgddgd|d	 W 5 Q R X t jt|d  t| jddgdgd|d	 W 5 Q R X d S )
NzConflicting name "z3" in margins|margins_name argument must be a stringr  r.   r+   r,   r-   T)r8   r9   r:   r   r'  )r  r  
ValueErrorr   r4   )r5   r  r  r   r   r   -test_pivot_table_with_margins_set_margin_name  s:    
z<TestPivotTable.test_pivot_table_with_margins_set_margin_namec                 C   s   t d d ddddddddgtdddtdddtdd	dtdd	d
tdd	dtdd	d
tddd
tddd
gdd}t tjd	ddgddddtjtdddgddd d}d|j	_
d|j_
t|tddddtjd}t|| t|dtdddtjd}t||j t tdtjdddtjgd
dtjtdddtdddgddd d}d|j	_
d|j_
|r|d d|d< t|tddddtjd}t|| t|dtdddtjd}t||j | }t|tdddddtjd}t|| t|dtddddtjd}t||j d}tjt|d" t|tdddddtjd W 5 Q R X tjt|d" t|dtddddtjd W 5 Q R X |d}t|tddd ddtjd}t|| t|dtddd dtjd}t||j d!}tjt|d" t|tddd ddtjd W 5 Q R X tjt|d" t|dtddd dtjd W 5 Q R X t d d ddddddddgtdd"dd#d$tdddd#dtdd	dd%d$tdd	d
d	d$tdd"dd%d$tdd	d
d	d$tdd	d
dd$tdddd&d$gtdd	d'd$d$tdd	d(d#dtdddd%d$tdd"d
d	d$tdd	dd%d$tdddd	d$tddd)dd$tdd"d%d&d$gd*}t|td+ddtd+d,ddtjd}t ttjdtjtjd-tjddtjdtjtjtjtjdtjgd'd'tjtddd)tdd	dtdd"d)tdddgd+dtjtddd)tdd	dtdd"d)tdddgd+dd}d|j	_
d,|j_
t|| t|td+d,dtd+dddtjd}t||j tddd)tdd	dftdd	dtddd)ftdd	dtdd"d)ftdd	dtdddftdd"d)tdd	dftdddtdd"d)fg}tj|dd,gd.}t tdtjd-tjdtjdtjdtjtjdgd-d
|dd/gd}d0|j_
t|td+ddtd+d,dgd0gdtjd}t|| t|d0gtd+ddtd+d,dgdtjd}t||j d S )1NzA A A A A A A Bz$Carl Mark Carl Carl Joe Joe Joe Carlr   r   rL   r|   rv   r   r   rK   r;  )BranchBuyerra  Dater  r3  r   r   re  r+   r   zCarl Joe Markr}   r  ra  r9   r:   r8   rQ   r{   Z6MSZCarl)r   r   z#'The grouper name foo is not found'r  r$   )r   levelzThe level foo is not validr*   r0  r   r   r2  r   r      )r  r  ra  r  PayDayr   r  rz   rk   r,   r  )r   splitr   r   r1   rh  r   r   r   r9   rB   r:   r   r	   rU   r<   r=   rc   r   rV   r   r  r  r!  r  r   rl   )r5   Zusing_array_managerrW   rI   rX   r  Ztuplesr   r   r   r   test_pivot_timegrouper  s   







  



	




	

 



	



(

& z%TestPivotTable.test_pivot_timegrouperc                 C   s  ddddddg}ddddddg}t ddddddg||tjdd	d
ddgd d}|d dd |d< |d dd |d< tjdddgddd}tddg}tddgdd}t||g}t ddgddgddgg||d}t	|dgdgdgd}	t
|	| tddddddddg}tddd d gd }tjddgd d!dd}
t|||
g}t tj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}t	|dgdgdd gtjtjgd"}	t
|	| d S )#N2011-07-19 07:00:002011-07-19 08:00:002011-07-19 09:00:002013-01-01 15:00:002013-02-01 15:00:00rZ   r[   rz   r   r   r   rK   r   labelr   r   value1value2r   c                 S   s   t j| ddS r   r   r   r   r   r   r     r   z7TestPivotTable.test_pivot_datetime_tz.<locals>.<lambda>r   c                 S   s   t j| ddS r   r   r   r   r   r   r     r   r   )r   rB   r  r  ry   r   r   rL   r}   r   rU   rE   r  r   r  )r   r1   r   r   r   r   r
   r   r   r   r<   r=   rh  rU   rE   )r5   dates1dates2rW   exp_idxr   r   r   rI   rX   Zexp_col3r   r   r   test_pivot_datetime_tz  s|    	
	 

z%TestPivotTable.test_pivot_datetime_tzc              
   C   s\  ddddddg}ddddddg}t ddddddg||tjdd	d
ddgd d}|d dd |d< |d dd |d< t|d|d jjdd}tddgdd}t ddgddgddgd|tdddgddd}t	|| t||d jj
|d jjdd}t ddgddgddgdtddgddtdddgddd}t	|| t||d jjj|d jj|d jj
gdd}tjddddddgddgd gddgd }t tjddddddggd	d
d!g|d}t	|| t|td"d"d"d"d#d#g|d jj|d jj
gdd}t tdddtjdtjgtjtjtjdtjdggd"d#g|d}t	|| d S )$Nr  r  r  r  r  rZ   r[   rz   r   r   r   rK   r   r  r   c                 S   s
   t | S r   r   r   r   r   r   r   ,  r   z6TestPivotTable.test_pivot_dtaccessor.<locals>.<lambda>r   c                 S   s
   t | S r   r   r   r   r   r   r   -  r   r  r  r   ry   r   r   rL   )r{   r|   rv   r{   r|   rv   r}   rk   r   XY)r   r1   r   r   r   r   r   r
   r<   r=   ri   rk  r8   r   r   rh  r   )r5   r  r  rW   rX   r  rI   r   r   r   r   test_pivot_dtaccessor  s    	
	  
  
 
    *z$TestPivotTable.test_pivot_dtaccessorc                 C   s   t dddd}ttjt||d}tt||jj	|jj
d}|jd|_t|jj
}tdd	D ]D}|||k }|jj	|_||  }tj||d
d |j|ksftqfd S )N1/1/2000
12/31/2004r.   r   rs   r}   r   r   io  Fr#  )r   r   r1   r2   r3   r>   r   r   r9   rk  Z	dayofyearr:   	droplevelZasarrayr   r   r<   r   rB   rA   )r5   rngr   annualZdoyr   subsetrX   r   r   r   
test_dailyd  s      
zTestPivotTable.test_dailyc                 C   s   t dddd}ttjt||d}tt||jj	|jj
d}|jd|_|jj
}tdd	D ]D}|||k }|jj	|_||  }tj||d
d |j|ks`tq`d S )Nr  r  r   r   rs   r}   r   r   r0  Fr#  )r   r   r1   r2   r3   r>   r   r   r9   rk  ri   r:   r  r   r   r<   r   rB   rA   )r5   r  r   r  ri   r   r  rX   r   r   r   test_monthlyw  s    
zTestPivotTable.test_monthlyc                 C   s   ddd}t | jdgt| |d}t | jdg| |d}t|| dd | D }t | jdg||d}t|| d S )NrU   rE   rq  r+   )r9   r8   rQ   c                 s   s   | ]
}|V  qd S r   r   )r   rY  r   r   r   	<genexpr>  s     zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>)r   r4   rT   r   r<   r=   )r5   ZaggsZpivot_values_listZpivot_values_keysZagg_values_genZpivot_values_genr   r   r   %test_pivot_table_with_iterator_values  s,    
  
       z4TestPivotTable.test_pivot_table_with_iterator_valuesc                 C   s   d}t ddddgddddgddd	d	gd
}|jddd|tjtgd}tdd|gddd}dddd|fdddd|fg}tj|d d dgd}t |j||d}t	
|| d S )NZWeeklybaconZcheeser   r   g	@gffffff
@r   rc   )r,  costr   r,  r   T)r9   r:   r   r'  rQ   r  r   rB   )rE   r  r   )rE   r  rc   rE   r  )maxr  r   )r  r  rc   r  rk   r}   )r   r   r1   rE   r  r
   r   rl   r8   r<   r=   )r5   r'  ZcostsrG   ZixZtupsra   rI   r   r   r   /test_pivot_table_margins_name_with_aggfunc_list  s2    


z>TestPivotTable.test_pivot_table_margins_name_with_aggfunc_listc                 C   s   |r|j tjjdd ttdtdd tdd d}tddd	gd
ddgdddgg}tdddgdd|_	tdddgdd|_
|jddd|dd}t|| d S )N1GH#17035 (np.mean of ints is casted back to ints)r  r|   r   rK   r]   r^   r_   r   r   r   rL   rz   r.  r   r   r   r   r   r^   ry   r_   r]   Tr   r   )node
add_markerr  markxfailr   r1   r   r
   r9   r:   r   r<   r=   r5   r;   r   rW   rI   rG   r   r   r   test_categorical_margins  s    $ z'TestPivotTable.test_categorical_marginsc                 C   s   |r|j tjjdd ttdtdd tdd d}tddd	gd
ddgdddgg}tdddgdd|_	tdddgdd|_
|jd|_|jd|_|jddd|dd}t|| d S )Nr  r  r|   r   rK   r  r   r   r   rL   rz   r.  r   r   r   r   r   r^   ry   r_   rS   r]   Tr  )r  r  r  r  r  r   r1   r   r
   r9   r:   r^   rV   r_   r   r<   r=   r  r   r   r   !test_categorical_margins_category  s     $ z0TestPivotTable.test_categorical_margins_categoryc                 C   s   t ddddgddddgddddgddd	d	gd
}t|ddd}t dddgdddgdddgdtdd	dgddd}t|| d S )NrK   r   rz   r|   r   rL   r   r  r  )r+   r,   r-   r.   r.   T)r9   r   r{   r   g      @r   r   rw   r   ry   rs   r8  )r5   r;   rW   rX   rI   r   r   r   test_margins_casted_to_float  s    



	z+TestPivotTable.test_margins_casted_to_floatc           	      C   s   t jdddt jg}t jddt jdg}tt|ddg|dt|ddg|dtddd}|jd	d
d|d}tjddg|d
d}tdt jgt jdgg|d}ttddgddg|dd	d|_	t
|| |jd
d|d}tddgg|tdgd}t
|| d S )Nr   r   r+   r,   rp   r   rz   )InColValr  r  r  )r9   r:   r8   r;   )rr   rB   r   r   )r4   r:   ry   )r:   r8   r;   r   )r4   r:   r9   )r1   r   r   r   r   r   r   CategoricalIndexr
   r9   r<   r=   )	r5   r;   rr   r   r   rW   rX   Zexpected_colsrI   r   r   r   test_pivot_with_categorical  s8         z*TestPivotTable.test_pivot_with_categoricalc                 C   s   t ddddgddddgdddd	gd
}|d d|d< |jddd|dd}tjdddgdddgddd}tddgdd}tjddgddgddggtjd}t |||d}t	
|| d S )Nr+   r,   r-   rZ   r[   r   rK   r   r   )r   r   Vr   rS   r  r   count)r9   r:   r   rQ   Frq   rr   rB   ry   r   r   r}   )r   rV   r   r   r  r
   r1   rh  r   r<   r=   )r5   r;   rW   rX   r   r   expected_datarI   r   r   r   test_categorical_aggfunc  s2    "       "  z'TestPivotTable.test_categorical_aggfuncc           	      C   s   t dddgdddgdddgd}ddd	d
ddddddddg}|d dj||d< |jddd|dd}tddgddd}tj||ddd}ddggddggd  }t |||d }|r|jdg }t	
|| d S )!Nr   rA     Januaryr   r   )Salesr`  r_  FebruaryZMarchZAprilMayZJuneZJulyZAugustZ	SeptemberZOctoberZNovemberZDecemberr`  rS   r  r_  rU   )r8   r9   r:   r;   rQ   r   )rB   r   Fr  i@  r   r*   r}   )r   rV   r   Zset_categoriesr   r
   r   r  r   r<   r=   )	r5   r;   rW   monthsrX   r   r   r  rI   r   r   r   %test_categorical_pivot_index_ordering'  sV         z4TestPivotTable.test_categorical_pivot_index_orderingc                 C   sB  t dddgdddgdddgd	}|jd
ddgtjd}tjdddgdddggddgd}t dddg|d
gd}t|| |jd
ddtjd}t dtjtjgtjdtjgtjtjdggt	dddgddt	dddgddd}t|| |jd
dtjgd}tdgd
gg}t dddgt	dddgdd|d}t|| d S )Nr   r   rL   r-   r.   r/   r   rv   rM   rN   rP   rO   rb   rk   r}   rf  ry   rU   )
r   r   r1   rU   r   r   r<   r=   NaNr
   )r5   rW   rX   rn   rI   r   r   r   test_pivot_table_not_seriesS  s     ""&"z*TestPivotTable.test_pivot_table_not_seriesc                 C   sZ   d}t ddddgi}t|dgtd|d}tddd|gddd	}t |d
}t|| d S )Nu   Δοκιμήr$   r   rK   r   T)r9   rQ   r   r'  r  r  rs   )r   r   r>   r
   r<   r=   )r5   greekframerG   r9   rI   r   r   r   test_pivot_margins_name_unicodeo  s        
z.TestPivotTable.test_pivot_margins_name_unicodec                 C   sB  t dddddddddddgdddddddddddgtdd}t|ddd	d
}tdgddggddgddggd dgd}t ddddddd|dd}t|| t|ddd	dgd
}td	dgdgddggddddgddddgddddggd d dgd}t ddddddddddddd|dd}t|| d S )Nr$   r%   r&   r'   r*   rw   r+   r,   rU   rf  r-   r   r   r  r   r0  )r%   r$   r{   r   ))r-   r&   )r-   r'   r~   rE         @r   rz  g@))rE   r-   r&   )rE   r-   r'   )rU   r-   r&   )rU   r-   r'   )r   r   r   r   rE  r<   r=   )r5   r4   rX   rG  rI   r   r   r   test_pivot_string_as_funcz  st        	z(TestPivotTable.test_pivot_string_as_funcz
f, f_numpyrE   r   c                 C   s4   t | jdd|d}t | jdd|d}t|| d S )Nr+   r,   rf  )r   r4   r<   r=   )r5   r   Zf_numpyrX   rI   r   r   r   test_pivot_string_func_vs_func  s    z-TestPivotTable.test_pivot_string_func_vs_funcc                 C   s   G dd dt j}| z}|t d| ttdtddd}d}tjt	|d2 t
jtd	d |jd
dddd W 5 Q R X W 5 Q R X W 5 Q R X d S )Nc                       s   e Zd Z fddZ  ZS )zSTestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstackerc                    s   t  j|| tdd S )NDon't compute final result.)super__init__	Exception)r5   argskwargs	__class__r   r   r    s    z\TestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)__name__
__module____qualname__r  __classcell__r   r   r  r   MockUnstacker  s   r  
_Unstackeri   r   )ind1ind2r  z$The following operation may generater  r  r  r  r  r  )reshape_libr  contextsetattrr   r1   r   r<   Zassert_produces_warningr   r  r  r  r   )r5   Zmonkeypatchr  rn   rW   r  r   r   r   -test_pivot_number_of_levels_larger_than_int32  s    
   z<TestPivotTable.test_pivot_number_of_levels_larger_than_int32c           
      C   s   t dddgdddgdddgd}dd	 }d
d }dd }t|d|||g|d}ddtjtjddgddtjtjddgg}tjdddgddggd dgd}t |ddg|d}	|r|	jdd}	t||	 d S )Napplepeachr   rK   r{   rz   )fruitsizetastec                 S   s   dS )Nr   r   r   r   r   r   ret_one  s    z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_onec                 S   s   t | S r   )rU   r   r   r   r   ret_sum  s    z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumc                 S   s   t jS r   )r1   r   r   r   r   r   ret_none  s    z@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_noner  r:   rQ   r   r   r0  r  r  r  rk   r  r  r}   r:   r   )	r   r   r1   r   r   Zfrom_productr   r<   r=   )
r5   r   rW   r  r  r  rX   r4   r   rI   r   r   r   test_pivot_table_aggfunc_dropna  s0       (z.TestPivotTable.test_pivot_table_aggfunc_dropnac                 C   s   t dddgdtjdgdtjtjgd}t|dtj|d}d	tjgdtjgg}tddgdd
}t |ddg|d}|r|jdd}t|| d S )Nr&   r'   r   rK   r   )r+   r]   r^   r+   r  r   ry   r]   r^   r}   r:   r   )	r   r1   r   r   rE   r
   r   r<   r=   )r5   r   rW   rX   r4   r   rI   r   r   r   &test_pivot_table_aggfunc_scalar_dropna  s    "z5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnac              	   C   sz   t dddddgdddddgdd	d	dd	gd d d d d gd
}|jdddtjd}t tg dddd}d|j_t|| d S )NrK   r   rL   rz   r{   r|   rv   pr  )r+   idr-   r.   r+   r.   r  r  r   r  rs   )	r   r   r1   r  r
   r:   rB   r<   r=   r5   rW   rX   rI   r   r   r   test_pivot_table_empty_aggfunc  s    z-TestPivotTable.test_pivot_table_empty_aggfuncc              	   C   s`   dd }t ddddgddddgddddgd	}tjtd
d |jd
dd|d W 5 Q R X d S )Nc                 S   s
   t | S r   )r1   rE   )Zarrr   r   r   rD   &  s    z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.aggr   r   r   r   r  (   )r  r  ZZ
notpresentr  r  r  )rQ   )r   r  r  r!  r   )r5   rD   r$   r   r   r   !test_pivot_table_no_column_raises$  s    (z0TestPivotTable.test_pivot_table_no_column_raisesc                 C   s:  t dddddddddg	dddddddddg	dddddddddg	dddd	d	d
dddg	dd
dddddddg	d}t|ddgddgtjtttjgdd}tddddg}tjddddgddgd}td d!d"d#gd d!d$d%gd&d'd(d)gd*d#d+d&gg}t |||d,}|d 	tj
|d< |d 	tj
|d< t|| d S )-Nr$   r%   r&   r'   r5  r6  r   rK   r   r   rL   rz   r{   r|   rv   r7  r.   r/   r+   r-   rq  )r8   r9   rQ   )r.   rE   )r/   r  )r/   rE   )r/   r   )r%   r6  )r%   r5  )r$   r6  )r$   r5  rk   r.  g      "@g      @      @g      !@r/  r   r  r   r   g["8@g.UUU@rJ  )r   r   r1   rE   r   r  r   rl   rh  rV   r   r<   r=   )r5   rW   rG   ra   r9   valsrI   r   r   r   0test_pivot_table_multiindex_columns_doctest_case-  sR    





z?TestPivotTable.test_pivot_table_multiindex_columns_doctest_casec                 C   s   t dddgdddgddd	gd
d
dgd}|jddgddddd}t dtjgdtjgtjd	ggtd
dgddtjdddgdddggddgdd}t|| d S )NZd1Zd4Zd3rZ   r[   r\      r<  "   Z2018Z2019)rZ   r   numrk  r   rk  r  rU   F)r9   r:   r8   rQ   sortry   rk   rJ  )	r   r   r1   r   r
   r   r   r<   r=   r  r   r   r   test_pivot_table_sort_falsea  s.         z*TestPivotTable.test_pivot_table_sort_falsec                 C   s   t dddgdddgdddgddd	gg}d
ddg|_|jd
dddddd}t ddddgddd	dgddd	d
gg}ddddg|_dddg|_d|j_d
|j_t|| d S )NrZ   r]   r   r^   rK   r[   r   r_   r   r   r   r  rU   r   T)r9   r:   r8   rQ   rR   r   r{   rL   r   )r   r:   r   r9   rB   r<   r=   r  r   r   r   1test_pivot_table_with_margins_and_numeric_columnsw  s     (     &z@TestPivotTable.test_pivot_table_with_margins_and_numeric_columns)Vr  r  r  r7   rJ   rY   re   ro   ru   r   r   r   r   r   r   r   r   r  r  Zparametrizer   r   r   r   r   filterwarningsr   r   r  r  r1   rh  r   r
   r  r  r  r  r   r"  r-  rE   r   rl   r9  rH  rI  rL  rN  rW  r]  rp  rr  rt  ry  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rU   r   r  Zslowr  r  r  r  r  r  r  r  r   r   r   r   r#   )   s  0%5	$

!	
5
;7
-

	

	!&
<

4	
%  GS#,>

#	4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S )	TestPivotc                 C   s   ddddddgddddddgddddddgd	}t |}|jd
ddd	}t ddddddddd}d\|j_|j_t|| |jjd
kst|jjdkst|jd
dd}|jjd
kst|jjdkstd S )Nr+   r,   r-   OneTwor   r   r   r   r9   r:   r8   rw   r  r  r}   Nr:   )	r   r   r9   rB   r:   r<   r=   rA   r?   )r5   r4   r  ro  rI   r   r   r   
test_pivot  s$    

zTestPivot.test_pivotc              	   C   sZ   t dddddgdddddgdddddgd	}tjtd
d |ddd W 5 Q R X d S )Nr%   r$   r&   r'   r   r   r   r   r   zduplicate entriesr  rZ   r[   r\   )r   r  r  r  r   )r5   r4   r   r   r   test_pivot_duplicates  s    zTestPivot.test_pivot_duplicatesc                 C   s8   t dddgd}|ddd}t  }tj||dd d S )NrZ   r[   r\   r~   Fr#  )r   r   r<   r=   r  r   r   r   test_pivot_empty  s    zTestPivot.test_pivot_emptyc                 C   sD   t ddgd}|jdddd}t| t|jtdd	gdd
 d S )N)r+   rR  A1)r,   rT  ZB2r  r   r   rK   r   r+   r,   ry   )r   r   reprr<   rm   r:   r
   )r5   rW   rX   r   r   r   test_pivot_integer_bug  s    z TestPivot.test_pivot_integer_bugc                 C   s  ddddddgddddddgddddddgd	}t |d
}|jddd}t ddddddddd}d\|j_|j_t|| |jdd}tj	ddgd dgd|_d
|j_tj||dd |jjd
kst
|jjdkst
|jd|_|jddd}d|j_t|| d S )Nr+   r,   r-   r  r  r   r   r   r   r9   r:   r8   )r:   r8   rw   r  r}   r~   )r8   r  )r8   r  rk   Fr#  r  r   )r   r   r   r9   rB   r:   r<   r=   r   rl   rA   r?   r  )r5   r4   r  rX   rI   r   r   r   test_pivot_index_none  s4    

 zTestPivot.test_pivot_index_nonec                 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ddddddgd}d	d
g}dg}|j||d d}t tddddgdtjdtjgddddgtjdtjdggtjddgd	d
gdtjddgd dgdd}t|| |d	d
gkst	|dgkst	d S )Nr   rK   r   r   rL   rz   r   )lev1lev2lev3lev4r8   r  r  r  r   r   r   r   r   r  r   r  )r   r   rK   rK   )r   rK   r   rK   rk   )r  r  r8   r8   r}   )
r   r   r1   rh  r   r   r   r<   r=   rA   )r5   rW   r9   r:   rX   rI   r   r   r   0test_pivot_index_list_values_none_immutable_args  s>    	

 z:TestPivot.test_pivot_index_list_values_none_immutable_argsN)	r  r  r  r  r  r  r
  r  r  r   r   r   r   r     s   $r   )%r   r   r   	itertoolsr   numpyr1   r  Zpandas.errorsr   Zpandasr   r   r   r	   r
   r   r   r   r   Zpandas._testingZ_testingr<   Zpandas.api.typesr   r   Zpandas.core.reshaper   r  Zpandas.core.reshape.pivotr   Zfixturer   r   r"   r#   r   r   r   r   r   <module>   s@   (

.
                p