o
    d1W                    @   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   d/var/www/html/visualizacion-main/env/lib/python3.10/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ej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d-d.d/gd4d5 Zd6d7 Zejd-d.d/gd8d9 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?d@ Z$ejd<dAd=ge !dAd=ge"dAd=ge#dAd=ggejd-d.d/gdBdC Z%dDdE Z&ejj'dFdGejd-d.d/gdHdI Z(ejd-d.d/gdJdK Z)dLdMgdNgdOfdPdQZ*dRdS Z+dTdU Z,ejdVdLe j-g dWg dXge#g dYdLdZfdLdMgd[g d\g d]ge.j/g d^dLdMgd_fgd`da Z0dbdc Z1ddde Z2ejdfg dgdhdi Z3djdk Z4dldm Z5dndo Z6dpdq Z7drds Z8dtdu Z9dvdw Z:dxdy Z;dzd{ Z<ejd|d}d~ddddg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 ZVejdd.d/gdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\ddĄ Z]ejdd.d/gddǄ Z^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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)selfr   r   r   data*   s   


zTestPivotTable.datac                 C   s   ddg}d}t |d|||d}|j d|||d}t|| t |d||d t|dkr7|jjt|ks6J n
|jj|d ksAJ t|dkrP|jj|ksOJ n
|jj|d ksZJ |	||g d 
tj }t|| d S )	Nr.   r/   r0   r1   )valuesindexcolumnsobserved)r9   r:   r<   r   r   )r   tmassert_frame_equallenr:   namestuplenamer;   groupbyaggr4   meanunstack)r7   r<   r8   r:   r;   tabletable2expectedr   r   r   test_pivot_table[   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 )Nabcdefghijr      r   r      col1col2col3rQ   rS   rR   r   )r:   r9   r;   aggfunc
fill_valuecategory)r:   r9   r;   rT   rU   r<   )r   listr   r4   sumr:   astyper;   rQ   rR   r=   r>   )r7   r<   dfrI   resultr   r   r   +test_pivot_table_categorical_observed_equalw   s&   	z:TestPivotTable.test_pivot_table_categorical_observed_equalc                 C   s   t g dg dg d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zr   rN   r   )rowscolsr9   rg   )r;   rT   r:   rT   r9   rE   )r   r   r4   rX   Tr=   r>   )r7   rZ   rs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g dddgd}t|j| t|j| d S )Ni`  i iP  i0u  )r   r   rN   r   r.   r/   r0   i[ i] i\ i^ r^   r_   r`   di i  i@B )amountcustomermonthr   quantityrq   rp   ro   r   F)r   ))r.   r^   )r.   r_   )r.   r`   )r.   rm   )r/   r^   )r/   r_   )r/   r`   )r/   rm   )r0   r^   )r0   r_   )r0   r`   )r0   rm   r@   )r   r   r   from_tuplesr=   assert_index_equalr;   r:   )r7   rZ   pv_col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_   rd   T
categoriesordered)r`   rm   r`   rm   )r`   rm   rc   r   rN   r   r   )r.   r/   r9   r9   r.   r/   )r9   r:   r   rr   r:   )r   r   r   r   r   r=   r>   )r7   cat1cat2rZ   r[   	exp_indexrI   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`   rm   )	r^   r^   r^   r_   r_   r_   r`   r`   r`   )	r   rN   r   r   rN   r   r   rN   r   r   	   r.   r/   r0   r.   Fr|   r/   r0   )r:   r;   r9   r   r]   rB   re   )r   r      )r   r      )rN   rO      r:   r;   r;   float)
r   rangerY   CDTr   r   reindexr   r=   r>   )r7   r   r{   rZ   r[   expected_columnsexpected_indexrI   r   r   r   $test_pivot_table_dropna_categoricals   s(   z3TestPivotTable.test_pivot_table_dropna_categoricalsc                 C   s|   t ttjddddgddgdd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highTrz   )              ?       @      @      @r.   r/   r.   r/   r:   r9   r   r   r   r   r   r   r~   )	r   r   r4   nanr   r
   
from_codesr=   r>   r7   r   rZ   r[   rI   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}|s=|d t|d< t	|| d S )N)r!   r   r   r   r   )r   r   r!   Trz   rO   r   r.   r/   r   )rN   r   r   )r   r   rN   r   r~   )
r   r   r   r   r
   r   rY   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}|s$|t}t|| d S )Nr   r   r.   r/   r   r   r~   )r   r   r
   uniquerY   r   r=   r>   )r7   r#   r   rZ   r[   rI   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   rN   rN   r   r   dtyper^   r_   r^   r_   Tr   F)	ascendingr   r0   r/   r.   rX   r:   r;   r9   rT   marginsAll)r   r   
   r   rN   r   )r:   rB   r   )r   r   r   r   r4   arangeintpr   sort_valuesr   r   r
   Intervalr=   assert_series_equal)r7   ordered_catrZ   	pivot_tabr[   rI   r   r   r   &test_pivot_with_interval_index_margins,  s(   
 z5TestPivotTable.test_pivot_with_interval_index_marginsc                 C   s4   |j d|j|jd}|j dddd}t|| d S )Nr1   r   r.   r0   )r   r.   r0   r=   r>   r7   r8   r[   rI   r   r   r   test_pass_arrayF  s   zTestPivotTable.test_pass_arrayc                 C   s<   |j ddd |jd}|j d|jd dd}t|| d S )Nr1   c                 S   s   | d S )NrO   r   rb   r   r   r   <lambda>L  s    z3TestPivotTable.test_pass_function.<locals>.<lambda>r   rO   r0   )r   r0   r:   r=   r>   r   r   r   r   test_pass_functionK  s   z!TestPivotTable.test_pass_functionc                 C   sF   ddg}d}t |||d}|||g tj }t|| d S )Nr.   r/   r0   r   )r   rC   rD   r4   rE   rF   r=   r>   )r7   r8   r:   r;   rG   rI   r   r   r   test_pivot_table_multipleP  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sVJ 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   )r9   r:   r;   rU   rT   rN   abr   r~   )      ?      @      @      @float64)r   dtypesr   r4   rX   r   r   r
   rW   r=   r   rE   )r7   frd   r[   rI   r   r   r   test_pivot_dtypesW  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s3J d S )NrO   r   r   rN   r   )r   r   r   r   r:   r:   r;   r9   c                 S   s   i | ]}|t d qS )r   )r4   r   ).0colr   r   r   
<dictcomp>      z=TestPivotTable.test_pivot_preserve_dtypes.<locals>.<dictcomp>)r4   r   r   r   reset_indexr   dictr   )r7   r;   r9   r   rZ   df_resr[   rI   r   r   r   test_pivot_preserve_dtypesz  s   

z)TestPivotTable.test_pivot_preserve_dtypesc                 C   sf  t g d}tdg di|d}|j|jj|jjd}tddg}|j	|j
d tjdd	}td
dgdtjggtddgtjd|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tddgtjd|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.   rM   r~   r   )r.   r   )r.   rN   r   )levelr   r   r   rN   r   r   r1   rO   )freqperiods)r.   dtr   M)keyr   z
2011-01-31      
@r   r   z
2011-12-31)r   DatetimeIndexr   r   r:   rp   dayr   rs   
set_levelslevelsrY   r4   int32r   r
   r=   r>   r   r	   	Timestampr@   )r7   idxrZ   resexp_columnsexpr   r   r   test_pivot_no_values  sF   
z#TestPivotTable.test_pivot_no_valuesc                 C   sJ   t |ddgdddgdd}t |jdgd	d
dddgdd}t|| d S )Nr1   r2   r.   r/   r0   r   )r9   r:   r;   rU   r3   r   axis)r:   r;   rU   )r   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  ddgddgd| dS )Nr1   r2   r.   r/   r0   r9   r:   r;   rT   r   funcr8   r   r   r     s    z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>rE   stdr   )keysr   c                    s   t  ddgddgd| ddS )Nr1   r2   r.   r/   r0   T)r9   r:   r;   rT   r   r   r   r   r   r   r     s    )r4   rE   r   r   r=   r>   )r7   r8   r   r[   meansstdsrI   r   r   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}|r|jddd	d
}n	tj|ddd	d
}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 )NR1R2R4)C1C2C3C4)r            r]   r^   r_   r`   r   r  r   r  r  r   r   )	r4   r   r   pivotr   r
   r=   r>   ri   )r7   r   r   rZ   r[   rI   r   r   r   test_pivot_index_with_nan  s*   





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< |r=|jdd	dd}n	tj|dd	dd}|	 j
 t|ksSJ | D ]\}}|j|d |d	 f |d kslJ qW|rx|jd	ddd}n	tj|d	ddd}t||j d S )Nz
2014-02-01r   r1   )r   r   d   )r^   r`   r^   z
2014-02-02r_   )r   r^   )r   r^   r   r_   )r   r_   r`   r   )r   r   r4   r   r   r   r   locr  notnar9   rX   r?   iterrowsr=   r>   ri   )r7   r   rZ   pv_rowr[   r   r   r   test_pivot_index_with_nan_dates  s$   $z.TestPivotTable.test_pivot_index_with_nan_datesc                 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}|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   r   r   rN     r   r   r   )dt1dt2data1data2r  c                 S      t j| ddS N
US/Pacifictzr   r   rm   r   r   r   r   +      z3TestPivotTable.test_pivot_with_tz.<locals>.<lambda>r  c                 S   r  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  )rB   r  r   rN   r   rN   r   r   r   r   z2013/01/01 09:00z2013/01/02 09:00r  r   r   r  r   )r   r   r4   r   applyr
   r   r   r   r   r  r=   r>   r7   r   rZ   exp_col1exp_col2exp_colrI   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 )N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   m  s    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   r4   minr
   r   r=   r>   )r7   rZ   minsr[   rI   r   r   r   test_pivot_tz_in_valuesQ  sR   z&TestPivotTable.test_pivot_tz_in_valuesc              	   C   st  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}|rs|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-01r1   z
2013-01-02z2013-01r   z2013-02r   r   r   )p1p2r  r  r  rN   r6  )rB   r   r   r!  r5  r   r   r   r   r  r   )r   r   Periodr4   r   r
   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   2019Q12019Q2r   )r^   r_   rb   r   rN   r   r^   r   r   r_   )r8   r:   r;   rb   T)r:   r;   r9   r   )r   r   r7  r
   r   r=   r>   )r7   rZ   rI   r[   r   r   r   test_pivot_periods_with_margins  s"   z.TestPivotTable.test_pivot_periods_with_marginsr9   bazzooc           	      C   s   t g dg dg dg dd}|r|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/   r0   r.   r/   r0   r   rN   r   r   rO   r   rb   rc   rd   qwtr&   r'   r>  r?  r&   r'   r   )r   rN   r   rb   rc   rd   )r   rO   r   rD  rE  rF  r)   r*   r8   rB   r>  r?  r   )r   r   r   r   r   r   )r   r   rN   r   r   rN   r   codesr@   objectr8   r:   r;   r   )r   r  r   r
   r   r=   r>   	r7   r9   r   rZ   r[   r8   r:   r;   rI   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}|r|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@  rA  rB  rC  rG  r?  r&   r   r.   r   r0   r   r/   rO   r   rN   r   )rD  rF  rE  rb   rc   rd   rH  r'   r>  r)   r*   r   r   r   r   r   rI  rK  rL  )	r   r  r   r4   r   r
   r   r=   r>   rM  r   r   r   %test_pivot_with_list_like_values_nans  s2   	z4TestPivotTable.test_pivot_with_list_like_values_nansc                 C   sb   t g dg dg dd}d}tjt|d |jddd W d    d S 1 s*w   Y  d S )	Nr]   re   rP   z=pivot\(\) missing 1 required keyword-only argument: 'columns'matchrQ   rS   )r:   r9   r   pytestraises	TypeErrorr  )r7   rZ   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 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   rN   r   r   rO   r   )r)   r.   r   rb   )r)   r/   rN   rc   )r)   r0   r   rd   )r*   r.   r   rD  )r*   r/   rO   rE  )r*   r0   r   rF  r'   r>  firstr-  r   rO  )r   rJ  rK  rL  )r'   r\  )r'   r-  )r>  r\  r   r   r   r)   r*   r~   rN   rO   r   r   r   )r
   r   r   r  r   r   r=   r>   )r7   r   r:   r8   r;   rZ   r[   rI   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% |r$|jdd	d
d ntj|dd	d
d W d    d S W d    d S 1 s@w   Y  d S )Nr@  rA  rB  rC  rG  z^\('bar', 'baz'\)$rQ  r?  r&   )r'   r>  r   )r   rT  rU  KeyErrorr  r   )r7   r   rZ   r   r   r   test_pivot_with_tuple_of_valuesN  s   "z.TestPivotTable.test_pivot_with_tuple_of_valuesr.   r/   r0   r   c                 C   s   |j |jd d |f }|||  }tj||dd |j|ks$J | }|j |df jd d }	|||  }
tj|	|
dd |	j|dfksNJ |j |df|f }||  }||kscJ d S )Nr   Fcheck_names )	r  r:   rC   rE   r=   r   rB   
sort_indexiloc)r7   r[   
values_colr8   r:   r;   margins_colcol_marginsexpected_col_marginsindex_marginsexpected_ix_marginsgrand_total_marginsexpected_total_marginsr   r   r   _check_output`  s   	zTestPivotTable._check_outputc                 C   s   |j dddgddtjd}| |d| |j dddgddtjdd}| j|d|dd	 |j ddgddtjd
}|jjd D ]}| || || q=d S )Nr1   r.   r/   r0   T)r9   r:   r;   r   rT   Totals)r9   r:   r;   r   rT   margins_name)rf  r:   r;   r   rT   r   )r   r4   rE   rm  r;   r   )r7   r8   r[   rG   	value_colr   r   r   test_marginsy  s&   zTestPivotTable.test_marginsc                 C   s0  dd |j D |_ tjtdd |jddgdtjd W d    n1 s&w   Y  |jd	d
jddgdtjd}|j D ]}|jd|f }|||  ksPJ q=tjtdd |jddgddd W d    n1 smw   Y  |jd	d
jddgddd}dD ]}|jd|f }|||  ksJ qd S )Nc                 S   s   g | ]}|d  qS )rN   r   )r   kr   r   r   
<listcomp>  s    z.TestPivotTable.test_no_col.<locals>.<listcomp>Could not convertrQ  AABBT)r:   r   rT   CCr   r   rb  rE   )DDEEFF)	r;   rT  rU  rV  r   r4   rE   r   r  )r7   r8   rG   rq  totalsitemr   r   r   test_no_col  s(   

zTestPivotTable.test_no_colz*columns, aggfunc, values, expected_columns)      @r  皙@r  )       @r  皙@r  )r'   r   r&   r   r   rX   )r         rO   r   r-   )          r-   r-   r  ))r'   r)   )r'   r*   )r'   r   )r&   r)   )r&   r*   )r&   r   rr   c                 C   s   t g dg dg dg dg dd}|dkr7tjtdd	 |j|d
|d W d    n1 s2w   Y  d|vrA|jdd}|jddj|d
|d}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  r  r  r  r  r  r  	r   rN   rN   r   r   r   rO   r   r   	rN   r   rO   rO   r   r   r   r   r   r.   r/   r0   r1   r2   rX   ru  rQ  T)r;   r   rT   r/   r   r0   r1   r2   r   )	r   rT  rU  rV  r   r   r
   r=   r>   )r7   r;   rT   r9   r   rZ   r[   rI   r   r   r   %test_margin_with_only_columns_defined  s&   "z4TestPivotTable.test_margin_with_only_columns_definedc                 C   s   |  }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)r1   r2   r3   r'   r&   r)   r*   ry  r   rr   )      r   r   -   )!   r   $   3   x   r+   r,   r~   r0   r   r   r+   r,   r   r1   r.   r/   Tr   r9   r:   r;   r   rT   rU   )copyr4   r   r?   r   rY   rW   r   r   rs   r   rename_axisr   rX   r=   r>   )r7   r8   rZ   mi_valmirI   r[   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dddgddtdd}t	|| d S )Nr'   r&   r)   r*   ry  r   rr   )r   r   rN   r   rO   )rN   r   rN   rN   r   r  r~   r0   r   r   r+   r,   r   r1   r.   r/   Tr   r  )
rW   r   r   rs   r   r  r   r?   r=   r>   )r7   r8   r  r  rI   r[   r   r   r   test_margins_dtype_len  s"   	z%TestPivotTable.test_margins_dtype_lenrg   ))r   rN   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   re   r   r   )r   rO   r   )r9   r;   ))r   r   )rN   rN   )r   r   rr   r;   r:   )r   r   r   rs   r
   r=   r>   )r7   rg   df2r[   rI   r   r   r    test_pivot_table_multiindex_only  s   (z/TestPivotTable.test_pivot_table_multiindex_onlyc                 C   sZ   t dddd}ttjdtjd|d}|jddgdd	}|jjd
 |s+J d S )Nz
2016-01-01r   zEurope/Amsterdam)r   r  r   r/   r0   F)r:   r   r   )	r   r   r4   r5   r6   r   r:   r   equals)r7   dtirZ   r[   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   x1x2c                    s   g | ]} t | qS r   )r   )r   r   r  r   r   rt  4  r   z=TestPivotTable.test_pivot_integer_columns.<locals>.<listcomp>r  r   r   )r   r   r   rN   )r9   r:   r;   r   4)0132Fr`  )r   r2  rW   r   r   r   r   renamestrr=   r>   )r7   r8   rZ   rG   r  rH   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_   rN   )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   r4   r5   r6   r   rC   rE   rF   r   r=   r>   )r7   r8   rG   groupedrI   r   r   r   test_pivot_no_level_overlap@  s   


	z*TestPivotTable.test_pivot_no_level_overlapc           
   
   C   s.  d}t dtfdtfdtfdtfdtfdtfdtfg}t j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sJ d S )Ni'  r
   SymbolYearMonthDayQuantityPrice)	)SP500ADBE)r  NVDA)r  ORCL)NDQ100AAPL)r  MSFT)r  GOOG)FTSEzDGE.L)r  zTSCO.L)r  zGSK.Lr   r   i  r   i  r     r   r   )r
   r  r  rE   r:   r;   rT   )r4   r   rK  intr   arrayemptyr5   randintr?   r   r   yearrp   r   	lognormalr   r   r;   is_monotonic_increasing)
r7   nr   productsitemsiproductdrdatesrZ   pivotedr   r   r   test_pivot_columns_lexsortedR  sB   


z+TestPivotTable.test_pivot_columns_lexsortedc                 C   sH   dgdgd}| ddg|d}|jdd|d}t|| d S )Nr   rX   r1   r2   r.   r/   r  )rC   rD   rF   r   r=   r>   )r7   r8   r   rI   r[   r   r   r   test_pivot_complex_aggfunc  s   z)TestPivotTable.test_pivot_complex_aggfuncc                 C   sD   |ddg j ddgtdd}| }t|d d |d ks J d S )Nr.   r/   T)r:   rT   r   r   )r   r?   tolistrX   )r7   r8   r[   result_listr   r   r   test_margins_no_values_no_cols  s
   
 z-TestPivotTable.test_margins_no_values_no_colsc                 C   s8   |g d j ddgdtdd}|j g dksJ d S )Nr   r.   r/   r0   Tr:   r;   rT   r   r   r   r   r         &@r   r?   r   r  r7   r8   r[   r   r   r   test_margins_no_values_two_rows  s   z.TestPivotTable.test_margins_no_values_two_rowsc                 C   s4   |ddg j ddtdd}|j g dksJ 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   sH   g d|d< |g d j ddgddgtdd}|j g d	ks"J d S )
N)r^   r_   r`   rm   er   ghr   jrs  r1   r.   r/   r0   r1   r.   r/   r0   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|dddgdgd|d	 W d    n1 s%w   Y  t jt|d t|ddgddgd|d	 W d    n1 sIw   Y  t jt|d t|ddgdgd|d	 W d    d S 1 smw   Y  d S )
NzConflicting name "z3" in margins|margins_name argument must be a stringrQ  r1   r.   r/   r0   T)r9   r:   r;   r   ro  )rT  rU  
ValueErrorr   )r7   r  r8   rW  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 s8w   Y  tjt|d t|dtddddtjd W d    n	1 s^w   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 sw   Y  tjt|d t|dtddd dtjd W d    d S 1 sw   Y  d S )"NA A A A A A A B$Carl Mark Carl Carl Joe Joe Joe Carlr   r   rO   r   r   r   r   r   r  r   r   rN   r  )BranchBuyerr  Dater  )r   r  r   r   r   r   r  r.   r   zCarl Joe Markr   r  r  r:   r;   r9   rT   r   r  r   6MSCarlr   r   z#'The grouper name foo is not found'rQ  r&   )r   r   zThe level foo is not valid)r   splitr   r0  r4   r  r   r   r   r:   rB   r;   r   r	   rX   r=   r>   ri   r   rY   r   rT  rU  r^  r  )r7   using_array_managerrZ   rI   r[   rW  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   r  r   r   rO   r   r  rN   r  r  r   r  r      )r  r  r  r  PayDayr   r  r  r  r  r  r   r   r  r   r   rr   r.   r/   r  )r   r  r   r   r	   r4   rX   r  r   r   r   r   r:   rB   r;   r=   r>   ri   r   rs   )r7   rZ   r[   rI   tuplesr   r   r   r   test_pivot_timegrouper_doublek  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   rN   r   labelr  r  value1value2r  c                 S   r  r  r  r  r   r   r   r     r  z7TestPivotTable.test_pivot_datetime_tz.<locals>.<lambda>r  c                 S   r  r  r  r  r   r   r   r     r  )r  r  r  r  )r  rB   r
  r^   r_   r	  r   r   r   rO   r   r   )rX   rX   rX   rX   rE   rE   rE   rE   )r
  r
  r  r  r  r  r  )r   r   r   rN   r   r   r   rN   )r   r   rN   r   r   r   rN   r   )rN   rO   r   rN   rN   rO   r   rN   r  r  )r   r4   r   r"  r   r   r
   r   r   r   r=   r>   r  rX   rE   )r7   dates1dates2rZ   exp_idxr$  r%  r&  rI   r[   exp_col3r   r   r   test_pivot_datetime_tz  sd   
	 

z%TestPivotTable.test_pivot_datetime_tzc              
   C   sV  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tj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tjddtg dtjddd}t	
|| t||d jjj|d jj|d jjgdd}tjtjg dtjdtjddgd	 tjdgddgd}t tjg dgddtdgtjd|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   rN   r   r  r  c                 S   
   t | S r   r  r  r   r   r   r   L     
 z6TestPivotTable.test_pivot_dtaccessor.<locals>.<lambda>r  c                 S   r  r   r  r  r   r   r   r   M  r  r	  r
  r   r^   r_   r   r   r   rO   )r   r   r   r   rB   r   )r   r   r   r   r   r   rr   )r   r   r   r   rN   rO   r  )Xr  r  r  Yr  r  r  )r   r4   r   r"  r   r   r+  r
   r   r=   r>   rp   r  r9   r   r   r  r   )r7   r  r  rZ   r[   r  rI   r&  r   r   r   test_pivot_dtaccessor1  s~   
	*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sNJ d S )
N1/1/2000
12/31/2004r1   r   r~   r   r   Fr`  )r   r   r4   r5   r6   r?   r   r   r:   r  	dayofyearr;   	droplevelasarrayr   r=   r   rB   )r7   r   rngr*  annualdoysubsetr[   r   r   r   
test_daily  s   
zTestPivotTable.test_dailyr  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sKJ d S )
Nr  r  r   r   r~   r   r   Fr`  )r   r   r4   r5   r6   r?   r   r   r:   r  rp   r;   r  r   r=   r   rB   )r7   r   r  r*  r  rp   r  r[   r   r   r   test_monthly  s   
zTestPivotTable.test_monthlyc                 C   sv   ddd}t |dgt| |d}t |dg| |d}t|| dd |D }t |dg||d}t|| d S )NrX   rE   r  r.   )r:   r9   rT   c                 s   s    | ]}|V  qd S r   r   )r   r  r   r   r   	<genexpr>  s    zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>)r   rW   r   r=   r>   )r7   r8   aggspivot_values_listpivot_values_keysagg_values_gen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 )NWeekly)baconcheeser*  r+  )r   r   g	@gffffff
@)r   r   ri   ri   )r~  costr   r~  r   T)r:   r;   r   ro  rT   r*  r+  rK  r  )rE   r,  r   )rE   r,  ri   rE   r,  )maxr,  r   )r-  r,  ri   r-  )NNr   rr   r   )r   r   r4   rE   r-  r
   r   rs   r9   r=   r>   )r7   ro  costsrG   ixtupsrg   rI   r   r   r   /test_pivot_table_margins_name_with_aggfunc_list  s2   z>TestPivotTable.test_pivot_table_margins_name_with_aggfunc_listc                 C   s   |r|j tjjdd ttdtdd tdd d}t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)rY  r   r   rN   ra   r   r   r   rO   r   r  r   r   r   r   r   r   rc   r   rd   rb   Tr   r   )node
add_markerrT  markxfailr   r4   r   r
   r:   r;   r   r=   r>   r7   r<   r   rZ   rI   rG   r   r   r   test_categorical_margins  s   $z'TestPivotTable.test_categorical_marginsc                 C   s   |r|j tjjdd ttdtdd tdd d}t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 )Nr2  rY  r   r   rN   ra   r3  r4  r5  r6  rc   r   rd   rV   rb   Tr7  )r8  r9  rT  r:  r;  r   r4   r   r
   r:   r;   rc   rY   rd   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)rN   r   r   r   )r   r   rO   r   )r   r   r   r   )r  r  r  r  r  r1   T)r:   r   )r   r   rO   )r   g      @r   )rN   rO   r   r   )r  r  r   r   r~   )r   r   r
   r=   r>   r7   rZ   r[   rI   r   r   r   test_margins_casted_to_float  s   	z+TestPivotTable.test_margins_casted_to_floatc           	      C   s   t jdddt jg}t jddt jdg}tt|ddg|dt|ddg|dtddd}|jd	d
d|d}tjddg|d
d}tdt jgt jdgg|d}ttddgddg|dd	d|_	t
|| |jd
d|d}tddgg|tdgd}t
|| d S )Nr   r   r.   r/   rz   r   r   )InColValrA  rB  rC  )r:   r;   r9   r<   )r|   rB   r   r   )r8   r;   r   )r;   r9   r<   r   )r8   r;   r:   )r4   r   r   r   r   r   r   CategoricalIndexr
   r:   r=   r>   )	r7   r<   r|   r   r   rZ   r[   expected_colsrI   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/   r0   r0   ry   r}   )r   r   Vr   rV   rG  r   count)r:   r;   r   rT   r   Fr{   r|   rB   r^   r_   r   r   r   rN   r   r   )r   rY   r   r   rD  r
   r4   r  r   r=   r>   )r7   r<   rZ   r[   r   r   expected_datarI   r   r   r   test_categorical_aggfunc9  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}|rV|jdg }t	
|| d S )N)r  r     )JanuaryrM  rM  )r  r  r  )Salesr  r  )rM  FebruaryMarchAprilMayJuneJulyAugust	SeptemberOctoberNovemberDecemberr  rV   rN  r  rX   )r9   r:   r;   r<   rT   r  r  r   )rB   r   FrI  i@  r  r   r-   r   rM  )r   rY   r   set_categoriesr   r
   r   rD  r  r=   r>   )	r7   r<   rZ   monthsr[   r   r   rJ  rI   r   r   r   %test_categorical_pivot_index_orderingM  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   rO   )r0   r1   r2   )r   r   r   rP   rQ   rS   rR   rh   rr   r   r  r   r   rO   r   rX   )
r   r   r4   rX   r   r   r=   r>   NaNr
   )r7   rZ   r[   rw   rI   r   r   r   test_pivot_table_not_seriesy  s    &z*TestPivotTable.test_pivot_table_not_seriesc                 C   sZ   d}t dg di}t|dgtd|d}tddd|gd	dd
}t |g d}t|| d S )Nu   Δοκιμήr&   re   T)r:   rT   r   ro  r   rN   r   rK  r  r   )r   r   r?   r
   r=   r>   )r7   greekframerG   r:   rI   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/   rX   r  r0   r)   r*   r   r   rI  r  r  )r'   r&   r   r  ))r0   r)   )r0   r*   r   rE   r   )r   r   r   r   rO  )NNr/         @r   r  g@))rE   r0   r)   )rE   r0   r*   )rX   r0   r)   )rX   r0   r*   )r   r   r   r   r  r=   r>   )r7   r8   r[   r  rI   r   r   r   test_pivot_string_as_func  sD     	z(TestPivotTable.test_pivot_string_as_funcz
f, f_numpyrE   r   c                 C   s<   |j dd}t|dd|d}t|dd|d}t|| d S )Nr0   r   r.   r/   r  )r   r   r=   r>   )r7   r   f_numpyr8   r[   rI   r   r   r   test_pivot_string_func_vs_func  s   z-TestPivotTable.test_pivot_string_func_vs_funcc              
   C   s   G dd dt j}| _}|t d| ttdtddd}d}tjt	|d( t
jtd	d |jd
dddd W d    n1 sHw   Y  W d    n1 sWw   Y  W d    d S W d    d S 1 sow   Y  d S )Nc                       s   e Zd Zd fddZ  ZS )zSTestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstackerreturnNc                    s   t  j|i | td)NDon't compute final result.)super__init__	Exception)r7   argskwargs	__class__r   r   ri    s   z\TestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)rf  N)__name__
__module____qualname__ri  __classcell__r   r   rm  r   MockUnstacker  s    rs  
_Unstackeri   r   )ind1ind2rH  z$The following operation may generaterQ  rg  ru  rv  rH  r  )reshape_librt  contextsetattrr   r4   r   r=   assert_produces_warningr   rT  rU  rj  r   )r7   monkeypatchrs  rw   rZ   rW  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}	|rY|	jdd}	t||	 d S )N)applepeachr}  )r   r   rN   )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   )rX   r   r   r   r   ret_sum  s   z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumc                 S   s   t jS r   )r4   r   r   r   r   r   ret_none  s   z@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_noner  r;   rT   r   r   r   r  r   )r  r  r  r}  r~  rr   r  r  r   r;   r   )	r   r   r4   r   r   from_productr   r=   r>   )
r7   r   rZ   r  r  r  r[   r8   r   rI   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   rN   r   )r.   rb   rc   r.   r  r   r)   r*   r   rb   rc   r   r;   r   )	r   r4   r   r   rE   r
   r   r=   r>   )r7   r   rZ   r[   r8   r   rI   r   r   r   &test_pivot_table_aggfunc_scalar_dropna+  s    z5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnar   c                 C   sj   t g dg dg dg dd}|jdddtj|d	}tg dd
}t tg ddd|d}t|| d S )N)rN   rN   r   r   rN   )rO   r   r   r   r   )prD  rD  r  rD  )NNNNN)r.   idr0   r1   r.   r1   r  r   r   r   r  r   )r   r   r4   r  r
   r=   r>   )r7   r   rZ   r[   exp_colsrI   r   r   r   test_pivot_table_empty_aggfunc<  s   z-TestPivotTable.test_pivot_table_empty_aggfuncc                 C   sj   dd }t g dg dg dd}tjtdd |jdd	d
|d W d    d S 1 s.w   Y  d S )Nc                 S   r  r   )r4   rE   )arrr   r   r   rD   P  s   
z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.aggr   rO  )r   r  r  (   )r  r  Z
notpresentrQ  r  r  )rT   )r   rT  rU  r^  r   )r7   rD   rZ   r   r   r   !test_pivot_table_no_column_raisesN  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 )Nr  r  r  r  r  r  r1   r2   r.   r0   r  )r9   r:   rT   ))r1   rE   r2   r-  )r2   rE   r2   r2  ))r'   r  )r'   r  )r&   r  )r&   r  rr   )r        "@g      @      @)r  r  g      !@r  )r   rb  r   r   )g["8@r  g.UUU@r   r  r  r  )r   r   r4   rE   r2  r-  r   rs   r  rY   r   r=   r>   )r7   rZ   rG   rg   r:   valsrI   r   r   r   0test_pivot_table_multiindex_columns_doctest_caseW  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)d1d4d3r]   )   r  "   )2018r  2019)r^   r   numr  r^   r   r  r  rX   F)r:   r;   r9   rT   sortr  r  r  r  r  r   rr   r  )	r   r   r4   r   r
   r   r   r=   r>   r?  r   r   r   test_pivot_table_sort_false  s$   z*TestPivotTable.test_pivot_table_sort_falsec                 C   s   t dddgtddgddd}|jd	d
ddd}t ddgddgddggtg dd	dtjddgd d
gddd}t|| d S )Nr.   r   rN   r   r-   Int64r   )r^   r_   salesr_   r^   TrX   rp  r  r<  r   r  r.   r  r   rr   r:   r;   r   )r   r   r   r
   r   rs   r=   r>   r?  r   r   r   !test_pivot_table_nullable_margins  s   z0TestPivotTable.test_pivot_table_nullable_marginsc                 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      /   r  )	firstnamelastnameheightager  r  r  r  F)r:   r9   r  )r  r  )r  r  rr   r  )r   r   r   rs   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^   rb   r   )r^   rc   rN   )r_   rc   r   )r_   rd   r   )r   r  r  r   r  r  rX   r   T)r:   r;   r9   rT   rU   r   )r   rN   r   r   )r   r   r   r   )r   rO   r   r   )rb   rc   rd   r   )r^   r_   r   )r   r;   r   r:   rB   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  r  r  r   )rb   rc   r  rb   rc   r  rE   )r:   r;   r9   rT   r   r  r   Float64r  )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 s+w   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   rN   z
2019-12-31g      $@r-   )r^   r_   r   r  r_   r   r^   TrX   rp  r  g      5@r<  r   rb  r  r  r  rr   r   )r   r   r   r=   rz  r   r   r   r
   rK  rs   r>   r?  r   r   r   !test_pivot_table_datetime_warning  s8   
z0TestPivotTable.test_pivot_table_datetime_warningc              
   C   s   t g dg dg dg dg dg dg dg dd}t|ddd	gd
gtjd}t ddgddgddgtjdggtddgd
dtjg dddgd gdd	gdd}|r^|d d|d< t	
|| d S )Nr  r  r  r  r  )r.   r/   r0   r1   r2   )col5)col6r   r   sevenr1   r.   r/   r  r   r   rb  r  r  r   r  r  r   )r'   r'   r&   r&   r)   r*   rN   rr   r  r   )r   r   r4   rX   r   r
   r   r   rY   r=   r>   )r7   r  rZ   r[   rI   r   r   r   )test_pivot_table_with_mixed_nested_tuples	  s0   4z8TestPivotTable.test_pivot_table_with_mixed_nested_tuples)aro  rp  rq  rT  fixturer8   rJ   r\   rl   rx   r   r   r   r   r   r   r   r   r   r   r:  parametrizer   r   r   r   r  r  r'  r4  r9  r=  r4   r  r   r
   rN  rP  rX  r;  r]  r_  rm  rr  r  rE   r   rs   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r!  r(  r1  r=  r>  r@  rF  rK  r\  r^  ra  rc  rX   r   re  slowr|  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r$   )   s4   
0%	#



*	


;7
-

	

	!&


#
3	
% GY

#,>

#
	4
 r$   c                   @   sd   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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s=J |jjdksEJ |jddd}|jjdksTJ |jjdks\J d S )Nr.   r/   r0   r0   r/   r.   Oner  r  Twor  r  r   r   r   r   r   r   r   r:   r;   r9   r   r   r   r   r  r  r   Nr;   )r   r  r:   rB   r;   r=   r>   r@   )r7   r8   r`  r  rI   r   r   r   
test_pivotO	  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    d S 1 s)w   Y  d S )N)r'   r'   r&   r&   r&   )r)   r*   r)   r)   r*   )r   r   r   r   r   r]   zduplicate entriesrQ  r^   r_   r`   r   )r   rT  rU  r  r  )r7   r8   r   r   r   test_pivot_duplicatesl	  s   "zTestPivot.test_pivot_duplicatesc                 C   s>   t g dd}|jdddd}t g g d}tj||dd	 d S )
Nr]   r   r^   r_   r`   r   r   Fr`  )r   r  r=   r>   r?  r   r   r   test_pivot_emptyw	  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.   r  A1)r/   r  B2r   r   r   rN   r   r.   r/   r   )r   r  reprr=   rt   r;   r
   )r7   rZ   r[   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s]J |jj
dkseJ |jd|_|jddd}d|j_t|| d S )Nr  r  r  r   r:   r;   r9   r;   r9   r   r   r   r   r  r   r   )r9   r  )r9   r  rr   Fr`  r  r   )r   r0  r  r:   rB   r;   r=   r>   r   rs   r@   r  )r7   r8   r`  r[   rI   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
}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s`J |d	gksgJ d S )N)r   r   r   rN   rN   rN   )r   r   rN   r   r   rN   )r   rN   r   rN   r   rN   rB  r[  )lev1lev2lev3lev4r9   r  r  r  r   )r   r   r   r   r   r   )rb  r   r   r   r  rb  r   )r   rN   r   rN   rr   )r  r  r9   r9   )	r   r  r4   r  r   r   r   r=   r>   )r7   rZ   r:   r;   r[   rI   r   r   r   0test_pivot_index_list_values_none_immutable_args	  s<   	z:TestPivot.test_pivot_index_list_values_none_immutable_argsc                 C   sL   t dgdd}tjtdd |  W d    d S 1 sw   Y  d S )Nr   r  z(missing 1 required keyword-only argumentrQ  rS  )r7   rZ   r   r   r   test_pivot_columns_not_given	  s   
"z&TestPivot.test_pivot_columns_not_givenc                 C   s   t dgddd}|jd d}t dgdd}t|| |jd dd}t d	ditdgdd
d}t|| |jd ddd}t dditdgdd
d}t|| d S )Nr   rN   r   Nr_   r`   r   ))r_   r   r`   r   r_   r  r  r   r~   r`   r;   r:   r9   )r   r  r=   r>   r
   r?  r   r   r   test_pivot_columns_is_none	  s   z$TestPivot.test_pivot_columns_is_nonec                 C   s   t dgddd}|jdd d}t ddidgd}d dg|j_t|| |jdd d	d
}t ddgtdgddd}t|| d S )Nr   rN   r   r  r_   r  )r`   rN   r~   r`   r  r   r   )r   r  r;   r@   r=   r>   r
   r?  r   r   r   test_pivot_index_is_none	  s   z"TestPivot.test_pivot_index_is_nonec                 C   s   t dgddd}|jddd d}t dtdgddtdgddd	}t|| |jdd d
}t ddgtdgddd	}t|| d S )Nr   rN   r   r  r_   r`   r  r   r   r  r   )r   r  r
   r=   r>   r?  r   r   r   test_pivot_values_is_none	  s   z#TestPivot.test_pivot_values_is_nonec                 C   s>   t dgddd}|jdd}|jddd	d
 t|| d S )Nr^   r   r   )r)   r*   threeT)deepr)   r*   r  r   )r   r  r  r=   r>   )r7   rZ   rI   r   r   r   "test_pivot_not_changing_index_name	  s   z,TestPivot.test_pivot_not_changing_index_nameN)ro  rp  rq  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r  N	  s    $&r  )%r   r   r   	itertoolsr   numpyr4   rT  pandas.errorsr   pandasr   r   r   r	   r
   r   r   r   r   pandas._testing_testingr=   pandas.api.typesr   r   pandas.core.reshaper   rw  pandas.core.reshape.pivotr   r  r   r   r#   r$   r  r   r   r   r   <module>   sF    (

.
                  7