a
    j=icA                    @   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   p/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zejdd d!d"gfd g d#fd$g d#fgd%d& Zd'd( Zd)d* Zd+d, Zejd-d.d/gd0d1 Zejd-d.d/gd2d3 Zejd4ejd-d.d/gd5d6 Zd7d8 Zejd-d.d/gd9d: Zd;d< Zejd=d>d?ge !d>d?ge"d>d?ge#d>d?ggejd-d.d/gd@dA Z$ejd=dBd>ge !dBd>ge"dBd>ge#dBd>ggejd-d.d/gdCdD Z%dEdF Z&ejj'dGdHejd-d.d/gdIdJ Z(ejd-d.d/gdKdL Z)dMdNgdOgdPfdQdRZ*dSdT Z+dUdV Z,ejdWdMe j-g dXg dYge#g dZdMd[fdMdNgd\g d]g d^ge.j/g d_dMdNgd`fgdadb Z0dcdd Z1dedf Z2ejdgg dhdidj Z3dkdl Z4dmdn Z5dodp Z6dqdr Z7dsdt Z8dudv Z9dwdx Z:dydz Z;d{d| Z<ejd}d~dddddggdd Z=dd Z>dd Z?dd Z@dd ZAejdeBdddd ZCejdeBdddd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOejdd\e jPfde j-fde jQfd\dge jPe j-gfd\dge jPe jQgfddge jQe j-gfgdd ZRejjSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\ejdd.d/gddń Z]ddǄ Z^dS )TestPivotTablec              	   C   s@   t g dg dg dtjdtjdtjdd| _d S )Nfoor%   r%   r%   barr&   r&   r&   r%   r%   r%   oner(   r(   twor(   r(   r(   r)   r)   r)   r(   )dullr*   shinyr*   r*   r+   r+   r*   r+   r+   r+      )ABCDEF)r   nprandomrandndataselfr   r   r   setup_method*   s    


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sJ n|jj|d ksJ t|dkr|j	j|ksJ n|j	j|d ksJ | j
||g d tj }t|| d S )	Nr-   r.   r/   r0   )valuesindexcolumnsobserved)r:   r;   r=   r   r   )r   r6   tmassert_frame_equallenr;   namestuplenamer<   groupbyaggr3   meanunstack)r8   r=   r;   r<   tabletable2expectedr   r   r   test_pivot_tableZ   s$    "zTestPivotTable.test_pivot_tablec                 C   s   t tdtdg d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fghijr      r   r      col1col2col3rP   rR   rQ   r   )r;   r:   r<   aggfunc
fill_valuecategory)r;   r:   r<   rS   rT   r=   )r   listr   r3   sumr;   astyper<   rP   rQ   r>   r?   )r8   r=   dfrJ   resultr   r   r   +test_pivot_table_categorical_observed_equalv   s&    	z:TestPivotTable.test_pivot_table_categorical_observed_equalc                 C   s   t g dg dg dd}d}tjt|d2 |jdtjd}|jdtjd	j}W d    n1 sf0    Y  t|| |jdd
did}|jdd
did	j}t|| d S )Nabcxyzr   rM   r   )rowscolsr:   !The default value of numeric_onlymatchrf   )r<   rS   r;   rS   r:   rF   )	r   r>   assert_produces_warningFutureWarningr   r3   rW   Tr?   )r8   rY   msgrsZxpr   r   r   test_pivot_table_nocols   s    0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g dddgd}t|j| t|j| d S )Ni`  i iP  i0u  )r   r   rM   r   r-   r.   r/   i[ i] i\ i^ r]   r^   r_   di i  i@B )amountcustomermonthr   quantityru   rt   rs   r   F)r   ))r-   r]   )r-   r^   )r-   r_   )r-   rq   )r.   r]   )r.   r^   )r.   r_   )r.   rq   )r/   r]   )r/   r^   )r/   r_   )r/   rq   rA   )r   r   r   from_tuplesr>   assert_index_equalr<   r;   )r8   rY   Zpv_colZpv_indmr   r   r   test_pivot_table_dropna   s(    	z&TestPivotTable.test_pivot_table_dropnac                 C   s   t g dg ddd}t g dg ddd}t||g dd}t|d	d
dgdd}tj||gd
dgd}td	g di|d}t|| d S )Nr]   r]   r^   r^   )r]   r^   rc   T
categoriesordered)r_   rq   r_   rq   )r_   rq   rb   r   rM   r   r   )r-   r.   r:   r:   r-   r.   )r:   r;   r   rv   r;   )r   r   r   r   r   r>   r?   )r8   Zcat1cat2rY   rZ   Z	exp_indexrJ   r   r   r   test_pivot_table_categorical   s    z+TestPivotTable.test_pivot_table_categoricalc                 C   s   g d}t g dg dtddd}|d t|dd	|d< |jd
dd|d}tg ddd}|t|dd	}tg dd
d}t g dg dg dg||d}|s|jt|dd}t	|| d S )N)r]   r^   r_   rq   )	r]   r]   r]   r^   r^   r^   r_   r_   r_   )	r   rM   r   r   rM   r   r   rM   r   r   	   r-   r.   r/   r-   Fr~   r.   r/   )r;   r<   r:   r   r\   rC   rd   )r   r      )r   r      )rM   rN      r;   r<   r<   float)
r   rangerX   CDTr   r   Zreindexr   r>   r?   )r8   r   r}   rY   rZ   expected_columnsexpected_indexrJ   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g d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|| d S )NlowhighTr|   )              ?       @      @      @r-   r.   r-   r.   r;   r:   r   r   r   r   r   r   r   )	r   r   r3   nanr   r
   
from_codesr>   r?   r8   r   rY   rZ   rJ   r   r   r   %test_pivot_with_non_observable_dropna   s(    

z4TestPivotTable.test_pivot_with_non_observable_dropnac                 C   s   t tg dg dddtdd}|jdd|d	}t dg d
ittjg dg dddddd}|sz|d t|d< t	|| d S )N)r    r   r   r   r   )r   r   r    Tr|   rN   r   r-   r.   r   )rM   r   r   )r   r   rM   r   r   )
r   r   r   r   r
   r   rX   r   r>   r?   r   r   r   r   /test_pivot_with_non_observable_dropna_multi_cat	  s,    
	z>TestPivotTable.test_pivot_with_non_observable_dropna_multi_catc                 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   r   r   )r   r   r
   uniquerX   r   r>   r?   )r8   r"   r   rY   rZ   rJ   r   r   r   test_pivot_with_interval_index%  s    
z-TestPivotTable.test_pivot_with_interval_indexc                 C   s   t jg dg d}ttjdddtjdg dt|dd	jd
dd}t	|dddddd}|d }t
g dtt ddt dddgdddtjd}t|| d S )Nr   r   r   r   r   r   rM   rM   r   r   dtyper]   r^   r]   r^   Tr   F)Z	ascendingr   r/   r.   r-   rW   )r;   r<   r:   rS   marginsAll)r   r   
   r   rM   r   )r;   rC   r   )r   r   r   r   r3   arangeZintpr   Zsort_valuesr   r   r
   ZIntervalr>   assert_series_equal)r8   Zordered_catrY   Z	pivot_tabrZ   rJ   r   r   r   &test_pivot_with_interval_index_margins.  s(    
 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 )Nr0   r   r-   r/   )r6   r   r-   r/   r>   r?   r8   rZ   rJ   r   r   r   test_pass_arrayH  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 )Nr0   c                 S   s   | d S )NrN   r   ra   r   r   r   <lambda>N      z3TestPivotTable.test_pass_function.<locals>.<lambda>r   rN   r/   )r6   r   r/   r;   r>   r?   r   r   r   r   test_pass_functionM  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   r6   rD   rE   r3   rF   rG   r>   r?   )r8   r;   r<   rH   rJ   r   r   r   test_pivot_table_multipleR  s
    z(TestPivotTable.test_pivot_table_multiplec                 C   s   t g dg dg dd}|jd dks.J t|ddgdgd	tjd
}|j}ttdgd ttdddd}t	
|| t g dg dg dd}|jd dksJ 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   r   r   r   )r]   vir   int64r]   r   r   )r:   r;   r<   rT   rS   rM   abr   r   )      ?      @      @      @float64)r   dtypesr   r3   rW   r   r   r
   rV   r>   r   rF   )r8   frc   rZ   rJ   r   r   r   test_pivot_dtypesY  s4    $$z TestPivotTable.test_pivot_dtypeszcolumns,valuesbool1float1float2)r   r   r   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sfJ d S )NrN   r   r   rM   r   )r   r   r   r   r;   r;   r<   r:   c                 S   s   i | ]}|t d qS )r   )r3   r   ).0colr   r   r   
<dictcomp>  r   z=TestPivotTable.test_pivot_preserve_dtypes.<locals>.<dictcomp>)r3   r   r   r   reset_indexr   dictr   )r8   r<   r:   r   rY   Zdf_resrZ   rJ   r   r   r   test_pivot_preserve_dtypes}  s    

z)TestPivotTable.test_pivot_preserve_dtypesc                 C   s6  t g d}tdg d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g d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 )N)
2011-01-01z
2011-02-01
2011-01-02r   r   r-   rL   r   r   )r-   r   )r-   rM   r   r   r   r   rM   r   r0   rN   )freqperiods)r-   dtr   M)keyr   z
2011-01-31      
@r   r   z
2011-12-31)r   DatetimeIndexr   r   r;   rt   dayr   rw   r3   r   r>   r?   r   r	   	TimestamprA   )r8   idxrY   resZexp_columnsexpr   r   r   test_pivot_no_values  s4     
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 )Nr0   r1   r-   r.   r/   r   )r:   r;   r<   rT   r2   r   axis)r;   r<   rT   )r   r6   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 )Nr0   r1   r-   r.   r/   r:   r;   r<   rS   r   r6   funcr7   r   r   r     s   z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>rF   stdr   )keysr   c                    s   t  jddgddgd| ddS )Nr0   r1   r-   r.   r/   T)r:   r;   r<   rS   r   r   r   r7   r   r   r     s   )r3   rF   r   r   r>   r?   )r8   r   rZ   ZmeansZstdsrJ   r   r7   r   test_pivot_multi_functions  s    



z)TestPivotTable.test_pivot_multi_functionsmethodTFc                 C   s  t j}tdd|dgg dg dd}|rftt  |jddd	d
}W d    q1 sZ0    Y  n<tt" tj|ddd	d
}W d    n1 s0    Y  t||d|gd|||g|d||g|||dggt|dddgddtg dddd}t	|| t	|jddd	d|j
 d S )NZR1ZR2ZR4)C1C2ZC3ZC4)r            r\   r]   r^   r_   r<   r:   r   r   r   r   r   r   r   )r3   r   r   r>   rk   rl   pivotr   r
   r?   rm   )r8   r   r   rY   rZ   rJ   r   r   r   test_pivot_index_with_nan  s.    
00




z(TestPivotTable.test_pivot_index_with_nanc                 C   s  t tdddddtd d}|d td |d	< tj |jd
< |jd< tj |jd< |jd< |rz|jdd	dd}ntj|dd	dd}|	 j
 t|ksJ | D ]*\}}|j|d |d	 f |d ksJ q|r|jd	ddd}ntj|d	ddd}t||j d S )Nz
2014-02-01r   r0   )r   r   d   )r]   r_   r]   z
2014-02-02r^   )r   r]   )r   r]   r   r^   )r   r^   r_   r   )r   r   r3   r   r   r   r   locr   Znotnar:   rW   r@   Ziterrowsr>   r?   rm   )r8   r   rY   pv_rowrZ   r   r   r   test_pivot_index_with_nan_dates  s$    $z.TestPivotTable.test_pivot_index_with_nan_datesz1ignore: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g d}tjddgd ddd}t	||g}t g dg dgtjddgddd|d}|r4|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   r   r   rM     r   r   r   )dt1dt2data1data2r   c                 S   s   t j| ddS N
US/Pacifictzr   r   rq   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   r   r   z2014/01/01 09:00z2014/01/02 09:00r  )rC   r  r   rM   r   rM   r   r   r   r   z2013/01/01 09:00z2013/01/02 09:00r   r   r   r   r   )r   r   r3   r   applyr
   r   r   r   r   r   r>   r?   r8   r   rY   exp_col1exp_col2exp_colrJ   r   r   r   r   test_pivot_with_tz  s\    



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   j  r   z8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>r  r   r   z2016-08-12 00:00:00z2016-08-25 00:00:00r   )r   r   r   	set_indexr   r  mapr   r3   minr
   r   r>   r?   )r8   rY   ZminsrZ   rJ   r   r   r   test_pivot_tz_in_valuesN  sR    z&TestPivotTable.test_pivot_tz_in_valuesc              	   C   sv  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g d}tjddgd ddd}t||g}t g dg d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}|rT|j	dddd}ntj	|dddd}t
|| d S )Nz
2013-01-01r0   z
2013-01-02z2013-01r   z2013-02r   r   r   )p1p2r   r   r  rM   r  )rC   r   r  r  r  r   r   r   r   r   r   )r   r   Periodr3   r   r
   ZPeriodIndexr   r   r   r>   r?   r
  r   r   r   test_pivot_periods  sH    







z!TestPivotTable.test_pivot_periodsc                 C   s   t g dtdtdtdtdgdd}t dtg dddttdtdd	gd
dd}|jdd
ddd}t|| d S )Nr   Z2019Q1Z2019Q2r   )r]   r^   ra   r   rM   r   r]   r   r   r^   )r6   r;   r<   ra   T)r;   r<   r:   r   )r   r   r  r
   r   r>   r?   )r8   rY   rJ   rZ   r   r   r   test_pivot_periods_with_margins  s"    z.TestPivotTable.test_pivot_periods_with_marginsr:   bazzooc           	      C   s   t g dg dg dg dd}|r8|jdd|d}ntj|dd|d}g d	g d
g}tddgdd}tddgg dgg dg dgd dgd}t |||dd}t|| d S )Nr(   r(   r(   r)   r)   r)   r-   r.   r/   r-   r.   r/   r   rM   r   r   rN   r   ra   rb   rc   qwtr%   r&   r   r!  r%   r&   r   )r   rM   r   ra   rb   rc   )r   rN   r   r&  r'  r(  r(   r)   r6   rC   r   r!  r   )r   r   r   r   r   r   )r   r   rM   r   r   rM   levelscodesrA   objectr6   r;   r<   r   )r   r   r   r
   r   r>   r?   	r8   r:   r   rY   rZ   r6   r;   r<   rJ   r   r   r    test_pivot_with_list_like_values  s&    	z/TestPivotTable.test_pivot_with_list_like_valuesr&   c           	   	   C   s   t g dg dg dg dd}|r8|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g ddd}tddgddggg dg dgd dgd}t |||dd}t|| d S )Nr"  r#  r$  r%  r)  r!  r%   r   r-   r   r/   r   r.   rN   r   rM   r   )r&  r(  r'  ra   rb   rc   r*  r&   r   r(   r)   r   r   r   r   r   r+  r.  r/  )	r   r   r   r3   r   r
   r   r>   r?   r0  r   r   r   %test_pivot_with_list_like_values_nans  s2    	z4TestPivotTable.test_pivot_with_list_like_values_nansc                 C   s`   t g dg dg dd}d}tjt|d |jddd W d    n1 sR0    Y  d S )	Nr\   rd   rO   z0pivot\(\) missing 1 required argument: 'columns'rh   rP   rR   )r;   r:   )r   pytestraises	TypeErrorr   )r8   rY   rn   r   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 g dd}g dg dg dg dg dg dg}td	d
gddggg dg d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 ) Nr   r   rM   r   r   rN   r6   )r(   r-   r   ra   )r(   r.   rM   rb   )r(   r/   r   rc   )r)   r-   r   r&  )r)   r.   rN   r'  )r)   r/   r   r(  r&   r   firstr  r   r2  )r,  r-  r.  r/  )r&   r<  )r&   r  )r   r<  r   r   r   r(   r)   r   rM   rN   r   r   r   )r
   r   r   r   r   r   r>   r?   )r8   r   r;   r6   r<   rY   rZ   rJ   r   r   r   test_pivot_with_multiindex!  s>    z)TestPivotTable.test_pivot_with_multiindexc                 C   s|   t g dg dg dg dd}tjtdd8 |rH|jdd	d
d ntj|dd	d
d W d    n1 sn0    Y  d S )Nr"  r#  r$  r%  r)  z^\('bar', 'baz'\)$rh   r!  r%   )r&   r   r   )r   r4  r5  KeyErrorr   r   )r8   r   rY   r   r   r   test_pivot_with_tuple_of_valuesK  s    z.TestPivotTable.test_pivot_with_tuple_of_valuesr-   r.   r/   r   c                 C   s   |j |jd d |f }| j||  }tj||dd |j|ksJJ | }|j |df j	d d }| j||  }	tj||	dd |j|dfksJ |j |df|f }
| j|  }|
|ksJ d S )Nr   FZcheck_names )
r   r;   r6   rD   rF   r>   r   rC   Z
sort_indexZiloc)r8   rZ   Z
values_colr;   r<   margins_colZcol_marginsZexpected_col_marginsZindex_marginsZexpected_ix_marginsZgrand_total_marginsZexpected_total_marginsr   r   r   _check_output]  s    zTestPivotTable._check_outputc                 C   s   | j jdddgddtjd}| |d | j jdddgddtjdd}| j|ddd	 | j jddgddtjd
}|jjd D ]}| || | q|d S )Nr0   r-   r.   r/   T)r:   r;   r<   r   rS   ZTotals)r:   r;   r<   r   rS   margins_name)rB  r;   r<   r   rS   r   )r6   r   r3   rF   rC  r<   r,  )r8   rZ   rH   	value_colr   r   r   test_marginsp  s$    zTestPivotTable.test_marginsc                 C   s  dd | j jD | j _d}tjt|d( | j jddgdtjd}W d    n1 sV0    Y  |jD ](}|jd	|f }|| j |  ksfJ qftjt|d& | j jddgdd
d}W d    n1 s0    Y  dD ](}|jd	|f }|| j |  ksJ qd S )Nc                 S   s   g | ]}|d  qS )rM   r   )r   kr   r   r   
<listcomp>  r   z.TestPivotTable.test_no_col.<locals>.<listcomp>rg   rh   ZAABBT)r;   r   rS   r   rA  rF   )ZDDZEEZFF)	r6   r<   r>   rk   rl   r   r3   rF   r   )r8   rn   rH   rF  Ztotalsitemr   r   r   test_no_col  s     $

$zTestPivotTable.test_no_colz*columns, aggfunc, values, expected_columns)      @rN  皙@rO  )       @rP  皙@rQ  )r&   r   r%   r   r   rW   )r         rN   r   r,   )          r,   r,   rS  ))r&   r(   )r&   r)   )r&   r   )r%   r(   )r%   r)   )r%   r   rv   c           	      C   s   t g dg dg dg dg dd}d}tjt|d  |j|d	|d
}W d    n1 s`0    Y  t |tddg|d}t|| d S )N	r%   r%   r%   r%   r%   r&   r&   r&   r&   	r(   r(   r(   r)   r)   r(   r(   r)   r)   	smalllarger[  rZ  rZ  r[  rZ  rZ  r[  	r   rM   rM   r   r   r   rN   r   r   	rM   r   rN   rN   r   r   r   r   r   r-   r.   r/   r0   r1   rg   rh   T)r<   r   rS   r0   r1   r   )r   r>   rk   rl   r   r
   r?   )	r8   r<   rS   r:   r   rY   rn   rZ   rJ   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|g d< ttddgddgdg }t	j
|d	d
}tg dg dd|djddd}|d |d  |d< |jdddgddtjdd}t|| d S )Nr   i8)r0   r1   r2   r&   r%   r(   r)   rK  r   rv   )      r   r   -   )!   r   $   3   x   r*   r+   r   r/   r   r   r*   r+   r   r0   r-   r.   Tr   r:   r;   r<   r   rS   rT   )r6   copyr3   r   r@   r   rX   rV   r   r   rw   r   rename_axisr   rW   r>   r?   )r8   rY   mi_valmirJ   rZ   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g dg d	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)   rK  r   rv   )r   r   rM   r   rN   )rM   r   rM   rM   r   rh  r   r/   r   r   r*   r+   r   r0   r-   r.   Tr   ri  )rV   r   r   rw   r   rk  r6   r   r@   r>   r?   )r8   rl  rm  rJ   rZ   r   r   r   test_margins_dtype_len  s"    	z%TestPivotTable.test_margins_dtype_lenrf   ))r   rM   )r]   r^   r   )r]   r   c                 C   sn   t |d g d|d g ddg di}|jd|d}t g dgtjg d|dtdgd	}t|| d S )
Nr   rd   r   r   )r   rN   r   )r:   r<   ))r   r   )rM   rM   )r   r   rv   r<   r;   )r   r   r   rw   r
   r>   r?   )r8   rf   df2rZ   rJ   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
 |sVJ d S )Nz
2016-01-01r   zEurope/Amsterdam)r   r  r   r.   r/   F)r;   r   r   )	r   r   r3   r4   r5   r   r;   r,  equals)r8   ZdtirY   rZ   r   r   r   test_pivot_table_retains_tz  s     z*TestPivotTable.test_pivot_table_retains_tzc                    s   t j ttddgg dddg fddtdD d	g}t|}|jd
g ddgd}|jtd}|jdg ddgd}t	j
||dd d S )Nr%   r&   r   x1Zx2c                    s   g | ]} t | qS r   )r   )r   r   r  r   r   rI  #  r   z=TestPivotTable.test_pivot_integer_columns.<locals>.<listcomp>r   r   r   )r   r   r   rM   )r:   r;   r<   r   4)0132Fr@  )r   r  rV   r   r   r   r   renamestrr>   r?   )r8   r6   rY   rH   rq  rI   r   r  r   test_pivot_integer_columns  s    	z)TestPivotTable.test_pivot_integer_columnsc                 C   s   t g dd g dd dgd dgd  d tjdd}|jd	d
ddgd}|g dd	  }|ddjddd}t	
|| d S )N)r]   r]   r]   r]   r^   r^   r^   r^   rM   )r   r   r   r   r   r   r   r   r%   r   r&      )r]   r^   r_   valuer  r]   r^   r_   r   r\   r   all)r   how)r   r3   r4   r5   r   rD   rF   rG   r   r>   r?   )r8   r6   rH   groupedrJ   r   r   r   test_pivot_no_level_overlap/  s    


	z*TestPivotTable.test_pivot_no_level_overlapc           
   
   C   s0  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g d	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g ddd}	|	jjs,J d S )Ni'  r
   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  ra     r   r   )r
   r  r  rF   r;   r<   rS   )r3   r   r.  intr   arrayemptyr4   randintr@   r   r   yearrt   r   Z	lognormalr   r   r<   Zis_monotonic_increasing)
r8   nr   ZproductsitemsZiproductZdrdatesrY   pivotedr   r   r   test_pivot_columns_lexsortedA  sB    


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   rW   r0   r1   r-   r.   r  )r6   rD   rE   rG   r   r>   r?   )r8   r   rJ   rZ   r   r   r   test_pivot_complex_aggfuncu  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sBJ d S )Nr-   r.   T)r;   rS   r   r   )r6   r   r@   tolistrW   )r8   rZ   result_listr   r   r   test_margins_no_values_no_cols|  s
    
z-TestPivotTable.test_margins_no_values_no_colsc                 C   s:   | j g d jddgdtdd}|j g dks6J d S )Nr   r-   r.   r/   Tr;   r<   rS   r   r   r   r   r         &@r6   r   r@   r   r  r8   rZ   r   r   r   test_margins_no_values_two_rows  s    z.TestPivotTable.test_margins_no_values_two_rowsc                 C   s6   | j ddg jddtdd}|j g dks2J d S )Nr-   r.   Tr  )r         @r  r  r  r   r   r   &test_margins_no_values_one_row_one_col  s    z5TestPivotTable.test_margins_no_values_one_row_one_colc                 C   sL   g d| j d< | j g d jddgddgtdd}|j g d	ksHJ d S )
N)r]   r^   r_   rq   er   ghr   jrH  r0   r-   r.   r/   r0   r-   r.   r/   Tr  r  r  r  r   r   r   'test_margins_no_values_two_row_two_cols  s
    z6TestPivotTable.test_margins_no_values_two_row_two_colsmargin_namer%   r(   i  Nr]   r^   c              	   C   s   d| d}t jt|d, t| jdddgdgd|d	 W d    n1 sL0    Y  t jt|d, t| jddgddgd|d	 W d    n1 s0    Y  t jt|d* t| jddgdgd|d	 W d    n1 s0    Y  d S )
NzConflicting name "z3" in margins|margins_name argument must be a stringrh   r0   r-   r.   r/   T)r:   r;   r<   r   rD  )r4  r5  
ValueErrorr   r6   )r8   r  rn   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 g 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tdddgd	d
}t tjg d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 d    n1 sr0    Y  tjt|d, t|dtddddtjd W d    n1 s0    Y  |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 d    n1 sj0    Y  tjt|d, t|dtddd dtjd W d    n1 s0    Y  d S )"NA A A A A A A B$Carl Mark Carl Carl Joe Joe Joe Carlr   r   rN   r   r   r   r   r   r   r   r   rM   ra  )BranchBuyerr  Dater  )r   rU  r   r   r   r   r  r-   r   zCarl Joe Markr   r  r  r;   r<   r:   rS   r   rU  r   Z6MSZCarlr   r   z#'The grouper name foo is not found'rh   r%   )r   levelzThe level foo is not valid)r   splitr   r  r3   r  r   r   r   r;   rC   r<   r   r	   rW   r>   r?   rm   r   rX   r   r4  r5  r>  r  )r8   Zusing_array_managerrY   rJ   rZ   rn   r   r   r   test_pivot_timegrouper  s   







 


&
&	



&
z%TestPivotTable.test_pivot_timegrouperc                 C   s~  t d d g 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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}d#|j_t|tdddtdddgd#gdtjd}t|| t|d#gtdddtdddgdtjd}t||j d S )$Nr  r  r  r   r,   r   rR  r   r   rN   r   r   rM   ra  rT  r   r   r      )r  r  r  r  PayDayr   r  r  r  r  r  r   r   r  r   r   rv   r-   r.   r  )r   r  r   r   r	   r3   rW   r  r   r   r   r   r;   rC   r<   r>   r?   rm   r   rw   )r8   rY   rZ   rJ   Ztuplesr   r   r   r   test_pivot_timegrouper_double[  s    





	



(

&z,TestPivotTable.test_pivot_timegrouper_doublec                 C   s  g d}g d}t g d||tjdddddgd	 d
}|d dd |d< |d dd |d< tjg d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g d}tg dd }tjdd gd d!dd}
t|||
g}t tjg d"g d#g d$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:00r  r  r  2013-01-01 15:00:00r  r  2013-02-01 15:00:00r  r  r]   r]   r]   r^   r^   r^   r   r   r   r   rM   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  rC   r  r]   r^   r  r   r   r   rN   r   r   )rW   rW   rW   rW   rF   rF   rF   rF   )r  r  r  r  r  r  r  )r   r   r   rM   r   r   r   rM   )r   r   rM   r   r   r   rM   r   )rM   rN   r   rM   rM   rN   r   rM   r  r  )r   r3   r   r	  r   r   r
   r   r   r   r>   r?   r  rW   rF   )r8   dates1dates2rY   exp_idxr  r  r  rJ   rZ   Zexp_col3r   r   r   test_pivot_datetime_tz  sd    
	 

z%TestPivotTable.test_pivot_datetime_tzc              
   C   s(  g d}g d}t g d||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g d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g dddd}t	|| t||d jjj|d jj|d jj
gdd}tjg dddgd	 gddgd}t tjg dgdddg|d}t	|| t|tg d|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   r   r   rM   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   r]   r^   r   r   r   rN   )r   r   r   r   )r   r   r   r   r   r   rv   )r   r   r   r   rM   rN   r   )Xr  r  r  Yr  r  r  )r   r3   r   r	  r   r   r  r
   r>   r?   rt   r  r:   r   r   r  r   )r8   r  r  rY   rZ   r  rJ   r  r   r   r   test_pivot_dtaccessor!  st    
	*z$TestPivotTable.test_pivot_dtaccessorr   r   io  c                 C   s   t dddd}ttjt||d}tt||jj	|jj
d}|jd|_t|jj
}|||k }|jj	|_||  }tj||dd	 |j|ksJ d S )
N1/1/2000
12/31/2004r0   r   r   r   r   Fr@  )r   r   r3   r4   r5   r@   r   r   r;   r  Z	dayofyearr<   	droplevelZasarrayr   r>   r   rC   )r8   r   rngr  annualZdoysubsetrZ   r   r   r   
test_dailyt  s    
zTestPivotTable.test_dailyrR  c                 C   s   t dddd}ttjt||d}tt||jj	|jj
d}|jd|_|jj
}|||k }|jj	|_||  }tj||dd	 |j|ksJ d S )
Nr  r  r   r   r   r   r   Fr@  )r   r   r3   r4   r5   r@   r   r   r;   r  rt   r<   r  r   r>   r   rC   )r8   r   r  r  r  rt   r  rZ   r   r   r   test_monthly  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 )NrW   rF   r  r-   )r;   r:   rS   c                 s   s   | ]
}|V  qd S r   r   )r   r  r   r   r   	<genexpr>  r   zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>)r   r6   rV   r   r>   r?   )r8   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 g dg dg d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|g dd}t |j||d}t	
|| d S )NZWeekly)baconcheeser  r  )r   r   g	@gffffff
@)r   r   rm   rm   )rL  costr   rL  r   T)r;   r<   r   rD  rS   r  r  r.  r   rC   )rF   r  r   )rF   r  rm   rF   r  )maxr  r   )r  r  rm   r  )NNr   rv   r   )r   r   r3   rF   r  r
   r   rw   r:   r>   r?   )r8   rD  ZcostsrH   ZixZtupsrf   rJ   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g dg dg d	g}tg d
dd|_	tg d
dd|_
|jddd|dd}t|| d S )N1GH#17035 (np.mean of ints is casted back to ints)r8  r   r   rM   r`   r   r   r   rN   r   rN  r   r   r   r   r   r   rb   r   rc   ra   Tr   r   )node
add_markerr4  markxfailr   r3   r   r
   r;   r<   r   r>   r?   r8   r=   r   rY   rJ   rH   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g dg dg d	g}tg d
dd|_	tg d
dd|_
|jd|_|jd|_|jddd|dd}t|| d S )Nr  r8  r   r   rM   r`   r  r  r  r  rb   r   rc   rU   ra   Tr  )r  r  r4  r  r  r   r3   r   r
   r;   r<   rb   rX   rc   r   r>   r?   r  r   r   r   !test_categorical_margins_category  s     $z0TestPivotTable.test_categorical_margins_categoryc                 C   sl   t g dg dg dg dd}t|ddd}t g d	g d
g ddtg dddd}t|| d S )N)rM   r   r   r   )r   r   rN   r   )r   r   r   r   )r  r  r  r  r  r0   T)r;   r   )r   r   rN   )r   g      @r   )rM   rN   r   r   )r  r  r   r   r   )r   r   r
   r>   r?   r8   rY   rZ   rJ   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.   r|   r   r   )InColValr  r  r  )r;   r<   r:   r=   )r~   rC   r   r   )r6   r<   r   )r<   r:   r=   r   )r6   r<   r;   )r3   r   r   r   r   r   r   CategoricalIndexr
   r;   r>   r?   )	r8   r=   r~   r   r   rY   rZ   Zexpected_colsrJ   r   r   r   test_pivot_with_categorical   s.    z*TestPivotTable.test_pivot_with_categoricalc                 C   s   t g dg dg dd}|d d|d< |jddd|d	d
}tjg dg d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 )N)r-   r.   r/   r/   r{   r   )r   r   Vr   rU   r  r   count)r;   r<   r   rS   r   Fr}   r~   rC   r]   r^   r   r   r   rM   r   r   )r   rX   r   r   r  r
   r3   r  r   r>   r?   )r8   r=   rY   rZ   r   r   expected_datarJ   r   r   r   test_categorical_aggfunc#  s     
"z'TestPivotTable.test_categorical_aggfuncc           	      C   s   t g dg dg dd}g d}|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 )N)r   rg     )Januaryr  r  )r   r   r   )Salesr  r  )r  FebruaryMarchAprilMayJuneJulyAugust	SeptemberOctoberNovemberDecemberr  rU   r  r  rW   )r:   r;   r<   r=   rS   r   r   r   )rC   r   Fr  i@  rg  r   r,   r   r  )r   rX   r   Zset_categoriesr   r
   r   r  r   r>   r?   )	r8   r=   rY   monthsrZ   r   r   r  rJ   r   r   r   %test_categorical_pivot_index_ordering7  s4    z4TestPivotTable.test_categorical_pivot_index_orderingc                 C   s.  t g dg dg dd}|jdddgtjd}tjg dg dgddgd	}t g d|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	g dddt	g dddd
}t|| |jddtjgd}tdgdgg}t g dt	g ddd|d
}t|| d S )N)r   r   rN   )r/   r0   r1   )r   r   r   rO   rP   rR   rQ   rj   rv   r   r  r   r   rN   r   rW   )
r   r   r3   rW   r   r   r>   r?   NaNr
   )r8   rY   rZ   ry   rJ   r   r   r   test_pivot_table_not_seriesc  s     &z*TestPivotTable.test_pivot_table_not_seriesc                 C   sX   d}t dg di}t|dgtd|d}tddd|gd	dd
}t |d}t|| d S )Nu   Δοκιμήr%   rd   T)r;   rS   r   rD  r   rM   r   r.  r  r   )r   r   r@   r
   r>   r?   )r8   greekframerH   r;   rJ   r   r   r   test_pivot_margins_name_unicode  s    
z.TestPivotTable.test_pivot_margins_name_unicodec                 C   s  t g dg d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g dg dg dgg d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-   r.   rW   r  r/   r(   r)   r   r   r+  r   rR  )r&   r%   r   r   ))r/   r(   )r/   r)   r   rF   r   )r   r   r   r   r2  )NNr.         @r   r  g@))rF   r/   r(   )rF   r/   r)   )rW   r/   r(   )rW   r/   r)   )r   r   r   r   rk  r>   r?   )r8   r6   rZ   rm  rJ   r   r   r   test_pivot_string_as_func  sD      	z(TestPivotTable.test_pivot_string_as_funcz
f, f_numpyrF   r   c                 C   sf   d}t jt|d4 t| jdd|d}t| jdd|d}W d    n1 sL0    Y  t || d S )Nrg   rh   r-   r.   r  )r>   rk   rl   r   r6   r?   )r8   r   Zf_numpyrn   rZ   rJ   r   r   r   test_pivot_string_func_vs_func  s
    0z-TestPivotTable.test_pivot_string_func_vs_funcc              
   C   s   G dd dt j}| }|t d| ttdtddd}d}tjt	|dP t
jtd	d" |jd
dddd W d    n1 s0    Y  W d    n1 s0    Y  W d    n1 s0    Y  d S )Nc                       s"   e Zd Zdd fddZ  ZS )zSTestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstackerN)returnc                    s   t  j|i | tdd S )NDon't compute final result.)super__init__	Exception)r8   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 generaterh   r  r  r  r  r  )reshape_libr  contextsetattrr   r3   r   r>   rk   r   r4  r5  r  r   )r8   Zmonkeypatchr  ry   rY   rn   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 g dg dg d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g dddggd dgd}t |ddg|d}	|r|	jdd}	t||	 d S )N)applepeachr$  )r   r   rM   )r   r   r   )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   )rW   r   r   r   r   ret_sum  s    z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumc                 S   s   t jS r   )r3   r   r   r   r   r   ret_none  s    z@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_noner&  r<   rS   r   r   r   rR  r   )r*  r+  r)  r$  r%  rv   r'  r(  r   r<   r   )	r   r   r3   r   r   Zfrom_productr   r>   r?   )
r8   r   rY   r)  r*  r+  rZ   r6   r   rJ   r   r   r   test_pivot_table_aggfunc_dropna  s*    (z.TestPivotTable.test_pivot_table_aggfunc_dropnac                 C   s   t g d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 )N)r(   r)   r(   r   rM   r   )r-   ra   rb   r-   r,  r   r(   r)   r   ra   rb   r   r<   r   )	r   r3   r   r   rF   r
   r   r>   r?   )r8   r   rY   rZ   r6   r   rJ   r   r   r   &test_pivot_table_aggfunc_scalar_dropna  s     z5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnac                 C   sb   t g dg dg dg dd}|jdddtjd	}t tg d
ddd}d|j_t|| d S )N)rM   rM   r   r   rM   )rN   r   r   r   r   )pr&  r&  r/  r&  )NNNNN)r-   idr/   r0   r-   r0   r0  r  r   r  r   )	r   r   r3   r'  r
   r<   rC   r>   r?   r  r   r   r   test_pivot_table_empty_aggfunc(  s    z-TestPivotTable.test_pivot_table_empty_aggfuncc                 C   sh   dd }t g dg dg dd}tjtdd" |jdd	d
|d W d    n1 sZ0    Y  d S )Nc                 S   s
   t | S r   )r3   rF   )Zarrr   r   r   rE   9  s    z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.aggr   r2  )r   r   r  (   )r  r  ZZ
notpresentrh   r  r  )rS   )r   r4  r5  r>  r   )r8   rE   r%   r   r   r   !test_pivot_table_no_column_raises7  s    z0TestPivotTable.test_pivot_table_no_column_raisesc                 C   s   t g dg dg dg dg dd}t|ddgd	d
gtjtttjgdd}tg d}tjg dd	d
gd}tg dg dg dg dg}t |||d}|d 	tj
|d< |d 	tj
|d< t|| d S )NrW  rX  rY  r\  r]  r^  r0   r1   r-   r/   r  )r:   r;   rS   ))r0   rF   r1   r  )r1   rF   r1   r  ))r&   r[  )r&   rZ  )r%   r[  )r%   rZ  rv   )rN        "@g      @      @)rN  r7  g      !@rP  )r   r  r   r   )g["8@r8  g.UUU@r   rp  r6  r5  )r   r   r3   rF   r  r  r   rw   r  rX   r   r>   r?   )r8   rY   rH   rf   r;   valsrJ   r   r   r   0test_pivot_table_multiindex_columns_doctest_case@  s@    z?TestPivotTable.test_pivot_table_multiindex_columns_doctest_casec                 C   s   t g dg dg dg d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g dg dgddgdd}t|| d S )N)d1Zd4Zd3r\   )   rb  "   )2018r>  2019)r]   r   numr  r]   r   r  r@  rW   F)r;   r<   r:   rS   sortr<  rb  r=  r>  r?  r   rv   rp  )	r   r   r3   r   r
   r   r   r>   r?   r  r   r   r   test_pivot_table_sort_falset  s$    z*TestPivotTable.test_pivot_table_sort_falsec                 C   sz   t ddgddgddgddgd	}|jd
dgddgdd}t ddgddggddgtjddgd
dgdd}t|| d S )NJohnMichaelFooBar      /   rd  )	firstnamelastnameheightagerK  rJ  rL  rM  F)r;   r:   rA  )rE  rC  )rF  rD  rv   rp  )r   r   r   rw   r>   r?   r  r   r   r   0test_pivot_table_sort_false_with_multiple_values  s&    z?TestPivotTable.test_pivot_table_sort_false_with_multiple_valuesc                 C   s   t g dg dg dg dg}g d|_|jdddd	d
dd}t g dg dg dg}g d|_g d|_d|j_d|j_t|| d S )N)r]   ra   r   )r]   rb   rM   )r^   rb   r   )r^   rc   r   )r   r   r  r   r   r  rW   r   T)r;   r<   r:   rS   rT   r   )r   rM   r   r   )r   r   r   r   )r   rN   r   r   )ra   rb   rc   r   )r]   r^   r   )r   r<   r   r;   rC   r>   r?   r  r   r   r   1test_pivot_table_with_margins_and_numeric_columns  s     


z@TestPivotTable.test_pivot_table_with_margins_and_numeric_columnsr   c                 C   sh   t ddtddgddd}|jdd	d
d|d}t dggtdgddtdgd	ddd}t|| d S )Nr]   r^   r   r2  ZInt64r   )ra   rb   rM  ra   rb   rM  rF   )r;   r<   r:   rS   r   r  r   ZFloat64)r;   r<   r   )r   r   r   r
   r>   r?   r   r   r   r   test_pivot_ea_dtype_dropna  s    
z)TestPivotTable.test_pivot_ea_dtype_dropnac              
   C   s   t dddgtdddgd}td & |jdd	gd
ddd}W d    n1 sV0    Y  t ddgddgddggttg dddttdtddgt	d	dgtj
ddgd d
gdd}t|| d S )Nr-   r   rM   z
2019-12-31g      $@r,   )r]   r^   r   salesr^   r   r]   TrW   rE  r  g      5@r  r   rA  r  )rQ  r-   )rQ  r   rv   r   )r   r   r   r>   rk   r   r   r   r
   r.  rw   r?   r  r   r   r   !test_pivot_table_datetime_warning  s6    $
z0TestPivotTable.test_pivot_table_datetime_warning)_r  r  r  r9   rK   r[   rp   rz   r   r   r   r   r   r   r   r   r   r   r4  r  Zparametrizer   r   r   r   r   r   filterwarningsr  r  r  r  r3   r  r   r
   r1  r3  r7  r  r=  r?  rC  rG  rM  rF   r   rw   r_  rn  ro  rr  rt  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  rW   r   r  Zslowr#  r-  r.  r1  r4  r:  rB  rN  rO  rP  rR  r   r   r   r   r#   )   s$  0%	$



!	


;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   g dg dg d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szJ |jjdksJ |jddd}|jjdksJ |jjdksJ d S )Nr-   r.   r/   r/   r.   r-   OnerW  rW  TworX  rX  r   r   r   r   r   r   r   r;   r<   r:   r   r   r   r   rW  rX  r   Nr<   )r   r   r;   rC   r<   r>   r?   rA   )r8   r6   r
  r  rJ   r   r   r   
test_pivot  s$    

zTestPivot.test_pivotc                 C   s^   t g dg dg dd}tjtdd  |jddd	d
 W d    n1 sP0    Y  d S )N)r&   r&   r%   r%   r%   )r(   r)   r(   r(   r)   )r   r   r   r   r   r\   zduplicate entriesrh   r]   r^   r_   r   )r   r4  r5  r  r   )r8   r6   r   r   r   test_pivot_duplicates  s    zTestPivot.test_pivot_duplicatesc                 C   s8   t g dd}|jdddd}t  }tj||dd d S )	Nr\   r   r]   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-   rx  A1)r.   rz  ZB2r;  r   r   rM   r   r-   r.   r   )r   r   reprr>   rx   r<   r
   )r8   rY   rZ   r   r   r   test_pivot_integer_bug	  s    z TestPivot.test_pivot_integer_bugc                 C   s   g dg dg d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sJ |jj
dksJ |jd|_|jddd}d|j_t|| d S )NrU  rV  rY  r   r;   r<   r:   r   r   r   r   r   rZ  r   r   )r:   rW  )r:   rX  rv   Fr@  r[  r   )r   r  r   r;   rC   r<   r>   r?   r   rw   rA   r  )r8   r6   r
  rZ   rJ   r   r   r   test_pivot_index_none	  s2    

zTestPivot.test_pivot_index_nonec              
   C   s   t g dg dg dg dg dd}ddg}d	g}|j||d d
}t tg ddtjdtjgg d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sJ |d	gksJ d S )N)r   r   r   rM   rM   rM   )r   r   rM   r   r   rM   )r   rM   r   rM   r   rM   r$  r:  )lev1lev2lev3lev4r:   rc  rd  re  r   )r   r   r   r   r   r   )r  r   r   r   r8  r  r   )r   rM   r   rM   rv   )rf  rf  r:   r:   r   )	r   r   r3   r  r   r   r   r>   r?   )r8   rY   r;   r<   rZ   rJ   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^  ra  rb  rg  r   r   r   r   rT    s   $rT  )%r   r   r   	itertoolsr   numpyr3   r4  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#   rT  r   r   r   r   <module>   sB   (

.
                 I