U
    ÎZj„A ã                   @   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   úb/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/reshape/test_pivot.pyÚdropna   s    r   é   é   é   c                 C   s   | j \}}ttj |||¡ƒS r   )r   r   ÚpdÚIntervalIndexÚfrom_arrays)r   ÚclosedÚleftÚrightr   r   r   Úinterval_values#   s    
r"   c                   @   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 d!d"d gfd#d!d"d gfg¡d$d%„ ƒZd&d'„ Zd(d)„ Zd*d+„ Zej d,d-d.g¡d/d0„ ƒZej d,d-d.g¡d1d2„ ƒZej d3¡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-dWdWdXdXgdYdYdZdZgge#dAdOd[dOgdLd\�fdLdMgd]d^d_d`dadbdcgdddedfdcdcd`gge.j/dgdhdidjdkdlgdLdMgdm�fg¡dndo„ ƒZ0dpdq„ Z1drds„ Z2ej dtdudvdwdxg¡dydz„ ƒZ3d{d|„ Z4d}d~„ Z5dd€„ Z6d�d‚„ Z7dƒd„„ Z8d…d†„ Z9d‡dˆ„ Z:d‰dŠ„ Z;d‹dŒ„ Z<ej d�d[dŽd�d�d‘d’gg¡d“d”„ ƒZ=d•d–„ Z>d—d˜„ Z?d™dš„ Z@d›dœ„ ZAej d�eBdždŸƒ¡d d¡„ ƒZCej d�eBdžd_ƒ¡d¢d£„ ƒZDd¤d¥„ ZEd¦d§„ ZFd¨d©„ ZGdªd«„ ZHd¬d­„ ZId®d¯„ ZJd°d±„ ZKd²d³„ ZLd´dµ„ ZMd¶d·„ ZNd¸d¹„ ZOej dºd]e jPfd»e j-fd¼e jQfd]d»ge jPe j-gfd]d¼ge jPe jQgfd¼d»ge jQe j-gfg¡d½d¾„ ƒZRejjSd¿dÀ„ ƒZTdÁdÂ„ ZUdÃdÄ„ ZVdÅdÆ„ ZWdÇdÈ„ ZXdÉdÊ„ ZYdËdÌ„ ZZdÍdÎ„ Z[dÏdÐ„ Z\ej dÑd-d.g¡dÒdÓ„ ƒZ]dÔdÕ„ Z^d�S )ÖÚTestPivotTablec                 C   sv   t dddddddddddgdddddddddddgdddddddddddgtj d¡tj d¡tj d¡dœƒ| _d S )	NÚfooÚbarÚoneÚtwoÚdullÚshinyé   )ÚAÚBÚCÚDÚEÚF)r   ÚnpÚrandomÚrandnÚdata©Úselfr   r   r   Úsetup_method*   sT    õõõ


ÖÿzTestPivotTable.setup_methodc                 C   sì   ddg}d}t | jd|||d�}| jj d|||d�}t ||¡ t | jd||d� t|ƒdkrt|jjt|ƒksˆt‚n|jj	|d ksˆt‚t|ƒdkr¦|j
j|ksºt‚n|j
j	|d ksºt‚| j ||g ¡d  tj¡ ¡ }t ||¡ d S )	Nr+   r,   r-   r.   )ÚvaluesÚindexÚcolumnsÚobserved)r8   r9   r;   r   r   )r   r4   ÚtmÚassert_frame_equalÚlenr9   ÚnamesÚtupleÚAssertionErrorÚnamer:   ÚgroupbyÚaggr1   ÚmeanÚunstack)r6   r;   r9   r:   ÚtableÚtable2Úexpectedr   r   r   Útest_pivot_tableZ   s2        ÿ   ÿ"zTestPivotTable.test_pivot_tablec                 C   s˜   t tdƒtdƒdddddgdœƒ}|jd	d
dtjdd�}|j d¡|_|j d¡|_|j d¡|_|j	 d¡|_	|jd	d
dtjd|d�}t
 ||¡ d S )NZabcdeZfghijr   é   r   r   é   ©Úcol1Úcol2Úcol3rN   rP   rO   r   )r9   r8   r:   ÚaggfuncÚ
fill_valueÚcategory)r9   r8   r:   rQ   rR   r;   )r   Úlistr   r1   Úsumr9   Úastyper:   rN   rO   r<   r=   )r6   r;   ÚdfrI   Úresultr   r   r   Ú+test_pivot_table_categorical_observed_equalv   s.    ÿ    ÿú	z:TestPivotTable.test_pivot_table_categorical_observed_equalc              	   C   s¤   t dddgdddgddd	gd
œƒ}d}tjt|d��( |jdtjd�}|jdtjd�j}W 5 Q R X t ||¡ |jdddid�}|jdddid�j}t ||¡ d S )NÚaÚbÚcÚxÚyÚzr   rK   r   )ÚrowsÚcolsr8   ú!The default value of numeric_only©Úmatchra   )r:   rQ   ©r9   rQ   r8   rE   )	r   r<   Úassert_produces_warningÚFutureWarningr   r1   rU   ÚTr=   )r6   rW   ÚmsgÚrsZxpr   r   r   Útest_pivot_table_nocols‘   s    ÿz&TestPivotTable.test_pivot_table_nocolsc                 C   s¼   t dddddœdddddœd	d
dddœdddddœdddddœdœƒ}|jddddgdd�}|jdddgddd�}tjdddddd d!d"d#d$d%d&gddgd'�}t |j|¡ t |j|¡ d S )(Ni`ê  i † iPÃ  i0u  )r   r   rK   r   r+   r,   r-   i[ i] i\ i^ rZ   r[   r\   Údi€„ i ¡ i@B )ÚamountÚcustomerÚmonthr   Úquantityrp   ro   rn   r   F)r   )r+   rZ   )r+   r[   )r+   r\   )r+   rl   )r,   rZ   )r,   r[   )r,   r\   )r,   rl   )r-   rZ   )r-   r[   )r-   r\   )r-   rl   ©r?   )r   r   r   Úfrom_tuplesr<   Úassert_index_equalr:   r9   )r6   rW   Zpv_colZpv_indÚmr   r   r   Útest_pivot_table_dropnaŸ   sL    ûÿ	   ÿ   ÿôñz&TestPivotTable.test_pivot_table_dropnac                 C   s¢   t ddddgdddgdd�}t ddddgdddgdd�}t||d	d
ddgdœƒ}t|dddgdd�}tj||gddgd�}tdd	d
ddgi|d�}t ||¡ d S )NrZ   r[   r_   T©Ú
categoriesÚorderedr\   rl   r^   r   rK   r   r   )r+   r,   r8   r8   r+   r,   )r8   r9   r   rq   ©r9   )r   r   r   r   r   r<   r=   )r6   Zcat1Úcat2rW   rX   Z	exp_indexrI   r   r   r   Útest_pivot_table_categoricalÄ   s    
  ÿ
  ÿz+TestPivotTable.test_pivot_table_categoricalc                 C   sø   ddddg}t dddddddddg	dddddddddg	tdd	ƒd
œƒ}|d  t|dd�¡|d< |jddd|d�}tdddgdd�}| t|dd�¡}tdddgdd�}t dddgdddgdddgg||d�}|sè|jt|ƒd� d¡}t 	||¡ d S )NrZ   r[   r\   rl   r   rK   r   r   é	   ©r+   r,   r-   r+   F©rx   r,   r-   )r9   r:   r8   r   ©rB   é   r   é   rL   é   ©r9   r:   ©r:   Úfloat)
r   ÚrangerV   ÚCDTr   r   Zreindexr   r<   r=   )r6   r   rw   rW   rX   Úexpected_columnsÚexpected_indexrI   r   r   r   Ú$test_pivot_table_dropna_categoricalsÓ   s(    ýÿýz3TestPivotTable.test_pivot_table_dropna_categoricalsc                 C   s‚   t ttjddddgddgdd�ddddd	gd
œƒ}|jdd|d�}t dddgittjddgddgdd�dd�d�}t ||¡ d S )NÚlowÚhighTrv   ç        ç      ð?ç       @ç      @ç      @©r+   r,   r+   r,   ©r9   r8   r   r   r   r   ry   )	r   r   r1   Únanr   r
   Ú
from_codesr<   r=   ©r6   r   rW   rX   rI   r   r   r   Ú%test_pivot_with_non_observable_dropnaï   s,    ýúÿ
  ÿüþ
z4TestPivotTable.test_pivot_with_non_observable_dropnac                 C   s˜   t tdddddgdddgdd�tdƒdœƒ}|jdd	|d
�}t d	dddgittjdddgdddgdd�dd�d�}|sˆ|d	  t¡|d	< t 	||¡ d S )Nr    r‹   rŒ   Trv   rL   r’   r+   r,   r“   rK   r   r   r   r   ry   )
r   r   r†   r   r
   r•   rV   r…   r<   r=   r–   r   r   r   Ú/test_pivot_with_non_observable_dropna_multi_cat	  s0    ýúÿ  ÿüþ	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   ry   )r   r   r
   ÚuniquerV   r…   r<   r=   )r6   r"   r   rW   rX   rI   r   r   r   Útest_pivot_with_interval_index%  s    
z-TestPivotTable.test_pivot_with_interval_indexc                 C   s¸   t j ddddgddddg¡}ttjdddtjd�ddddgt|d	d
�jdd�dœƒ}t	|ddddd	d�}|d }t
dddgtt  dd¡t  dd¡dgdd�dtjd�}t ||¡ d S )Nr   r   rK   r   éÿÿÿÿ©ÚdtyperZ   r[   Tr~   F)Z	ascendingr}   r-   r,   r+   rU   )r9   r:   r8   rQ   ÚmarginsÚAllr   r�   é
   r   )r9   rB   r�   )r   r   r   r   r1   ÚarangeZintpr   Zsort_valuesr   r   r
   ZIntervalr<   Úassert_series_equal)r6   Zordered_catrW   Z	pivot_tabrX   rI   r   r   r   Ú&test_pivot_with_interval_index_margins.  s2    
ÿýÿ
     ÿ üz5TestPivotTable.test_pivot_with_interval_index_marginsc                 C   s<   | j jd| j j| j jd�}| j jdddd�}t ||¡ d S )Nr.   rƒ   r+   r-   )r4   r   r+   r-   r<   r=   ©r6   rX   rI   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 )Nr.   c                 S   s   | d S )NrL   r   ©r]   r   r   r   Ú<lambda>N  ó    z3TestPivotTable.test_pass_function.<locals>.<lambda>rƒ   rL   r-   )r4   r   r-   r9   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   r4   rC   rD   r1   rE   rF   r<   r=   )r6   r9   r:   rG   rI   r   r   r   Útest_pivot_table_multipleR  s
    z(TestPivotTable.test_pivot_table_multiplec                 C   s  t ddddgddddgddddgd	œƒ}|jd
 dks:t‚t|d
dgdgdtjd�}|j}tt d¡gd tt	dƒdd�d�}t
 ||¡ t ddddgddddgddddgd	œƒ}|jd
 dksÄt‚t|d
dgdgdtjd�}|j}tt d¡gd tt	dƒdd�d�}t
 ||¡ d S )NÚcatÚbatr   rK   r   r   rZ   r[   )rZ   ÚvÚir­   Úint64r®   r   )r8   r9   r:   rR   rQ   Úabr   ry   ç      ø?ç      @ç      @ç      @Úfloat64)r   ÚdtypesrA   r   r1   rU   r   r�   r
   rT   r<   r¢   rE   )r6   Úfr_   rX   rI   r   r   r   Útest_pivot_dtypesY  sH    


ýÿ     ÿ$


ýÿ     ÿ$z TestPivotTable.test_pivot_dtypeszcolumns,valuesÚbool1Úfloat1Úfloat2Úbool2c                 C   sj   t jdt jd�}t||d |dk|dkdœƒ}| ¡ jd||d�}t|jƒ}d	d
„ |D ƒ}||ksft‚d S )NrL   rœ   r�   rK   r   )rº   r»   r¹   r¼   r9   ©r9   r:   r8   c                 S   s   i | ]}|t  d ¡“qS )rµ   )r1   r�   )Ú.0Úcolr   r   r   Ú
<dictcomp>‘  s      z=TestPivotTable.test_pivot_preserve_dtypes.<locals>.<dictcomp>)	r1   r¡   rµ   r   Úreset_indexr   Údictr¶   rA   )r6   r:   r8   r­   rW   Zdf_resrX   rI   r   r   r   Útest_pivot_preserve_dtypes}  s    
ÿ  ÿ
z)TestPivotTable.test_pivot_preserve_dtypesc                 C   sH  t  dddddg¡}tdddddd	gi|d
�}|j|jj|jjd�}t ddg¡}tddgdt	j
ggddg|d�}t ||¡ tddddd	gtddd	d�dœ|d
�}|j|jjtddd�d�}t dt  d¡fg¡}d dg|_tddgddg|d�}t ||¡ |jtdd�tddd�d�}tdgt jdgdd�|d�}t ||¡ d S )Nz
2011-01-01z
2011-02-01z
2011-01-02r+   r   rK   r   r   rL   ry   rƒ   )r+   r   )r+   rK   r²   r‘   r�   r.   )ÚfreqÚperiods)r+   ÚdtrÆ   ÚM)ÚkeyrÄ   z
2011-01-31ç      
@©rÄ   z
2011-12-31)r   ÚDatetimeIndexr   r   r9   ro   Údayr   rr   r1   r”   r<   r=   r   r	   Ú	Timestampr?   )r6   ÚidxrW   ÚresZexp_columnsÚexpr   r   r   Útest_pivot_no_values”  s:    ÿ þû
 
ÿ  ÿz#TestPivotTable.test_pivot_no_valuesc                 C   sN   t | jddgdddgdd�}t | jjdgd	d
�dddgdd�}t ||¡ d S )Nr.   r/   r+   r,   r-   r   )r8   r9   r:   rR   r0   r   ©Úaxis)r9   r:   rR   )r   r4   Zdropr<   r=   r¤   r   r   r   Útest_pivot_multi_valuesµ  s        ÿ   ÿz&TestPivotTable.test_pivot_multi_valuesc                    s¨   ‡ fdd„}|t jt jgƒ}|t jƒ}|t jƒ}t||gddgdd�}t ||¡ ‡ fdd„}|t jt jgƒ}|t jƒ}|t jƒ}t||gddgdd�}t ||¡ d S )Nc                    s   t ˆ jddgddgd| d�S )Nr.   r/   r+   r,   r-   ©r8   r9   r:   rQ   ©r   r4   ©Úfuncr5   r   r   r§   ¿  s       ÿz;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>rE   Ústdr   )ÚkeysrÓ   c                    s   t ˆ jddgddgd| dd�S )Nr.   r/   r+   r,   r-   T)r8   r9   r:   rQ   rž   rÖ   r×   r5   r   r   r§   É  s   ú)r1   rE   rÙ   r   r<   r=   )r6   r·   rX   ZmeansZstdsrI   r   r5   r   Útest_pivot_multi_functions¾  s    



z)TestPivotTable.test_pivot_multi_functionsÚmethodTFc              	   C   s  t j}tdd|dgddddgdd	d
dgdœƒ}|rZt t¡� |jdddd�}W 5 Q R X n(t t¡� tj|dddd�}W 5 Q R X t||d
|gd|||g|d	||g|||dggt|dddgdd�tddddgdd�d�}t 	||¡ t 	|jdddd�|j
¡ d S )NZR1ZR2ZR4ÚC1ÚC2ZC3ZC4r    é   é   é   ©rZ   r[   r\   rZ   r[   r\   ©r:   r8   r   rƒ   r½   )r1   r”   r   r<   rf   rg   Úpivotr   r
   r=   rh   )r6   rÜ   r”   rW   rX   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< |rz|jdd	dd�}ntj|dd	dd�}| 	¡ j
 ¡ t|ƒks¦t‚| ¡ D ]*\}}|j|d |d	 f |d ks®t‚q®|rð|jd	ddd�}ntj|d	ddd�}t ||j¡ d S )Nz
2014-02-01r€   r.   )rÅ   rÄ   éd   )rZ   r\   rZ   z
2014-02-02r[   )r   rZ   )r   rZ   ©r   r[   )r   r[   r\   r½   )r   r   r1   r¡   r   rÍ   r”   Úlocrä   Znotnar8   rU   r>   rA   Ziterrowsr<   r=   rh   )r6   rÜ   rW   ÚpvÚ_ÚrowrX   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ddddgƒ}tjddgd ddd�}t 	||g¡}t ddddgddddggtjddgddd�|d�}|�r@|j
ddd�}ntj
|ddd�}t ||¡ t ddgddggtjddgddd�tjddgddd�d�}|�r®|j
dddd�}ntj
|dddd�}t ||¡ d S )NéÝ  r   r|   r   rK   éÞ  r   r¯   rœ   )Údt1Údt2Údata1Údata2rï   c                 S   s   t j| dd�S ©Nú
US/Pacific©Útz©r   rÍ   ©rl   r   r   r   r§   (  r¨   z3TestPivotTable.test_pivot_with_tz.<locals>.<lambda>rð   c                 S   s   t j| dd�S ©Nú
Asia/Tokyorõ   r÷   rø   r   r   r   r§   )  r¨   rñ   rò   z2014/01/01 09:00z2014/01/02 09:00rú   )rB   rö   r   z2013/01/01 09:00z2013/01/02 09:00rô   rƒ   r½   )r   r   r1   r¡   Úapplyr
   r   rË   r   r   rä   r<   r=   ©r6   rÜ   rW   Úexp_col1Úexp_col2Úexp_colrI   ré   r   r   r   Útest_pivot_with_tz  sl    üüòÿ
  ÿ  ÿû  ÿ  ÿû
z!TestPivotTable.test_pivot_with_tzc              
   C   s  t dtjddd�dœdtjddd�dœdtjddd�dœdtjddd�dœdtjd	dd�dœgƒ}| d
¡ ¡ }|j dd„ ¡}t| d
¡ ¡ d
dg|gtj	d�}t tjddd�tjddd�ggt
dgdd�tjtjddd�tjddd�gd
d�d�}t ||¡ d S )NZaaz2016-08-12 13:00:00-0700rô   rõ   )ÚuidÚtsz2016-08-12 08:00:00-0700z2016-08-12 14:00:00-0700z2016-08-25 11:00:00-0700z2016-08-25 13:00:00-0700r  c                 S   s   | j ddddd�S )Nr   )ÚhourÚminuteÚsecondÚmicrosecond)Úreplacer¦   r   r   r   r§   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   r1   Úminr
   rË   r<   r=   )r6   rW   ZminsrX   rI   r   r   r   Útest_pivot_tz_in_valuesN  sR    þþþþþïÿûþÿþûøz&TestPivotTable.test_pivot_tz_in_valuesc              	   C   s‚  t t dd¡t dd¡t dd¡t dd¡gt dd¡t dd¡t dd¡t dd¡gtjddd	�tjddd	�d
œƒ}tddddgƒ}tjddgd ddd�}t ||g¡}t ddddgddddggtjddgddd�|d�}|rò|j	ddd�}ntj	|ddd�}t
 ||¡ t ddgddggtjddgddd�tjddgddd�d�}|�r`|j	dddd�}ntj	|dddd�}t
 ||¡ d S )Nz
2013-01-01r.   z
2013-01-02z2013-01rÇ   z2013-02r   r¯   rœ   )Úp1Úp2rñ   rò   rñ   rò   rK   r  )rB   rÄ   r   r   r   r  rƒ   r½   )r   r   ÚPeriodr1   r¡   r
   ZPeriodIndexr   r   rä   r<   r=   rü   r   r   r   Útest_pivot_periods…  sH    



ü



üòÿýýz!TestPivotTable.test_pivot_periodsc                 C   s�   t ddddgt d¡t d¡t d¡t d¡gddœƒ}t dtdddgdd	�tt d¡t d¡dgd
d	�d�}|jdd
ddd�}t ||¡ d S )Nr   rK   Z2019Q1Z2019Q2rŽ   )rZ   r[   r]   rŸ   rZ   r   r[   )r4   r9   r:   r]   T)r9   r:   r8   rž   )r   r   r  r
   r   r<   r=   )r6   rW   rI   rX   r   r   r   Útest_pivot_periods_with_margins³  s"    
üøÿýz.TestPivotTable.test_pivot_periods_with_marginsr8   ÚbazÚzooc           	   
   C   sö   t ddddddgddddddgdddd	d
dgddddddgdœƒ}|rX|jdd|d�}ntj|dd|d�}ddddddgd	d
ddddgg}tddgdd�}tddgdddggddddddgddddddggd dgd�}t |||dd�}t ||¡ d S )Nr&   r'   r+   r,   r-   r   rK   r   r   rL   r€   r]   r^   r_   ÚqÚwÚt©r$   r%   r  r  r$   r%   r½   ©r4   rB   r  r  r   ©ÚlevelsÚcodesr?   Úobject©r4   r9   r:   r�   )r   rä   r   r
   r   r<   r=   ©	r6   r8   rÜ   rW   rX   r4   r9   r:   rI   r   r   r   Ú test_pivot_with_list_like_valuesË  s&    üÿ	 ýz/TestPivotTable.test_pivot_with_list_like_valuesr%   c           	   
   C   s,  t ddddddgddddddgdddd	d
dgddddddgdœƒ}|rX|jdd|d�}ntj|dd|d�}tjdtjd	gtjdtjdgtjdtjd
gdtjdtjgdtjdtjgdtjdtjgg}tddddddgdd�}tddgddggddddgddddggd dgd�}t |||dd�}t ||¡ d S )Nr&   r'   r+   r,   r-   r   rK   r   r   rL   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   r<   r=   r  r   r   r   Ú%test_pivot_with_list_like_values_nansï  s2    üÿ	úýz4TestPivotTable.test_pivot_with_list_like_values_nansc              	   C   sR   t dddgdddgdddgdœƒ}d}tjt|d	�� |jd
dd� W 5 Q R X d S )NrZ   r[   r\   r   rK   r   rM   z0pivot\(\) missing 1 required argument: 'columns'rc   rN   rP   )r9   r8   )r   ÚpytestÚraisesÚ	TypeErrorrä   )r6   rW   ri   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 ddddddgd�}dd	dd
gddddgddddgdd	ddgddddgddddgg}tddgddggddddgddddggd�}t|||dd�}|r¨|jdddd�}ntj|dddd�}tddgddgd�tddgddgd�tddgddgd�d œ}t|ƒ}t ||¡ d S )!Nr   r   rK   r   r   rL   ©r4   r&   r+   r]   r,   r^   r-   r_   r'   r  r  r€   r  r%   r  Úfirstr  )r  r  r  r  )r%   r'  )r%   r  )r  r'  r½   ry   r}   )r
   r   r   rä   r   r   r<   r=   )r6   rÜ   r9   r4   r:   rW   rX   rI   r   r   r   Útest_pivot_with_multiindex!  s>    





úþýüýz)TestPivotTable.test_pivot_with_multiindexc              
   C   sˆ   t ddddddgddddddgdddd	d
dgddddddgdœƒ}tjtdd��. |rh|jdddd� ntj|dddd� W 5 Q R X d S )Nr&   r'   r+   r,   r-   r   rK   r   r   rL   r€   r]   r^   r_   r  r  r  r  z^\('bar', 'baz'\)$rc   r  r$   )r%   r  r½   )r   r   r!  ÚKeyErrorrä   r   )r6   rÜ   rW   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sJt‚| 	¡ }|j |df j
d d… }| j |¡|  ¡ }	tj||	dd� |j|dfks t‚|j |df|f }
| j|  ¡ }|
|ksÌt‚d S )Nr›   F©Zcheck_namesÚ )rè   r9   r4   rC   rE   r<   r¢   rB   rA   Z
sort_indexZiloc)r6   rX   Z
values_colr9   r:   Úmargins_colZcol_marginsZexpected_col_marginsZindex_marginsZexpected_ix_marginsZgrand_total_marginsZexpected_total_marginsr   r   r   Ú_check_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 )Nr.   r+   r,   r-   T)r8   r9   r:   rž   rQ   ZTotals)r8   r9   r:   rž   rQ   Úmargins_name)r-  ©r9   r:   rž   rQ   r   )r4   r   r1   rE   r.  r:   r  )r6   rX   rG   Ú	value_colr   r   r   Útest_marginsp  s2        ÿú   ÿ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 5 Q R X |jD ](}|jd	|f }|| j |  ¡ ksRt	‚qRtjt|d�� | j jddgdd
d�}W 5 Q R X dD ](}|jd	|f }|| j |  ¡ ks°t	‚q°d S )Nc                 S   s   g | ]}|d  ‘qS )rK   r   )r¾   Úkr   r   r   Ú
<listcomp>�  s     z.TestPivotTable.test_no_col.<locals>.<listcomp>rb   rc   ZAAÚBBT)r9   rž   rQ   ©rŸ   r,  rE   )ZDDZEEZFF)
r4   r:   r<   rf   rg   r   r1   rE   rè   rA   )r6   ri   rG   r1  ZtotalsÚitemr   r   r   Útest_no_col‰  s(      ÿ
  ÿzTestPivotTable.test_no_colz*columns, aggfunc, values, expected_columnsç      @gš™™™™™@ç       @gš™™™™™@r$   r   rU   r|   é   é   rL   r€   r*   é   é   é    )r%   r&   )r%   r'   )r%   rŸ   )r$   r&   )r$   r'   )r$   rŸ   rq   c           	      C   sÂ   t dddddddddg	dddddddddg	dddddddddg	dddd	d	d
dddg	dd
dddddddg	dœƒ}d}tjt|d�� |j|d|d�}W 5 Q R X t |tddgƒ|d�}t ||¡ d S )Nr$   r%   r&   r'   ÚsmallÚlarger   rK   r   r   rL   r€   r�   r‚   r|   ©r+   r,   r-   r.   r/   rb   rc   T)r:   rž   rQ   r.   r/   rƒ   )r   r<   rf   rg   r   r
   r=   )	r6   r:   rQ   r8   rˆ   rW   ri   rX   rI   r   r   r   Ú%test_margin_with_only_columns_definedŸ  s,    ÷ñÿz4TestPivotTable.test_margin_with_only_columns_definedc                 C   sÒ   | j  ¡ }t t|ƒd ¡ t|ƒd¡ d¡|dddg< ttddgdd	gƒƒd
g }t	j
|dd�}tdddddgdddddgdœ|d�jddd�}|d |d  |d< |jdddgdd tjdd!�}t ||¡ d S )"Nr   Úi8r.   r/   r0   r%   r$   r&   r'   r6  r’   rq   é   é   r|   é-   é!   r   é$   é3   éx   ©r(   r)   ry   r-   r   rÒ   r(   r)   rŸ   r+   r,   T©r8   r9   r:   rž   rQ   rR   )r4   Úcopyr1   r¡   r>   r   rV   rT   r   r   rr   r   Úrename_axisr   rU   r<   r=   )r6   rW   Úmi_valÚmirI   rX   r   r   r   Útest_margins_dtypeÙ  s*    
. ÿ þú	z!TestPivotTable.test_margins_dtypec                 C   sš   t tddgddgƒƒdg }tj|dd�}tddd	dd
gd	dd	d	dgdœ|d�jddd�}|d |d  |d< | jjdddgddtdd�}t	 
||¡ d S )Nr%   r$   r&   r'   r6  r’   rq   r   rK   rL   r   r€   rL  ry   r-   rÒ   r(   r)   rŸ   r.   r+   r,   TrM  )rT   r   r   rr   r   rO  r4   r   r>   r<   r=   )r6   rP  rQ  rI   rX   r   r   r   Útest_margins_dtype_lenñ  s&     ÿ þú	z%TestPivotTable.test_margins_dtype_lenra   )r   rK   )rZ   r[   rç   )rZ   r   c              	   C   sx   t |d dddg|d dddgddddgiƒ}|jd|d	�}t dddggtjd
ddg|d�tdgƒd�}t ||¡ d S )Nr   r   rK   r   r­   r   rL   r€   )r8   r:   )r   r   )rK   rK   )r   r   rq   ©r:   r9   )r   r   r   rr   r
   r<   r=   )r6   ra   Údf2rX   rI   r   r   r   Ú test_pivot_table_multiindex_only  s    .
ýz/TestPivotTable.test_pivot_table_multiindex_onlyc                 C   sZ   t dddd�}ttj d¡tj d¡|dœƒ}|jddgdd	�}|jjd
  |¡sVt	‚d S )Nz
2016-01-01r   zEurope/Amsterdam)rÅ   rö   r}   r,   r-   F)r9   r   r   )
r   r   r1   r2   r3   r   r9   r  ÚequalsrA   )r6   ZdtirW   rX   r   r   r   Útest_pivot_table_retains_tz  s     z*TestPivotTable.test_pivot_table_retains_tzc                    s”   t j‰ ttddgdddgddg‡ fdd	„td
ƒD ƒdgƒƒ}t|ƒ}|jddddgdgd�}|jtd�}|jddddgdgd�}t	j
||dd� d S )Nr$   r%   r+   r,   r-   Úx1Zx2c                    s   g | ]}ˆ t |ƒ ‘qS r   )r   )r¾   r®   rø   r   r   r4  #  s     z=TestPivotTable.test_pivot_integer_columns.<locals>.<listcomp>rá   rŽ   r   r   r   r   rK   )r8   r9   r:   r„   Ú4Ú0Ú1Ú3Ú2Fr+  )r   r
  rT   r   r†   r   r   ÚrenameÚstrr<   r=   )r6   r4   rW   rG   rU  rH   r   rø   r   Útest_pivot_integer_columns  s    ûÿ	z)TestPivotTable.test_pivot_integer_columnsc              
   C   s¬   t ddddddddgd ddddddddgd dgd dgd  d tj d	¡d
œƒ}|jddddgd�}| dddg¡d  ¡ }| d¡ d¡jddd�}t	 
||¡ d S )NrZ   r[   rK   r   r   r$   r   r%   é   )rZ   r[   r\   Úvaluerc  r\   rƒ   Úall)rÓ   Úhow)r   r1   r2   r3   r   rC   rE   rF   r   r<   r=   )r6   r4   rG   ÚgroupedrI   r   r   r   Útest_pivot_no_level_overlap/  s    
üÿ	z*TestPivotTable.test_pivot_no_level_overlapc           
   
   C   s@  d}t  dtfdtfdtfdtfdtfdtfdtfg¡}t jd	d
dddddddg	dtfdtfgd�}t j||d�}t j dt	|ƒ|¡}|d | |d< |d | |d< t
tdddƒtdddƒƒ}|t j dt	|ƒ|¡ }|j|d< |j|d< |j|d< t j dd|¡|d< t|ƒ}|jdddgdddgdd�}	|	jj�s<t‚d S )Ni'  r
   ÚSymbolÚYearÚMonthZDayÚQuantityZPrice)ÚSP500ZADBE)rl  ZNVDA)rl  ZORCL)ÚNDQ100ZAAPL)rm  ZMSFT)rm  ZGOOG)ÚFTSEzDGE.L)rn  zTSCO.L)rn  zGSK.Lrœ   r   iÐ  r   iÚ  rE  é   r‘   r�   rE   ©r9   r:   rQ   )r1   r�   r  Úintr…   ÚarrayÚemptyr2   Úrandintr>   r   r   Úyearro   rÌ   Z	lognormalr   r   r:   Zis_monotonic_increasingrA   )
r6   Únr�   ZproductsÚitemsZiproductZdrÚdatesrW   Úpivotedr   r   r   Útest_pivot_columns_lexsortedA  sT    ùÿ÷ô


üz+TestPivotTable.test_pivot_columns_lexsortedc                 C   sL   dgdgdœ}| j  ddg¡ |¡ d¡}| j jdd|d�}t ||¡ d S )NrÙ   rU   ©r.   r/   r+   r,   rp  )r4   rC   rD   rF   r   r<   r=   )r6   r·   rI   rX   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sBt‚d S )Nr+   r,   T)r9   rQ   rž   r›   )r4   r   r>   ÚtolistrU   rA   )r6   rX   Zresult_listr   r   r   Útest_margins_no_values_no_cols|  s      ÿz-TestPivotTable.test_margins_no_values_no_colsc                 C   sB   | j dddg jddgdtdd�}|j ¡ ddddd	gks>t‚d S )
Nr+   r,   r-   T©r9   r:   rQ   rž   r�   rŽ   r‘   ç      &@©r4   r   r>   rŸ   r}  rA   ©r6   rX   r   r   r   Útest_margins_no_values_two_rows„  s       ÿz.TestPivotTable.test_margins_no_values_two_rowsc                 C   s8   | j ddg jddtdd�}|j ¡ dddgks4t‚d S )Nr+   r,   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   ddddddddd	d
dg| j d< | j ddddg jddgddgtdd�}|j ¡ dddddgksdt‚d S )NrZ   r[   r\   rl   Úer·   ÚgÚhr®   Újr3  r.   r+   r,   r-   Tr  r�   rŽ   r‘   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&   iš  NrZ   r[   c              	   C   s°   d|› d�}t jt|d��" t| jdddgdgd|d	� W 5 Q R X t jt|d��" t| jddgddgd|d	� W 5 Q R X t jt|d��  t| jddgdgd|d	� W 5 Q R X d S )
NzConflicting name "z3" in margins|margins_name argument must be a stringrc   r.   r+   r,   r-   T)r8   r9   r:   rž   r/  )r   r!  Ú
ValueErrorr   r4   )r6   r‹  ri   r   r   r   Ú-test_pivot_table_with_margins_set_margin_name�  s:    
ÿúúúz<TestPivotTable.test_pivot_table_with_margins_set_margin_namec                 C   sz  t d ¡ d ¡ ddddddddgtdddƒtdddƒtdd	dƒtdd	d
ƒtdd	dƒtdd	d
ƒtddd
ƒtddd
ƒgdœƒ d¡}t tjd	ddgdd� dd¡tjtdddƒgdd�d ¡ d�}d|j	_
d|j_
t|tdd�ddtjd�}t ||¡ t|dtdd�dtjd�}t ||j¡ t t dtjdddtjg¡ d
d¡tjtdddƒtdddƒgdd�d ¡ d�}d|j	_
d|j_
|�r’|d  d¡|d< t|tdd�ddtjd�}t ||¡ t|dtdd�dtjd�}t ||j¡ | ¡ }t|tddd�ddtjd�}t ||¡ t|dtddd�dtjd�}t ||j¡ d}tjt|d��" t|tddd�ddtjd� W 5 Q R X tjt|d��" t|dtddd�dtjd� W 5 Q R X | d¡}t|tddd �ddtjd�}t ||¡ t|dtddd �dtjd�}t ||j¡ d!}tjt|d��" t|tddd �ddtjd� W 5 Q R X tjt|d��" t|dtddd �dtjd� W 5 Q R X d S )"NúA A A A A A A Bú$Carl Mark Carl Carl Joe Joe Joe Carlr   r   rL   r‚   r|   rí   r    rK   rE  )ÚBranchÚBuyerrk  ÚDater’  r>  r¯   rœ   ro  r+   rÊ   zCarl Joe Markrƒ   r‘  rk  ©r9   r:   r8   rQ   r�   Z6MSZCarl©rÄ   rÈ   z#'The grouper name foo is not found'rc   r$   )rÄ   ÚlevelzThe level foo is not valid)r   Úsplitr   r  r1   rr  r   r   rË   r9   rB   r:   r   r	   rU   r<   r=   rh   r”   rV   rÁ   r   r!  r)  rŒ  )r6   Zusing_array_managerrW   rI   rX   ri   r   r   r   Útest_pivot_timegrouperÃ  s   







øüÿðýûû  ÿûûû
û
û
û
û	

û
û
û
ûz%TestPivotTable.test_pivot_timegrouperc                 C   sŠ  t d ¡ d ¡ ddddddddgtdd	dd
dƒtdddd
dƒtdddddƒtdddddƒtdd	dddƒtdddddƒtdddddƒtdddddƒgtdddddƒtdddd
dƒtdddddƒtdd	dddƒtdddddƒtdddddƒtdddddƒtdd	dddƒgdœƒ}t|tddd�tddd�dtjd�}t t tjdtjtjdtjddtjdtjtjtjtjdtjg¡ 	dd¡t
jtdddƒtdddƒtdd	dƒtdddƒgdd�t
jtdddƒtdddƒtdd	dƒtdddƒgdd�d�}d|j_d|j_t ||¡ t|tddd�tddd�dtjd�}t ||j¡ tdddƒtdddƒftdddƒtdddƒftdddƒtdd	dƒftdddƒtdddƒftdd	dƒtdddƒftdddƒtdd	dƒfg}tj|ddgd �}t t dtjdtjdtjdtjdtjtjdg¡ 	dd¡|d!d"gd�}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   rL   r‚   r|   rí   r*   r;  r   r    rá   rK   rE  r=  r   rß   r�   é   )r�  r‘  rk  r’  ÚPayDayrÇ   r’  r”  r™  rk  r“  r€   ro  rÊ   rƒ   rq   r+   r,   r�  )r   r–  r   r   r	   r1   rU   rr  r”   r   r   rË   r9   rB   r:   r<   r=   rh   r   rr   )r6   rW   rX   rI   ZtuplesrÎ   r   r   r   Útest_pivot_timegrouper_double[  sê    øøòÿ

ûðÿ í



üù	



üùâ(

ûú&ÿ þûûûz,TestPivotTable.test_pivot_timegrouper_doublec                 C   sÔ  ddddddg}ddddddg}t ddddddg||tjdd	d
�ddgd dœƒ}|d  dd„ ¡|d< |d  dd„ ¡|d< tjdddgddd�}tddgƒ}tddgdd�}t ||g¡}t ddgddgddgg||d�}t	|dgdgdgd�}	t
 |	|¡ tddddddddgƒ}tddd d gd ƒ}tjddgd d!dd�}
t |||
g¡}t tjddddddddgddddddddgddddddddggd	d
�||d�}t	|dgdgdd gtjtjgd"�}	t
 |	|¡ d S )#Nú2011-07-19 07:00:00ú2011-07-19 08:00:00ú2011-07-19 09:00:00ú2013-01-01 15:00:00ú2013-02-01 15:00:00rZ   r[   r€   r¯   rœ   r   rK   r   ©Úlabelrï   rð   Úvalue1Úvalue2rï   c                 S   s   t j| dd�S ró   r÷   rø   r   r   r   r§   ô  r¨   z7TestPivotTable.test_pivot_datetime_tz.<locals>.<lambda>rð   c                 S   s   t j| dd�S rù   r÷   rø   r   r   r   r§   õ  r¨   rô   )rö   rB   r¢  r¡  r   r   r   rL   rƒ   r½   rU   rE   r£  rú   r“  )r   r1   r¡   rû   r   rË   r
   r   r   r   r<   r=   rr  rU   rE   )r6   Údates1Údates2rW   Úexp_idxrý   rþ   rÿ   rI   rX   Zexp_col3r   r   r   Útest_pivot_datetime_tzÚ  s|    ú	ú
ûÿ	ý 
ýýúö
ûz%TestPivotTable.test_pivot_datetime_tzc              
   C   s\  ddddddg}ddddddg}t ddddddg||tjdd	d
�ddgd dœƒ}|d  dd„ ¡|d< |d  dd„ ¡|d< t|d|d jjdd�}tddgdd�}t ddgddgddgdœ|tdddgdd�d�}t 	||¡ t||d jj
|d jjdd�}t ddgddgddgdœtddgdd�tdddgdd�d�}t 	||¡ t||d jjj|d jj|d jj
gdd�}tjddddddgddgd gddgd �}t tjddddddggd	d
�d!g|d�}t 	||¡ t|t d"d"d"d"d#d#g¡|d jj|d jj
gdd�}t t dddtjdtjgtjtjtjdtjdgg¡d"d#g|d�}t 	||¡ d S )$Nr›  rœ  r�  rž  rŸ  rZ   r[   r€   r¯   rœ   r   rK   r   r   rï   c                 S   s
   t  | ¡S r   r÷   rø   r   r   r   r§   <  r¨   z6TestPivotTable.test_pivot_dtaccessor.<locals>.<lambda>rð   c                 S   s
   t  | ¡S r   r÷   rø   r   r   r   r§   =  r¨   r¡  r¢  r½   r   r   r   rL   )r�   r‚   r|   r�   r‚   r|   rƒ   rq   rí   ÚXÚY)r   r1   r¡   rû   r   rÆ   r  r
   r<   r=   ro   ru  r8   r   r   rr  r”   )r6   r¤  r¥  rW   rX   r¦  rI   rÿ   r   r   r   Útest_pivot_dtaccessor!  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sœt‚d S )
Nú1/1/2000ú
12/31/2004r.   rÊ   ry   rƒ   r   Fr+  )r   r   r1   r2   r3   r>   r   r   r9   ru  Z	dayofyearr:   Ú	droplevelZasarrayr   r<   r¢   rB   rA   )r6   r®   Úrngr  ÚannualZdoyÚsubsetrX   r   r   r   Ú
test_dailyt  s      ÿ
zTestPivotTable.test_dailyc                 C   sš   t dddd�}ttj t|ƒ¡|d�}tt|ƒ|jj	|jj
d�}|j d¡|_|jj
}|||k }|jj	|_||  ¡ }tj||dd	� |j|ks–t‚d S )
Nr«  r¬  rÇ   rÊ   ry   rƒ   r   Fr+  )r   r   r1   r2   r3   r>   r   r   r9   ru  ro   r:   r­  r   r<   r¢   rB   rA   )r6   r®   r®  r  r¯  ro   r°  rX   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 )NrU   rE   r{  r+   )r9   r8   rQ   c                 s   s   | ]
}|V  qd S r   r   )r¾   rc  r   r   r   Ú	<genexpr>£  s     zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>)r   r4   rT   rÚ   r<   r=   )r6   ZaggsZpivot_values_listZpivot_values_keysZagg_values_genZpivot_values_genr   r   r   Ú%test_pivot_table_with_iterator_values–  s,    
  
 ÿ   ÿ   ÿz4TestPivotTable.test_pivot_table_with_iterator_valuesc                 C   sª   d}t ddddgddddgddd	d	gd
œƒ}|jddd|tjtgd�}tdd|gddd�}dddd|fdddd|fg}tj|d d dgd�}t |j||d�}t	 
||¡ d S )NZWeeklyÚbaconZcheeser²   r´   gš™™™™™	@gffffff
@rÇ   rh   )r7  ÚcostrÌ   r7  rÌ   T)r9   r:   rž   r/  rQ   r  ©r�   rB   )rE   r¶  rÇ   )rE   r¶  rh   rE   r¶  )Úmaxr¶  rÇ   )r¸  r¶  rh   r¸  rq   rƒ   )r   r   r1   rE   r¸  r
   r   rr   r8   r<   r=   )r6   r/  ZcostsrG   ZixZtupsra   rI   r   r   r   Ú/test_pivot_table_margins_name_with_aggfunc_list©  s2    


ýÿûúz>TestPivotTable.test_pivot_table_margins_name_with_aggfunc_listc                 C   s°   |r|j  tjjdd�¡ tt d¡t d¡d t d¡d dœƒ}tddd	gd
ddgdddggƒ}tdddgdd�|_	tdddgdd�|_
|jddd|dd�}t ||¡ d S )Nú1GH#17035 (np.mean of ints is casted back to ints)r$  r‚   r   rK   ©r]   r^   r_   rŽ   r�   r±   rL   r€   r9  r   r³   r   r   rŸ   r^   r   r_   r]   T©r   rž   )ÚnodeÚ
add_markerr   ÚmarkÚxfailr   r1   r¡   r
   r9   r:   r   r<   r=   ©r6   r;   r   rW   rI   rG   r   r   r   Útest_categorical_marginsÇ  s    ÿÿ$ÿ z'TestPivotTable.test_categorical_marginsc                 C   sÌ   |r|j  tjjdd�¡ tt d¡t d¡d t d¡d dœƒ}tddd	gd
ddgdddggƒ}tdddgdd�|_	tdddgdd�|_
|j d¡|_|j d¡|_|jddd|dd�}t ||¡ d S )Nrº  r$  r‚   r   rK   r»  rŽ   r�   r±   rL   r€   r9  r   r³   r   r   rŸ   r^   r   r_   rS   r]   Tr¼  )r½  r¾  r   r¿  rÀ  r   r1   r¡   r
   r9   r:   r^   rV   r_   r   r<   r=   rÁ  r   r   r   Ú!test_categorical_margins_categoryÚ  s     ÿÿ$ÿ z0TestPivotTable.test_categorical_margins_categoryc                 C   s„   t ddddgddddgddddgddd	d	gd
œƒ}t|ddd�}t dddgdddgdddgdœtdd	dgdd�d�}t ||¡ d S )NrK   r   r€   r‚   r   rL   r   r¨  r©  )r+   r,   r-   r.   r.   T)r9   rž   r�   r²   g      @r´   r³   r}   rŸ   r   ry   )r   r   r
   r<   r=   ©r6   rW   rX   rI   r   r   r   Útest_margins_casted_to_floatî  s    



üÿ	þz+TestPivotTable.test_margins_casted_to_floatc           	      C   sþ   t jdddt jg}t jddt jdg}tt|ddg|d�t|ddg|d�tddƒdœƒ}|jd	d
d|d�}tjddg|d
d�}tdt jgt jdgg|d�}ttddgddg|d�d	d�|_	t
 ||¡ |jd
d|d�}tddgg|tdgƒd�}t
 ||¡ d S )Nr‹   rŒ   r+   r,   rv   r   r€   )ÚInÚColÚValrÆ  rÇ  rÈ  )r9   r:   r8   r;   )rx   rB   r�   r�   )r4   r:   r   )r:   r8   r;   r³   )r4   r:   r9   )r1   r”   r   r   r†   r   r   ÚCategoricalIndexr
   r9   r<   r=   )	r6   r;   rx   rÎ   r¿   rW   rX   Zexpected_colsrI   r   r   r   Útest_pivot_with_categorical   s8    ýÿ   ÿþ  ÿz*TestPivotTable.test_pivot_with_categoricalc                 C   s¼   t ddddgddddgdddd	gd
œƒ}|d  d¡|d< |jddd|dd�}tjdddgdddgddd�}tddgdd�}tjddgddgddggtjd�}t |||d�}t	 
||¡ d S )Nr+   r,   r-   rZ   r[   r   rK   r   r   )rÝ   rÞ   ÚVrÝ   rS   rË  rÞ   Úcount)r9   r:   r   rQ   F©rw   rx   rB   r   r   rœ   rƒ   )r   rV   r   r   rÉ  r
   r1   rr  r¯   r<   r=   )r6   r;   rW   rX   r‰   rˆ   Úexpected_datarI   r   r   r   Útest_categorical_aggfunc#  s2    "ÿ    ÿ   ÿ"  ÿz'TestPivotTable.test_categorical_aggfuncc           	      C   sÖ   t dddgdddgdddgdœƒ}ddd	d
ddddddddg}|d  d¡j |¡|d< |jddd|dd�}tddgddd�}tj||ddd�}ddggddggd  }t |||d �}|rÆ|jdg }t	 
||¡ d S )!Nræ   rK  éÜ   ÚJanuaryrí   rî   )ÚSalesrj  ri  ÚFebruaryZMarchZAprilÚMayZJuneZJulyZAugustZ	SeptemberZOctoberZNovemberZDecemberrj  rS   rÒ  ri  rU   )r8   r9   r:   r;   rQ   r¯   )rB   r�   FrÍ  i@  r   r*   rƒ   )r   rV   r«   Zset_categoriesr   r
   r   rÉ  rè   r<   r=   )	r6   r;   rW   ÚmonthsrX   rˆ   r‰   rÎ  rI   r   r   r   Ú%test_categorical_pivot_index_ordering7  sV    ýÿôû   ÿ  ÿz4TestPivotTable.test_categorical_pivot_index_orderingc                 C   sB  t dddgdddgdddgd	œƒ}|jd
ddgtjd�}tjdddgdddggddgd�}t dddg|d
gd�}t ||¡ |jd
ddtjd�}t dtjtjgtjdtjgtjtjdggt	dddgdd�t	dddgdd�d�}t ||¡ |jd
dtjgd�}t dgd
gg¡}t dddgt	dddgdd�|d�}t ||¡ d S )Nr   r   rL   r-   r.   r/   r   r|   rM   rN   rP   rO   re   rq   rƒ   rp  r   rU   )
r   r   r1   rU   r   r   r<   r=   ÚNaNr
   )r6   rW   rX   rt   rI   r   r   r   Útest_pivot_table_not_seriesc  s     ""&ý"z*TestPivotTable.test_pivot_table_not_seriesc                 C   sZ   d}t ddddgiƒ}t|dgtd|d�}tddd|gddd	�}t |d
�}t ||¡ d S )Nu   Î”Î¿ÎºÎ¹Î¼Î®r$   r   rK   r   T)r9   rQ   rž   r/  r  r·  ry   )r   r   r>   r
   r<   r=   )r6   ÚgreekÚframerG   r9   rI   r   r   r   Útest_pivot_margins_name_unicode  s        ÿ
z.TestPivotTable.test_pivot_margins_name_unicodec                 C   sB  t dddddddddddgdddddddddddgtdƒdœƒ}t|ddd	d
�}tdgddggddgddggd dgd�}t dddœdddœdœ|d� d¡}t ||¡ t|ddd	dgd
�}td	dgdgddggddddgddddgddddggd d dgd�}t dddœdddœdddœdddœdœ|d� d¡}t ||¡ d S )Nr$   r%   r&   r'   r*   r}   r+   r,   rU   rp  r-   r   r   r  rß   r;  )r%   r$   r�   rá   ))r-   r&   )r-   r'   r„   rE   ç      @rÉ   r„  g«ªªªªª@))rE   r-   r&   )rE   r-   r'   )rU   r-   r&   )rU   r-   r'   )r   r†   r   r   rO  r<   r=   )r6   r4   rX   rQ  rI   r   r   r   Útest_pivot_string_as_funcŠ  st    õõåÿ   ÿþý ýüùø	z(TestPivotTable.test_pivot_string_as_funcz
f, f_numpyrE   rÙ   c              	   C   sR   d}t jt|d��* t| jdd|d�}t| jdd|d�}W 5 Q R X t  ||¡ d S )Nrb   rc   r+   r,   rp  )r<   rf   rg   r   r4   r=   )r6   r·   Zf_numpyri   rX   rI   r   r   r   Útest_pivot_string_func_vs_funcÈ  s
    z-TestPivotTable.test_pivot_string_func_vs_funcc                 C   sž   G dd„ dt jƒ}| ¡ �z}| t d|¡ tt d¡t d¡ddœƒ}d}tjt	|d��2 t
jtd	d�� |jd
dddd� W 5 Q R X W 5 Q R X W 5 Q R X d S )Nc                       s"   e Zd Zddœ‡ fdd„Z‡  ZS )zSTestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstackerN)Úreturnc                    s   t ƒ j||Ž tdƒ‚d S )NúDon't compute final result.)ÚsuperÚ__init__Ú	Exception)r6   Ú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 generaterc   rà  rî  rï  rÌ  r“  )Úreshape_librí  ÚcontextÚsetattrr   r1   r¡   r<   rf   r   r   r!  rã  r   )r6   Zmonkeypatchrì  rt   rW   ri   r   r   r   Ú-test_pivot_number_of_levels_larger_than_int32Ý  s    
ÿ   ÿz<TestPivotTable.test_pivot_number_of_levels_larger_than_int32c           
      C   sÊ   t dddgdddgdddgdœƒ}dd	„ }d
d„ }dd„ }t|d|||g|d�}ddtjtjddgddtjtjddgg}tjdddgddggd dgd�}t |ddg|d�}	|rº|	jdd�}	t ||	¡ d S )NÚappleÚpeachr   rK   r�   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   )rU   r¦   r   r   r   Úret_sum  s    z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumc                 S   s   t jS r   )r1   r”   r¦   r   r   r   Úret_none  s    z@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_nonerö  ©r:   rQ   r   r   r;  rú  rû  rù  rq   r÷  rø  rƒ   r:   rÒ   )	r   r   r1   r”   r   Zfrom_productr   r<   r=   )
r6   r   rW   rù  rú  rû  rX   r4   r¿   rI   r   r   r   Útest_pivot_table_aggfunc_dropnaô  s0    ýÿ   ÿ(þz.TestPivotTable.test_pivot_table_aggfunc_dropnac                 C   s�   t dddgdtjdgdtjtjgdœƒ}t|dtj|d�}d	tjgdtjgg}tddgdd
�}t |ddg|d�}|r€|jdd�}t ||¡ d S )Nr&   r'   r   rK   r   )r+   r]   r^   r+   rü  r²   r   r]   r^   rƒ   r:   rÒ   )	r   r1   r”   r   rE   r
   r   r<   r=   )r6   r   rW   rX   r4   r¿   rI   r   r   r   Ú&test_pivot_table_aggfunc_scalar_dropna  s    "ÿz5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnac              	   C   sz   t dddddgdddddgdd	d	dd	gd d d d d gd
œƒ}|jdddtjd�}t tg ddd�d�}d|j_t ||¡ d S )NrK   r   rL   r€   r�   r‚   r|   Úpr  )r+   Úidr-   r.   r+   r.   r   r“  r¯   r·  ry   )	r   r   r1   r÷  r
   r:   rB   r<   r=   rÄ  r   r   r   Útest_pivot_table_empty_aggfunc(  s    üÿz-TestPivotTable.test_pivot_table_empty_aggfuncc              	   C   s`   dd„ }t ddddgddddgddddgd	œƒ}tjtd
d�� |jd
dd|d� W 5 Q R X d S )Nc                 S   s
   t  | ¡S r   )r1   rE   )Zarrr   r   r   rD   9  s    z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.aggr   r   r    rá   r˜  é(   )r¨  r©  ÚZZ
notpresentrc   r¨  r©  )rQ   )r   r   r!  r)  r   )r6   rD   r$   r   r   r   Ú!test_pivot_table_no_column_raises7  s    (z0TestPivotTable.test_pivot_table_no_column_raisesc                 C   s:  t dddddddddg	dddddddddg	dddddddddg	dddd	d	d
dddg	dd
dddddddg	dœƒ}t|ddgddgtjtttjgdœd�}t ddddg¡}tjddddgddgd�}t d d!d"d#gd d!d$d%gd&d'd(d)gd*d#d+d&gg¡}t |||d,�}|d  	tj
¡|d< |d  	tj
¡|d< t ||¡ d S )-Nr$   r%   r&   r'   r@  rA  r   rK   r   r   rL   r€   r�   r‚   r|   rB  r.   r/   r+   r-   r{  )r8   r9   rQ   )r.   rE   )r/   r¸  )r/   rE   )r/   r
  )r%   rA  )r%   r@  )r$   rA  )r$   r@  rq   r9  g      "@g      @ç      @g      !@r:  r�   rÜ  r´   r‘   g["8ªªª@g.UUU@rT  )r   r   r1   rE   r
  r¸  r   rr   rr  rV   r¯   r<   r=   )r6   rW   rG   ra   r9   ÚvalsrI   r   r   r   Ú0test_pivot_table_multiindex_columns_doctest_case@  sR    ÷ñÿü
ÿ
þ



üÿz?TestPivotTable.test_pivot_table_multiindex_columns_doctest_casec                 C   s¢   t dddgdddgddd	gd
d
dgdœƒ}|jddgddddd�}t dtjgdtjgtjd	ggtd
dgdd�tjdddgdddggddgd�d�}t ||¡ d S )NZd1Zd4Zd3rZ   r[   r\   é   rF  é"   Z2018Z2019)rZ   r¿   Únumru  r¿   ru  r
  rU   F)r9   r:   r8   rQ   Úsortr   rq   rT  )	r   r   r1   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é­   é¶   é/   rH  )Ú	firstnameÚlastnameÚheightÚager  r  r  r  F)r9   r8   r  )r  r  )r  r  rq   rT  )r   r   r   rr   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 dddgdddgdddgddd	ggƒ}d
ddg|_|jd
dddddd�}t ddddgddd	dgddd	d
ggƒ}ddddg|_dddg|_d|j_d
|j_t ||¡ d S )NrZ   r]   r   r^   rK   r[   r   r_   r   r    rá   r˜  rU   r   T)r9   r:   r8   rQ   rR   rž   r�   rL   rŸ   )r   r:   r   r9   rB   r<   r=   rÄ  r   r   r   Ú1test_pivot_table_with_margins_and_numeric_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 )NrZ   r[   rá   r  ZInt64rœ   )r]   r^   r  r]   r^   r  rE   )r9   r:   r8   rQ   r   r˜  r   ZFloat64)r9   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 5 Q R X t ddgddgddggt tdddg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   rK   z
2019-12-31g      $@r*   )rZ   r[   r   Úsalesr[   r   rZ   TrU   r0  r€  g      5@rŸ   r   r,  r·  )r  r+   )r  rŸ   rq   rƒ   )r   r   rÍ   r<   rf   r   r   r   r
   r  rr   r=   rÄ  r   r   r   Ú!test_pivot_table_datetime_warningÀ  s>    üÿ   ÿýþÿ
 ÿôz0TestPivotTable.test_pivot_table_datetime_warning)_rè  ré  rê  r7   rJ   rY   rk   ru   r{   rŠ   r—   r˜   rš   r£   r¥   r©   rª   r¸   r   r¿  ZparametrizerÃ   rÑ   rÔ   rÛ   rå   rì   Úfilterwarningsr   r  r  r  r1   rr  r   r
   r  r  r#  rÀ  r(  r*  r.  r2  r8  rE   r   rr   rC  rR  rS  rV  rX  ra  rg  rz  r|  r~  rƒ  r…  rŠ  r�  r—  rš  r§  rª  r†   r±  r²  r´  r¹  rÂ  rÃ  rÅ  rÊ  rÏ  rÖ  rØ  rÛ  rÝ  rU   rÙ   rÞ  Zslowró  rý  rþ  r  r  r  r  r  r  r  r  r   r   r   r   r#   )   s4  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Ô   ddddddgddddddgddddddgd	œ}t |ƒ}|jd
ddd	�}t ddddœddddœdœƒ}d\|j_|j_t ||¡ |jjd
ks’t‚|jjdks¢t‚|jd
dd�}|jjd
ksÀt‚|jjdksÐt‚d S )Nr+   r,   r-   ÚOneÚTworŽ   r�   r�   r½   r9   r:   r8   r}   ©r  r   rƒ   ©Nr:   )	r   rä   r9   rB   r:   r<   r=   rA   r?   )r6   r4   rÚ  ry  rI   r   r   r   Ú
test_pivotâ  s$    ý

þÿzTestPivot.test_pivotc              	   C   s\   t dddddgdddddgdddddgd	œƒ}tjtd
d�� |jdddd� W 5 Q R X d S )Nr%   r$   r&   r'   rŽ   r�   r�   r‘   râ   zduplicate entriesrc   rZ   r[   r\   r½   )r   r   r!  rŒ  rä   )r6   r4   r   r   r   Útest_pivot_duplicatesÿ  s    ýÿzTestPivot.test_pivot_duplicatesc                 C   s:   t dddgd�}|jdddd�}t ƒ }tj||dd� d S )NrZ   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+   r\  ÚA1)r,   r^  ZB2r&  r   r   rK   r½   r+   r,   r   )r   rä   Úreprr<   rs   r:   r
   )r6   rW   rX   r   r   r   Útest_pivot_integer_bug	  s    z TestPivot.test_pivot_integer_bugc                 C   s  ddddddgddddddgddddddgd	œ}t |ƒ d
¡}|jddd�}t ddddœddddœdœƒ}d\|j_|j_t ||¡ |jdd�}tj	ddgd dgd�|_d
|j_tj||dd� |jjd
ksÒt
‚|jjdksât
‚|j d¡|_|jddd�}d|j_t ||¡ d S )Nr+   r,   r-   r  r   rŽ   r�   r�   r½   r9   r:   r8   rã   r}   r!  rƒ   r„   )r8   r  )r8   r   rq   Fr+  r"  r   )r   r  rä   r9   rB   r:   r<   r=   r   rr   rA   r?   r­  )r6   r4   rÚ  rX   rI   r   r   r   Útest_pivot_index_none	  s4    ý

þÿ ÿzTestPivot.test_pivot_index_nonec                 C   s  t ddddddgddddddgddddddgddddddgddddddgdœƒ}d	d
g}dg}|j||d d�}t t ddddgdtjdtjgddddgtjdtjdgg¡tjddgd	d
gd�tjddgd dgd�d�}t ||¡ |d	d
gksòt	‚|dgk�st	‚d S )Nr   rK   r   r   rL   r€   r   )Úlev1Úlev2Úlev3Úlev4r8   r*  r+  r,  r½   rŽ   r�   r�   r�   rÜ  r‘   r  )r   r   rK   rK   )r   rK   r   rK   rq   )r-  r-  r8   r8   rƒ   )
r   rä   r1   rr  r”   r   r   r<   r=   rA   )r6   rW   r9   r:   rX   rI   r   r   r   Ú0test_pivot_index_list_values_none_immutable_args;	  s>    ûÿ	

üÿ ÿþôz:TestPivot.test_pivot_index_list_values_none_immutable_argsN)	rè  ré  rê  r#  r$  r%  r(  r)  r.  r   r   r   r   r  á  s   $r  )%r   r   r   Ú	itertoolsr   Únumpyr1   r   Zpandas.errorsr   Zpandasr   r   r   r	   r
   r   r   r   r   Zpandas._testingZ_testingr<   Zpandas.api.typesr   r‡   Zpandas.core.reshaper   rð  Zpandas.core.reshape.pivotr   Zfixturer   r†   r"   r#   r  r   r   r   r   Ú<module>   sB   (

.
                 I