U
    f/e-                    @   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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 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)Categorical	DataFrameGrouperIndex
MultiIndexSeriesconcat
date_range)CategoricalDtype)pivot_tableTF)paramsc                 C   s   | j S N)param)request r   C/tmp/pip-unpacked-wheel-tiezk1ph/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                   @   sl  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 ZTdS )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)r6   r7   r9   r   r   )r   r2   tmassert_frame_equallenr7   namestupleAssertionErrornamer8   groupbyaggr/   meanunstack)r3   r9   r7   r8   tabletable2expectedr   r   r   test_pivot_tableW   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col3rL   rN   rM   r   )r7   r6   r8   aggfunc
fill_valuecategory)r7   r6   r8   rO   rP   r9   )r   listr   r/   sumr7   astyper8   rL   rM   r:   r;   )r3   r9   dfrG   resultr   r   r   +test_pivot_table_categorical_observed_equals   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   rI   r   )Zrowscolsr6   r^   )r8   rO   r7   rO   r6   rC   )r   r   r/   rS   Tr:   r;   )r3   rU   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   rI   r   r)   r*   r+   i[ i] i\ i^ rX   rY   rZ   di i  i@B )amountcustomermonthr   quantityrg   rf   re   r   F)r   )r)   rX   )r)   rY   )r)   rZ   )r)   rc   )r*   rX   )r*   rY   )r*   rZ   )r*   rc   )r+   rX   )r+   rY   )r+   rZ   )r+   rc   r=   )r   r   r
   from_tuplesr:   assert_index_equalr8   r7   )r3   rU   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 )NrX   rY   r]   T
categoriesorderedrZ   rc   r\   r   rI   r   r   )r)   r*   r6   r6   r)   r*   )r6   r7   r   rh   r7   )r   r   r   r
   r   r:   r;   )r3   Zcat1Zcat2rU   rV   Z	exp_indexrG   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 )NrX   rY   rZ   rc   r   rI   r   r   	   r)   r*   r+   r)   Fro   r*   r+   )r7   r8   r6   r   r@      r      rJ      r7   r8   r8   float)
r   rangerT   CDTr   r   Zreindexr   r:   r;   )r3   r   rn   rU   rV   expected_columnsexpected_indexrG   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highTrm                 ?       @      @      @r)   r*   r)   r*   r7   r6   r   r   r   ru   rp   r   rJ   rI   r   )r   r   r/   nanr   r	   Z
from_codesr:   r;   r|   rT   r{   )r3   r   rU   rV   rG   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   ru   rp   )r   r   r	   uniquerT   r{   r:   r;   )r3   r    r   rU   rV   rG   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   rI   r   dtyperX   rY   Trt   F)Z	ascendingrs   r+   r*   r)   rS   )r7   r8   r6   rO   marginsAllr   rw   
   ru   )r7   r@   r   )r   r   r   r   r/   arangeZintpr   Zsort_valuesr   r   r	   ZIntervalr:   assert_series_equal)r3   Zordered_catrU   Z	pivot_tabrV   rG   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,   ry   r)   r+   )r2   r   r)   r+   r:   r;   r3   rV   rG   r   r   r   test_pass_arrayB  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 )NrJ   r   r[   r   r   r   <lambda>H      z3TestPivotTable.test_pass_function.<locals>.<lambda>ry   rJ   r+   )r2   r   r+   r7   r:   r;   r   r   r   r   test_pass_functionG  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+   ry   )	r   r2   rA   rB   r/   rC   rD   r:   r;   )r3   r7   r8   rE   rG   r   r   r   test_pivot_table_multipleL  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catZbatr   rI   r   r   rX   rY   )rX   vir   int64r   r   )r6   r7   r8   rP   rO   abru   rp         ?      @      @      @float64)r   dtypesr?   r   r/   rS   r   r   r	   rR   r:   r   rC   )r3   fr]   rV   rG   r   r   r   test_pivot_dtypesS  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 )NrJ   r   r   rI   r   )r   r   r   r   r7   r7   r8   r6   c                 S   s   i | ]}|t d qS )r   )r/   r   ).0colr   r   r   
<dictcomp>  s      z=TestPivotTable.test_pivot_preserve_dtypes.<locals>.<dictcomp>)	r/   r   r   r   reset_indexr   dictr   r?   )r3   r8   r6   r   rU   Zdf_resrV   rG   r   r   r   test_pivot_preserve_dtypesw  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   rI   r   r   rJ   rp   ry   )r)   r   )r)   rI   r   r   r   r,   )freqperiods)r)   dtr   M)keyr   z
2011-01-31      
@r   z
2011-12-31)r   DatetimeIndexr   r   r7   rf   dayr
   ri   r/   r   r:   r;   r   r   	Timestampr=   )r3   idxrU   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   )r6   r7   r8   rP   r.   r   axis)r7   r8   rP   )r   r2   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+   r6   r7   r8   rO   r   r2   funcr3   r   r   r     s       z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>rC   stdr   )keysr   c                    s   t  jddgddgd| ddS )Nr,   r-   r)   r*   r+   T)r6   r7   r8   rO   r   r   r   r   r   r   r     s   )r/   rC   r   r   r:   r;   )r3   r   rV   ZmeansZstdsrG   r   r   r   test_pivot_multi_functions  s    



z)TestPivotTable.test_pivot_multi_functionsr4   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            rX   rY   rZ   rX   rY   rZ   ru   ry   z
2014-02-01rv   r,   )r   r   d   )rX   rZ   z
2014-02-02)r   rX   )r   rX   r   rY   )r   rY   )r/   r   r   pivotr   r	   r:   r;   r`   r   r   r   locZnotnar6   rS   r<   r?   Ziterrows)	r3   r4   r   rU   rV   rG   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   rr   r   rI     r   r   r   )dt1dt2data1data2r   c                 S   s   t j| ddS N
US/Pacifictzr   r   rc   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   )r@   r   r   z2013/01/01 09:00z2013/01/02 09:00r   ry   r   )r   r   r/   r   applyr	   r   r   r
   r   r   r:   r;   r3   r4   rU   exp_col1exp_col2exp_colrG   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   `  r   z8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>r   r   ru   z2016-08-12 00:00:00z2016-08-25 00:00:00ry   )r   r   r   	set_indexr   r   mapr   r/   minr	   r   r:   r;   )r3   rU   ZminsrV   rG   r   r   r   test_pivot_tz_in_valuesD  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   rI   r   )r@   r   r   r   r   r   ry   r   )r   r   Periodr/   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   rI   Z2019Q1Z2019Q2r   )rX   rY   r[   r   rX   ru   rY   )r2   r7   r8   r[   T)r7   r8   r6   r   )r   r   r   r	   r   r:   r;   )r3   rU   rG   rV   r   r   r   test_pivot_periods_with_margins  s"    
z.TestPivotTable.test_pivot_periods_with_marginsr6   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   rI   r   r   rJ   rv   r[   r\   r]   qwtr"   r#   r  r  r"   r#   r   r2   r@   r  r  r   levelscodesr=   objectr2   r7   r8   r   )r   r   r   r	   r
   r:   r;   	r3   r6   r4   rU   rV   r2   r7   r8   rG   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   rI   r   r   rJ   rv   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   %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 )NrX   rY   rZ   r   rI   r   rK   z0pivot\(\) missing 1 required argument: 'columns'matchrL   rN   )r7   r6   )r   pytestraises	TypeErrorr   r3   rU   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   rI   r   r   rJ   r2   r$   r)   r[   r*   r\   r+   r]   r%   r  r  rv   r  r#   r  firstr   )r	  r
  r  r  )r#   r  )r#   r   )r  r  r   rp   rs   )r	   r
   r   r   r   r   r:   r;   )r3   r4   r7   r2   r8   rU   rV   rG   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   rI   r   r   rJ   rv   r[   r\   r]   r  r  r  r  z^\('bar', 'baz'\)$r  r  r"   )r#   r  r   )r   r  r  KeyErrorr   r   )r3   r4   rU   r   r   r   test_pivot_with_tuple_of_valuesA  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   r7   r2   rA   rC   r:   r   r@   r?   Z
sort_indexZiloc)rV   Z
values_colr7   r8   margins_colZcol_marginsZexpected_col_marginsZindex_marginsZexpected_ix_marginsZgrand_total_marginsZexpected_total_marginsr   r   r   _check_outputT  s       z2TestPivotTable.test_margins.<locals>._check_outputr,   T)r6   r7   r8   r   rO   ZTotals)r6   r7   r8   r   rO   margins_name)r!  )r7   r8   r   rO   r   c                 S   s   g | ]}|d  qS )rI   r   )r   kr   r   r   
<listcomp>  s     z/TestPivotTable.test_margins.<locals>.<listcomp>ZAABB)r7   r   rO   r   r   rC   )ZDDZEEZFF)r2   r   r/   rC   r8   r	  r   r?   )r3   r"  rV   rE   Z	value_colZtotalsitemr   r   r   test_marginsS  sL          
   
zTestPivotTable.test_marginsz*columns, aggfunc, values, expected_columnsr)         @g@       @g@r   r"   ru   r*   rS   rr         rJ   rv   r(             )r#   r$   )r#   r%   )r#   r   )r"   r$   )r"   r%   )r"   r   rh   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   rI   r   r   rJ   rv   rw   rx   rr   r)   r*   r+   r,   r-   T)r8   r   rO   r,   r-   ry   r   r   r	   r:   r;   )r3   r8   rO   r6   r~   rU   rV   rG   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-   r.   r#   r"   r$   r%   r'  r   rh         rr   -   !   r   $   3   x   r&   r'   rp   r+   r   r   r&   r'   r   r)   r*   Tr6   r7   r8   r   rO   rP   )r2   copyr/   r   r<   reshaperT   rR   r   r
   ri   r   rename_axisr   rS   r:   r;   )r3   rU   mi_valmirG   rV   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   rh   r   rI   rJ   r   rv   r>  rp   r+   r   r&   r'   r   r,   r)   r*   Tr?  )rR   r   r
   ri   r   rB  r2   r   r<   r:   r;   )r3   rC  rD  rG   rV   r   r   r   test_margins_dtype_len  s&      	z%TestPivotTable.test_margins_dtype_lenr^   )r   rI   )rX   rY   r   )rX   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   rI   r   r   r   rJ   rv   )r6   r8   )r   r   )rI   rI   )r   r   rh   r8   r7   )r   r   r
   ri   r	   r:   r;   )r3   r^   df2rV   rG   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   rs   r*   r+   F)r7   r   r   )
r   r   r/   r0   r1   r   r7   r	  equalsr?   )r3   ZdtirU   rV   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   rI   )r6   r7   r8   rz   40132Fr  )r   r   rR   r   r|   r   r   renamestrr:   r;   )r3   r2   rU   rE   rH  rF   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 )NrX   rY   rI   r   r   r"   r   r#      )rX   rY   rZ   valuerV  rZ   ry   all)r   how)r   r/   r0   r1   r   rA   rC   rD   r   r:   r;   )r3   r2   rE   ZgroupedrG   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	   ZSymbolYearMonthZDayQuantityZPrice)SP500ZADBE)r]  ZNVDA)r]  ZORCL)NDQ100ZAAPL)r^  ZMSFT)r^  ZGOOG)FTSEzDGE.L)r_  zTSCO.L)r_  zGSK.Lr   r   i  r   i  r7     r   r   rC   r7   r8   rO   )r/   r   r  intr{   arrayemptyr0   randintr<   r   r   yearrf   r   Z	lognormalr   r   r8   Zis_monotonicr?   )
r3   nr   ZproductsitemsZiproductZdrdatesrU   pivotedr   r   r   test_pivot_columns_lexsorted/  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   rS   r,   r-   r)   r*   ra  )r2   rA   rB   rD   r   r:   r;   )r3   r   rG   rV   r   r   r   test_pivot_complex_aggfuncc  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)r7   rO   r   r   )r2   r   r<   tolistrS   r?   )r3   rV   Zresult_listr   r   r   test_margins_no_values_no_colsj  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r7   r8   rO   r   r   r   r         &@r2   r   r<   r   rn  r?   r3   rV   r   r   r   test_margins_no_values_two_rowsr  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*   Trp  r         @rq  rr  rs  r   r   r   &test_margins_no_values_one_row_one_colz  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 )NrX   rY   rZ   rc   er   ghr   jr$  r,   r)   r*   r+   Trp  r   r   r   rq  rr  rs  r   r   r   'test_margins_no_values_two_row_two_cols  s        z6TestPivotTable.test_margins_no_values_two_row_two_colsmargin_namer$   i  NrX   rY   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)r6   r7   r8   r   r#  )r  r  
ValueErrorr   r2   )r3   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   rJ   rx   rr   r   r   rI   r7  )BranchBuyerr\  Dater  r/  r   r   r`  r)   r   zCarl Joe Markry   r  r\  r7   r8   r6   rO   rw   Z6MSZCarl)r   r   z#'The grouper name foo is not found'r  r"   )r   levelzThe level foo is not validr(   r,  r   r   r.  r   r      )r  r  r\  r  PayDayr   r  rv   rh   r*   r  )r   splitr   r   r/   rc  rA  r   r   r7   r@   r8   r   r   rS   r:   r;   r`   r   rT   r   r  r  r  r}  r
   ri   )r3   Zusing_array_managerrU   rG   rV   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:00rX   rY   rv   r   r   r   rI   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   r@   r  r  ru   r   r   rJ   ry   r   rS   rC   r  r   r  )r   r/   r   r   r   r   r	   r
   r   r   r:   r;   rc  rS   rC   )r3   dates1dates2rU   exp_idxr   r   r   rG   rV   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  rX   rY   rv   r   r   r   rI   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   ru   r   r   rJ   )rw   rx   rr   rw   rx   rr   ry   rh   r   XY)r   r/   r   r   r   r   r   r	   r:   r;   rf   rf  r6   r
   r   rc  r   )r3   r  r  rU   rV   r  rG   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   rp   ry   r   r   io  Fr  )r   r   r/   r0   r1   r<   r   r   r7   rf  Z	dayofyearr8   	droplevelZasarrayr|   r   r:   r   r@   r?   )r3   rngr   annualZdoyr   subsetrV   r   r   r   
test_dailya  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   rp   ry   r   r   r,  Fr  )r   r   r/   r0   r1   r<   r   r   r7   rf  rf   r8   r  r|   r   r:   r   r@   r?   )r3   r  r   r  rf   r   r  rV   r   r   r   test_monthlyt  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 )NrS   rC   rl  r)   )r7   r6   rO   c                 s   s   | ]
}|V  qd S r   r   )r   rV  r   r   r   	<genexpr>  s     zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>)r   r2   rR   r   r:   r;   )r3   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WeeklyZbaconZcheeser   r   g	@gffffff
@r   r`   )r(  costr   r(  r   T)r7   r8   r   r#  rO   r  r   r@   )rC   r  r   )rC   r  r`   rC   r  )maxr  r   )r  r  r`   r  rh   ry   )r   r   r/   rC   r  r	   r
   ri   r6   r:   r;   )r3   r#  ZcostsrE   ixZtupsr^   rG   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  rx   r   rI   r[   r\   r]   r   r   r   rJ   rv   r*  r   r   r   r   r   r\   ru   r]   r[   Tr   r   )node
add_markerr  markxfailr   r/   r   r	   r7   r8   r   r:   r;   r3   r9   r   rU   rG   rE   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  rx   r   rI   r  r   r   r   rJ   rv   r*  r   r   r   r   r   r\   ru   r]   rQ   r[   Tr  )r  r  r  r  r  r   r/   r   r	   r7   r8   r\   rT   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 )NrI   r   rv   rx   r   rJ   r   r  r  )r)   r*   r+   r,   r,   T)r7   r   rw   r   g      @r   r   rs   r   ru   rp   r4  )r3   r9   rU   rV   rG   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*   rm   r   rv   )InColValr  r  r  )r7   r8   r6   r9   )ro   r@   r   r   )r2   r8   ru   )r8   r6   r9   r   )r2   r8   r7   )r/   r   r   r   r|   r   r   CategoricalIndexr	   r7   r:   r;   )	r3   r9   ro   r   r   rU   rV   Zexpected_colsrG   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+   rX   rY   r   rI   r   r   )r   r   Vr   rQ   r  r   count)r7   r8   r   rO   Frn   ro   r@   ru   r   r   ry   )r   rT   r   r   r  r	   r/   rc  r   r:   r;   )r3   r9   rU   rV   r   r~   expected_datarG   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jddg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   r=     Januaryr   r   )Salesr[  rZ  FebruaryZMarchZAprilMayZJuneZJulyZAugustZ	SeptemberZOctoberZNovemberZDecemberr[  rQ   r  rZ  rS   )r6   r7   r8   r9   rO   ru   Fr  i@  r   r(   ry   )r   rT   r   Zset_categoriesr   r   Z
Int64Indexr  r   r:   r;   )	r3   r9   rU   monthsrV   r~   r   r  rG   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   rJ   r+   r,   r-   r   rr   rK   rL   rN   rM   r_   rh   ry   ra  ru   rS   )
r   r   r/   rS   r
   r   r:   r;   NaNr	   )r3   rU   rV   rk   rG   r   r   r   test_pivot_table_not_seriesP  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   rI   r   T)r7   rO   r   r#  r  r  rp   )r   r   r<   r	   r:   r;   )r3   greekframerE   r7   rG   r   r   r   test_pivot_margins_name_unicodel  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(   rs   r)   r*   rS   ra  r+   r   r   r  r   r,  )r#   r"   rw   r   ))r+   r$   )r+   r%   rz   rC         @r   ru  g@))rC   r+   r$   )rC   r+   r%   )rS   r+   r$   )rS   r+   r%   )r   r|   r   r
   rB  r:   r;   )r3   r2   rV   rD  rG   r   r   r   test_pivot_string_as_funcw  st        	z(TestPivotTable.test_pivot_string_as_funcz
f, f_numpyrC   r   c                 C   s4   t | jdd|d}t | jdd|d}t|| d S )Nr)   r*   ra  )r   r2   r:   r;   )r3   r   Zf_numpyrV   rG   r   r   r   test_pivot_string_func_vs_func  s    z-TestPivotTable.test_pivot_string_func_vs_funcc              	   C   sP   t tdtddd}d}tjt|d |jddddd	 W 5 Q R X d S )
Ni   r   )ind1ind2r  z6Unstacked DataFrame is too big, causing int32 overflowr  r  r  r  r  )r   r/   r   r  r  r}  r   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 )NZappleZpeachr   rI   rw   rv   )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   )rS   r   r   r   r   ret_sum  s    z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumc                 S   s   t jS r   )r/   r   r   r   r   r   ret_none  s    z@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_noner  r8   rO   r   r   r,  r  r  r  rh   r  r  ry   r8   r   )	r   r   r/   r   r
   Zfrom_productr   r:   r;   )
r3   r   rU   r  r  r  rV   r2   r   rG   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   rI   r   )r)   r[   r\   r)   r  r   ru   r[   r\   ry   r8   r   )	r   r/   r   r   rC   r	   r   r:   r;   )r3   r   rU   rV   r2   r   rG   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 )NrI   r   rJ   rv   rw   rx   rr   pr  )r)   idr+   r,   r)   r,   r  r  r   r  rp   )	r   r   r/   r  r	   r8   r@   r:   r;   r3   rU   rV   rG   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   )r/   rC   )Zarrr   r   r   rB     s    z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.aggr   r   r   r   r  (   )r  r  ZZ
notpresentr  r  r  )rO   )r   r  r  r  r   )r3   rB   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,}t	
|| d S )-Nr"   r#   r$   r%   r1  r2  r   rI   r   r   rJ   rv   rw   rx   rr   r3  r,   r-   r)   r+   rl  )r6   r7   rO   )r,   rC   )r-   r  )r-   rC   )r-   r   )r#   r2  )r#   r1  )r"   r2  )r"   r1  rh   r*  g      "@g      @      @g      !@r+  r   r  r   r   g["8@g.UUU@rG  )r   r   r/   rC   r   r  r
   ri   rc  r:   r;   )r3   rU   rE   r^   r7   valsrG   r   r   r   test_pivot_table_doctest_case   sN    





z,TestPivotTable.test_pivot_table_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 )Nd1Zd4Zd3rX   rY   rZ      r8  "   Z2018Z2019)rX   r   numrf  r   rf  r  rS   F)r7   r8   r6   rO   sortru   rh   rG  )	r   r   r/   r   r	   r
   r   r:   r;   r  r   r   r   test_pivot_table_sort_falseQ  s.         z*TestPivotTable.test_pivot_table_sort_false)U__name__
__module____qualname__r5   rH   rW   rb   rl   rq   r   r   r   r   r   r   r   r   r  r  Zparametrizer   r   r   r   r   filterwarningsr   r   r   r   r/   rc  r   r	   r  r  r  r  r  r  r)  rC   r
   ri   r5  rE  rF  rI  rK  rT  rY  rk  rm  ro  rt  rv  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rS   r   r  Zslowr  r  r  r  r  r  r  r   r   r   r   r!   &   s  0%5	$

!	
5
;7
-

	

	!&
<

4	
%  GS#,>

#	1r!   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   r7   r8   r6   rs   r  r  ry   Nr8   )	r   r   r7   r@   r8   r:   r;   r?   r=   )r3   r2   r  rj  rG   r   r   r   
test_pivoti  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  rX   rY   rZ   )r   r  r  r}  r   )r3   r2   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 )NrX   rY   rZ   rz   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)   rO  A1)r*   rQ  ZB2r  r   r   rI   r   r)   r*   ru   )r   r   reprr:   rj   r8   r	   )r3   rU   rV   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   r7   r8   r6   )r8   r6   rs   r  ry   rz   )r6   r  )r6   r  rh   Fr  r  r   )r   r   r   r7   r@   r8   r:   r;   r
   ri   r?   r=   r  )r3   r2   r  rV   rG   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   rI   r   r   rJ   rv   r   )lev1lev2lev3lev4r6   r  r  r  r   r   r   r   r   r  r   r  )r   r   rI   rI   )r   rI   r   rI   rh   )r  r  r6   r6   ry   )
r   r   r/   rc  r   r
   r   r:   r;   r?   )r3   rU   r7   r8   rV   rG   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  h  s   $r  ) r   r   r   	itertoolsr   Znumpyr/   r  Zpandasr   r   r   r   r	   r
   r   r   r   Zpandas._testingZ_testingr:   Zpandas.api.typesr   r}   Zpandas.core.reshape.pivotr   Zfixturer   r|   r    r!   r  r   r   r   r   <module>   s<   (

.
                R