a
    oÝEbá3 ã                   @   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   ú_/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/reshape/test_pivot.pyÚdropna   s    r   é   é   é   c                 C   s   | j \}}ttj |||¡ƒS r   )r   r   ÚpdÚIntervalIndexÚfrom_arrays)r   ÚclosedÚleftÚrightr   r   r   Úinterval_values#   s    
r"   c                   @   sH  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej dddd gfd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¡d.d/„ ƒZej d0¡ej d+d,d-g¡d1d2„ ƒƒZd3d4„ Zej d+d,d-g¡d5d6„ ƒZd7d8„ Zej d9d: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 d9d>d:ge d>d:g¡e d>d:gƒe!d>d:gƒg¡ej d+d,d-g¡d?d@„ ƒƒZ#dAdB„ Z$ejj%dCdD�ej d+d,d-g¡dEdF„ ƒƒZ&ej d+d,d-g¡dGdH„ ƒZ'dIdJ„ Z(ej dKdLej)g dM¢g dN¢ge!g dO¢dLdP�fdLdQgdRg dS¢g dT¢ge*j+g dU¢dLdQgdV�fg¡dWdX„ ƒZ,dYdZ„ Z-d[d\„ Z.ej d]g d^¢¡d_d`„ ƒZ/dadb„ Z0dcdd„ Z1dedf„ Z2dgdh„ Z3didj„ Z4dkdl„ Z5dmdn„ Z6dodp„ Z7dqdr„ Z8ej dsdtdudvdwdxdygg¡dzd{„ ƒZ9d|d}„ Z:d~d„ Z;d€d�„ Z<d‚dƒ„ Z=d„d…„ Z>d†d‡„ Z?dˆd‰„ Z@dŠd‹„ ZAdŒd�„ ZBdŽd�„ ZCd�d‘„ ZDd’d“„ ZEd”d•„ ZFd–d—„ ZGd˜d™„ ZHdšd›„ ZIej dœdRejJfd�ej)fdžejKfdRd�gejJej)gfdRdžgejJejKgfdžd�gejKej)gfg¡dŸd „ ƒZLejjMd¡d¢„ ƒZNd£d¤„ ZOd¥d¦„ ZPd§d¨„ ZQd©dª„ ZRd«d¬„ ZSd­d®„ ZTd¯d°„ ZUdwS )±ÚTestPivotTablec              	   C   s@   t g d¢g d¢g d¢tj d¡tj d¡tj d¡dœƒ| _d S )N©Úfoor%   r%   r%   Úbarr&   r&   r&   r%   r%   r%   ©Úoner(   r(   Útwor(   r(   r(   r)   r)   r)   r(   )Údullr*   Úshinyr*   r*   r+   r+   r*   r+   r+   r+   é   )ÚAÚBÚCÚDÚEÚF)r   ÚnpÚrandomÚrandnÚdata)ÚselfÚmethodr   r   r   Úsetup_method*   s    


ÖÿzTestPivotTable.setup_methodc                 C   sì   ddg}d}t | jd|||d�}| jj d|||d�}t ||¡ t | jd||d� t|ƒdkrt|jjt|ƒksˆJ ‚n|jj|d ksˆJ ‚t|ƒdkr¦|j	j|ksºJ ‚n|j	j|d ksºJ ‚| j 
||g ¡d  tj¡ ¡ }t ||¡ d S )	Nr-   r.   r/   r0   )ÚvaluesÚindexÚcolumnsÚobserved)r:   r;   r=   r   r   )r   r6   ÚtmÚassert_frame_equalÚlenr;   ÚnamesÚtupleÚnamer<   ÚgroupbyÚaggr3   ÚmeanÚunstack)r7   r=   r;   r<   ÚtableÚtable2Úexpectedr   r   r   Útest_pivot_tableZ   s$    ÿÿ"zTestPivotTable.test_pivot_tablec                 C   s’   t tdƒtdƒg d¢dœƒ}|jdddtjdd	�}|j d
¡|_|j d
¡|_|j d
¡|_|j	 d
¡|_	|jdddtjd|d�}t
 ||¡ d S )NZabcdeZfghij©r   é   r   r   é   ©Úcol1Úcol2Úcol3rP   rR   rQ   r   )r;   r:   r<   ÚaggfuncÚ
fill_valueÚcategory)r;   r:   r<   rS   rT   r=   )r   Úlistr   r3   Úsumr;   Úastyper<   rP   rQ   r>   r?   )r7   r=   ÚdfrJ   Úresultr   r   r   Ú+test_pivot_table_categorical_observed_equalv   s&    ÿÿú	z:TestPivotTable.test_pivot_table_categorical_observed_equalc                 C   s€   t g d¢g d¢g d¢dœƒ}|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   rM   r   )ÚrowsÚcolsr:   rf   )r<   rS   ©r;   rS   r:   rF   )r   r   r3   rW   ÚTr>   r?   )r7   rY   Ú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g d¢ddgd�}t |j|¡ t |j|¡ d S )Ni`ê  i † iPÃ  i0u  )r   r   rM   r   r-   r.   r/   i[ i] i\ i^ r]   r^   r_   Údi€„ i ¡ i@B )ÚamountÚcustomerÚmonthr   Úquantityro   rn   rm   r   F)r   ))r-   r]   )r-   r^   )r-   r_   )r-   rk   )r.   r]   )r.   r^   )r.   r_   )r.   rk   )r/   r]   )r/   r^   )r/   r_   )r/   rk   ©rA   )r   r   r   Úfrom_tuplesr>   Úassert_index_equalr<   r;   )r7   rY   Zpv_colZpv_indÚmr   r   r   Útest_pivot_table_dropna�   s(    ûÿ	ÿÿñz&TestPivotTable.test_pivot_table_dropnac                 C   sŽ   t g d¢g d¢dd�}t g d¢g d¢dd�}t||g d¢dœƒ}t|d	d
dgdd�}tj||gd
dgd�}td	g d¢i|d�}t ||¡ d S )N©r]   r]   r^   r^   )r]   r^   rc   T©Ú
categoriesÚordered)r_   rk   r_   rk   )r_   rk   rb   ©r   rM   r   r   )r-   r.   r:   r:   r-   r.   )r:   r;   r   rp   ©r;   )r   r   r   r   r   r>   r?   )r7   Zcat1Úcat2rY   rZ   Z	exp_indexrJ   r   r   r   Útest_pivot_table_categoricalÂ   s    ÿÿz+TestPivotTable.test_pivot_table_categoricalc                 C   sÎ   g d¢}t g d¢g d¢tddƒdœƒ}|d  t|dd	�¡|d< |jd
dd|d�}tg d¢dd�}| t|dd	�¡}tg d¢d
d�}t g d¢g d¢g d¢g||d�}|s¾|jt|ƒd� d¡}t 	||¡ d S )N)r]   r^   r_   rk   )	r]   r]   r]   r^   r^   r^   r_   r_   r_   )	r   rM   r   r   rM   r   r   rM   r   r   é	   ©r-   r.   r/   r-   F©rx   r.   r/   )r;   r<   r:   r   r\   ©rC   rd   )r   r   é   )r   r   é   )rM   rN   é   ©r;   r<   ©r<   Úfloat)
r   ÚrangerX   ÚCDTr   r   Zreindexr   r>   r?   )r7   r   rw   rY   rZ   Úexpected_columnsÚexpected_indexrJ   r   r   r   Ú$test_pivot_table_dropna_categoricalsÑ   s(    ýÿýz3TestPivotTable.test_pivot_table_dropna_categoricalsc                 C   s  t ttjddddgddgdd�g d¢dœƒ}|jdd|d	�}t dd
dgittjddgddgdd�dd�d�}t ||¡ 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ÚlowÚhighTrv   )ç        ç      ð?ç       @ç      @ç      @©r-   r.   r-   r.   ©r;   r:   r   r�   r‘   r   r   r€   rz   )r    rŒ   r�   rŒ   r�   )rŒ   r�   r    rN   )rM   r   r   )r   r   rM   )r   r   r3   Únanr   r
   Z
from_codesr>   r?   r‡   rX   r†   )r7   r   rY   rZ   rJ   r   r   r   Ú%test_pivot_with_non_observable_dropnaí   sT    ýúÿ
ÿüþ
ýúÿ
ÿüþ	z4TestPivotTable.test_pivot_with_non_observable_dropnac                 C   sX   t |ddœƒ}|jdd|d�}t ddit| ¡ dd�d�}|sH| t¡}t ||¡ d S )Nr   r“   r-   r.   r”   r€   rz   )r   r   r
   ÚuniquerX   r†   r>   r?   )r7   r"   r   rY   rZ   rJ   r   r   r   Útest_pivot_with_interval_index"  s    
z-TestPivotTable.test_pivot_with_interval_indexc                 C   sª   t j g d¢g d¢¡}ttjdddtjd�g d¢t|dd	�jd
d�dœƒ}t	|dddddd�}|d }t
g d¢tt  dd¡t  dd¡dgdd�dtjd�}t ||¡ d S )N©r   r   r   r   ©r   r   rM   rM   r   r   éÿÿÿÿ©Údtype©r]   r^   r]   r^   Tr   F)Z	ascendingr~   r/   r.   r-   rW   )r;   r<   r:   rS   ÚmarginsÚAll)r   r‚   é
   r   rM   r€   )r;   rC   r�   )r   r   r   r   r3   ÚarangeZintpr   Zsort_valuesr   r   r
   ZIntervalr>   Úassert_series_equal)r7   Zordered_catrY   Z	pivot_tabrZ   rJ   r   r   r   Ú&test_pivot_with_interval_index_margins+  s(    ÿýÿ
ÿ üz5TestPivotTable.test_pivot_with_interval_index_marginsc                 C   s<   | j jd| j j| j jd�}| j jdddd�}t ||¡ d S )Nr0   r„   r-   r/   )r6   r   r-   r/   r>   r?   ©r7   rZ   rJ   r   r   r   Útest_pass_arrayE  s    zTestPivotTable.test_pass_arrayc                 C   sD   | j jddd„ | j jd�}| j jd| j jd dd�}t ||¡ d S )Nr0   c                 S   s   | d S )NrN   r   ©ra   r   r   r   Ú<lambda>K  ó    z3TestPivotTable.test_pass_function.<locals>.<lambda>r„   rN   r/   )r6   r   r/   r;   r>   r?   r¥   r   r   r   Útest_pass_functionJ  s    z!TestPivotTable.test_pass_functionc                 C   sJ   ddg}d}t | j||d�}| j ||g ¡ tj¡ ¡ }t ||¡ d S )Nr-   r.   r/   r„   )	r   r6   rD   rE   r3   rF   rG   r>   r?   )r7   r;   r<   rH   rJ   r   r   r   Útest_pivot_table_multipleO  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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	 
||¡ d S )N)ÚcatÚbatr¬   r­   ry   rž   )r]   ÚvÚir®   Úint64r]   r¯   r   )r:   r;   r<   rT   rS   rM   Úabr€   rz   )ç      ø?ç      @ç      @ç      @Úfloat64)r   Údtypesr   r3   rW   r   r�   r
   rV   r>   r£   rF   )r7   Úfrc   rZ   rJ   r   r   r   Útest_pivot_dtypesV  s4    ýÿÿ$ýÿÿ$z TestPivotTable.test_pivot_dtypeszcolumns,valuesÚbool1Úfloat1Úfloat2)r»   r¼   rº   Úbool2c                 C   sj   t jdt jd�}t||d |dk|dkdœƒ}| ¡ jd||d�}t|jƒ}d	d
„ |D ƒ}||ksfJ ‚d S )NrN   rœ   r�   rM   r   )r»   r¼   rº   r½   r;   ©r;   r<   r:   c                 S   s   i | ]}|t  d ¡“qS )r¶   )r3   r�   )Ú.0Úcolr   r   r   Ú
<dictcomp>Ž  r©   z=TestPivotTable.test_pivot_preserve_dtypes.<locals>.<dictcomp>)r3   r¢   r¶   r   Úreset_indexr   Údictr·   )r7   r<   r:   r®   rY   Zdf_resrZ   rJ   r   r   r   Útest_pivot_preserve_dtypesz  s    
ÿÿ
z)TestPivotTable.test_pivot_preserve_dtypesc                 C   s6  t  g d¢¡}tdg d¢i|d�}|j|jj|jjd�}t ddg¡}tdd	gd
t	j
ggddg|d�}t ||¡ tg d¢tdddd�dœ|d�}|j|jjtddd�d�}t dt  d¡fg¡}d dg|_tdd
gddg|d�}t ||¡ |jtdd�tddd�d�}tdgt jdgdd�|d�}t ||¡ d S )N)ú
2011-01-01z
2011-02-01ú
2011-01-02rÅ   rÆ   r-   rL   rz   r„   )r-   r   )r-   rM   r³   r’   r�   r   rM   rÅ   r0   rN   )ÚfreqÚperiods)r-   ÚdtrÉ   ÚM)ÚkeyrÇ   z
2011-01-31ç      
@©rÇ   r   z
2011-12-31)r   ÚDatetimeIndexr   r   r;   rn   Údayr   rq   r3   r•   r>   r?   r   r	   Ú	TimestamprA   )r7   ÚidxrY   ÚresZexp_columnsÚexpr   r   r   Útest_pivot_no_values‘  s4    ÿ þû
ÿÿz#TestPivotTable.test_pivot_no_valuesc                 C   sN   t | jddgdddgdd�}t | jjdgd	d
�dddgdd�}t ||¡ d S )Nr0   r1   r-   r.   r/   r   )r:   r;   r<   rT   r2   r   ©Úaxis)r;   r<   rT   )r   r6   Zdropr>   r?   r¥   r   r   r   Útest_pivot_multi_values²  s    ÿÿz&TestPivotTable.test_pivot_multi_valuesc                    s¨   ‡ fdd„}|t jt jgƒ}|t jƒ}|t jƒ}t||gddgdd�}t ||¡ ‡ fdd„}|t jt jgƒ}|t jƒ}|t jƒ}t||gddgdd�}t ||¡ d S )Nc                    s   t ˆ jddgddgd| d�S )Nr0   r1   r-   r.   r/   ©r:   r;   r<   rS   ©r   r6   ©Úfunc©r7   r   r   r¨   ¼  s   ÿz;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>rF   Ústdr   )ÚkeysrÖ   c                    s   t ˆ jddgddgd| dd�S )Nr0   r1   r-   r.   r/   T)r:   r;   r<   rS   rŸ   rÙ   rÚ   rÜ   r   r   r¨   Æ  s   ú)r3   rF   rÝ   r   r>   r?   )r7   r¸   rZ   ZmeansZstdsrJ   r   rÜ   r   Útest_pivot_multi_functions»  s    



z)TestPivotTable.test_pivot_multi_functionsr8   TFc           	      C   sÒ  t j}tdd|dgg d¢g d¢dœƒ}|r:| ddd	¡}nt |ddd	¡}t||d
|gd|||g|d||g|||dggt|dddgdd�tg d¢dd�d�}t ||¡ t | ddd	¡|j¡ tt	dddd�dt  
d¡ dœƒ}|d t d¡ |d< | |jd< |jd< | |jd< |jd< |�r6| ddd	¡}nt |ddd	¡}| ¡ j ¡ t|ƒk�sbJ ‚| ¡ D ].\}}|j|d |d f |d	 k�sjJ ‚�qj|�r°| ddd	¡}nt |ddd	¡}t ||j¡ d S )NZR1ZR2ZR4)ÚC1ÚC2ZC3ZC4)r¡   é   é   é   r\   r]   r^   r_   rã   r¡   râ   rä   r€   r„   z
2014-02-01r�   r0   )rÈ   rÇ   éd   )r]   r_   z
2014-02-02)r   r]   )r   r]   ©r   r^   )r   r^   )r3   r•   r   Úpivotr   r
   r>   r?   rh   r   r¢   rÐ   ÚlocZnotnar:   rW   r@   Ziterrows)	r7   r8   r•   rY   rZ   rJ   ÚpvÚ_Úrowr   r   r   Útest_pivot_index_with_nanÔ  sN    
ýÿ



üø
þÿ(z(TestPivotTable.test_pivot_index_with_nanz1ignore:Timestamp.freq is deprecated:FutureWarningc                 C   sÄ  t tdddddƒtdddddƒtdddddƒtdddddƒgtdddddƒtdddddƒtdddddƒtdddddƒgtjddd	�tjddd	�d
œƒ}|d  dd„ ¡|d< |d  dd„ ¡|d< tg d¢ƒ}tjddgd ddd�}t 	||g¡}t g d¢g d¢gtjddgddd�|d�}|�r4|j
ddd�}ntj
|ddd�}t ||¡ t ddgddggtjddgddd�tjddgddd�d�}|�r¢|j
dddd�}ntj
|dddd�}t ||¡ d S )NéÝ  r   r}   r   rM   éÞ  r   r°   rœ   )Údt1Údt2Údata1Údata2rï   c                 S   s   t j| dd�S ©Nú
US/Pacific©Útz©r   rÐ   ©rk   r   r   r   r¨   !  r©   z3TestPivotTable.test_pivot_with_tz.<locals>.<lambda>rð   c                 S   s   t j| dd�S ©Nú
Asia/Tokyorõ   r÷   rø   r   r   r   r¨   "  r©   ©rñ   rñ   rò   rò   z2014/01/01 09:00z2014/01/02 09:00rú   )rC   rö   ©r   rM   r   rM   ©r   r   r   r   z2013/01/01 09:00z2013/01/02 09:00rô   r„   r   rñ   r¾   )r   r   r3   r¢   Úapplyr
   r   rÎ   r   r   rç   r>   r?   ©r7   r8   rY   Úexp_col1Úexp_col2Úexp_colrJ   ré   r   r   r   Útest_pivot_with_tz
  s\    üüòÿÿ
ÿû
ÿ
ÿû
z!TestPivotTable.test_pivot_with_tzc              
   C   s  t dtjddd�dœdtjddd�dœdtjddd�dœdtjddd�dœdtjd	dd�dœgƒ}| d
¡ ¡ }|j dd„ ¡}t| d
¡ ¡ d
dg|gtj	d�}t tjddd�tjddd�ggt
dgdd�tjtjddd�tjddd�gd
d�d�}t ||¡ d S )NZaaz2016-08-12 13:00:00-0700rô   rõ   )ÚuidÚtsz2016-08-12 08:00:00-0700z2016-08-12 14:00:00-0700z2016-08-25 11:00:00-0700z2016-08-25 13:00:00-0700r  c                 S   s   | j ddddd�S )Nr   )ÚhourÚminuteÚsecondÚmicrosecond)Úreplacer§   r   r   r   r¨   c  r©   z8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>r  rØ   r€   z2016-08-12 00:00:00z2016-08-25 00:00:00r„   )r   r   rÐ   Ú	set_indexrÂ   r  Úmapr   r3   Úminr
   rÎ   r>   r?   )r7   rY   ZminsrZ   rJ   r   r   r   Útest_pivot_tz_in_valuesG  sR    þþþþþïÿûþÿþûøz&TestPivotTable.test_pivot_tz_in_valuesc              	   C   sv  t t dd¡t dd¡t dd¡t dd¡gt dd¡t dd¡t dd¡t dd¡gtjddd	�tjddd	�d
œƒ}tg d¢ƒ}tjddgd ddd�}t ||g¡}t g d¢g d¢gtjddgddd�|d�}|ræ|j	ddd�}ntj	|ddd�}t
 ||¡ t ddgddggtjddgddd�tjddgddd�d�}|�rT|j	dddd�}ntj	|dddd�}t
 ||¡ d S )Nz
2013-01-01r0   z
2013-01-02z2013-01rÊ   z2013-02r   r°   rœ   )Úp1Úp2rñ   rò   rû   rM   r  )rC   rÇ   rü   rý   r  r„   r   r   r   rñ   r¾   )r   r   ÚPeriodr3   r¢   r
   ZPeriodIndexr   r   rç   r>   r?   rÿ   r   r   r   Útest_pivot_periods~  sH    



ü



üòÿýýz!TestPivotTable.test_pivot_periodsc                 C   sŠ   t g d¢t d¡t d¡t d¡t d¡gddœƒ}t dtg d¢dd�tt d¡t d¡d	gd
d�d�}|jdd
ddd�}t ||¡ d S )Nrš   Z2019Q1Z2019Q2r�   )r]   r^   ra   )r   rM   r    r]   r€   r    r^   )r6   r;   r<   ra   T)r;   r<   r:   rŸ   )r   r   r  r
   r   r>   r?   )r7   rY   rJ   rZ   r   r   r   Útest_pivot_periods_with_margins¬  s"    üøÿýz.TestPivotTable.test_pivot_periods_with_marginsr:   ÚbazÚzooc           	      C   s´   t g d¢g d¢g d¢g d¢dœƒ}|r8|jdd|d�}ntj|dd|d�}g d	¢g d
¢g}tddgdd�}tddgg d¢gg d¢g d¢gd dgd�}t |||dd�}t ||¡ d S )N©r(   r(   r(   r)   r)   r)   ©r-   r.   r/   r-   r.   r/   ©r   rM   r   r   rN   r�   ©ra   rb   rc   ÚqÚwÚt©r%   r&   r  r  r%   r&   r¾   )r   rM   r   ra   rb   rc   )r   rN   r�   r  r  r  r(   r)   ©r6   rC   r  r  r~   )r   r   r   r   r   r   )r   r   rM   r   r   rM   ©ÚlevelsÚcodesrA   Úobject©r6   r;   r<   r�   )r   rç   r   r
   r   r>   r?   ©	r7   r:   r8   rY   rZ   r6   r;   r<   rJ   r   r   r   Ú test_pivot_with_list_like_valuesÄ  s&    üÿ	ýz/TestPivotTable.test_pivot_with_list_like_valuesr&   c           	   	   C   sü   t g d¢g d¢g d¢g d¢dœƒ}|r8|jdd|d�}ntj|dd|d�}tjd	tjd
gtjdtjdgtjdtjdgd	tjdtjgdtjdtjgdtjdtjgg}tg d¢dd�}tddgddggg d¢g d¢gd dgd�}t |||dd�}t ||¡ d S )Nr  r  r  r  r  r  r%   r¾   r-   r   r/   r�   r.   rN   r   rM   r   )r  r  r  ra   rb   rc   r  r&   r  r(   r)   r™   ©r   r   r   r   r  r"  r#  )	r   rç   r   r3   r•   r
   r   r>   r?   r$  r   r   r   Ú%test_pivot_with_list_like_values_nansè  s2    üÿ	úýz4TestPivotTable.test_pivot_with_list_like_values_nansc                 C   s`   t g d¢g d¢g d¢dœƒ}d}tjt|d�� |jddd� W d   ƒ n1 sR0    Y  d S )	Nr\   rd   rO   z0pivot\(\) missing 1 required argument: 'columns'©ÚmatchrP   rR   )r;   r:   )r   ÚpytestÚraisesÚ	TypeErrorrç   )r7   rY   Ú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   rM   r   r   rN   ©r6   )r(   r-   r   ra   )r(   r.   rM   rb   )r(   r/   r   rc   )r)   r-   r   r  )r)   r.   rN   r  )r)   r/   r�   r  r&   r  Úfirstr  r™   r&  )r   r!  r"  r#  )r&   r3  )r&   r  )r  r3  r¾   r   r   r(   r)   rz   rM   rN   r   r�   r~   )r
   r   r   rç   r   r   r>   r?   )r7   r8   r;   r6   r<   rY   rZ   rJ   r   r   r   Útest_pivot_with_multiindex  s>    úþýüýz)TestPivotTable.test_pivot_with_multiindexc                 C   s|   t g d¢g d¢g d¢g d¢dœƒ}tjtdd��8 |rH|jdd	d
d� ntj|dd	d
d� W d   ƒ n1 sn0    Y  d S )Nr  r  r  r  r  z^\('bar', 'baz'\)$r(  r  r%   )r&   r  r¾   )r   r*  r+  ÚKeyErrorrç   r   )r7   r8   rY   r   r   r   Útest_pivot_with_tuple_of_valuesD  s    üÿz.TestPivotTable.test_pivot_with_tuple_of_valuesc                    sP  ddgdgdf‡ fdd„	}ˆ j jdddgddtjd	�}||dƒ ˆ j jdddgddtjd
d�}||dd
d� ˆ j jddgddtjd�}|jjd D ]}||| |ƒ q’dd„ ˆ j jD ƒˆ j _ˆ j jddgdtjd�}|jD ](}|jd|f }|ˆ j |  ¡ ksÚJ ‚qÚˆ j jddgddd�}dD ],}|jd|f }|ˆ j |  ¡ k�sJ ‚�qd S )Nr-   r.   r/   r    c                    sÐ   | j | jd d… |f }ˆ j |¡|  ¡ }tj||dd� |j|ksJJ ‚|  ¡ } | j |df j	d d… }ˆ j |¡|  ¡ }tj||dd� |j|dfks J ‚| j |df|f }	ˆ j|  ¡ }
|	|
ksÌJ ‚d S )Nr›   F©Zcheck_namesÚ )
rè   r;   r6   rD   rF   r>   r£   rC   Z
sort_indexZiloc)rZ   Z
values_colr;   r<   Úmargins_colZcol_marginsZexpected_col_marginsZindex_marginsZexpected_ix_marginsZgrand_total_marginsZexpected_total_marginsrÜ   r   r   Ú_check_outputW  s    ÿz2TestPivotTable.test_margins.<locals>._check_outputr0   T)r:   r;   r<   rŸ   rS   ZTotals)r:   r;   r<   rŸ   rS   Úmargins_name)r9  )r;   r<   rŸ   rS   r   c                 S   s   g | ]}|d  ‘qS )rM   r   )r¿   Úkr   r   r   Ú
<listcomp>‡  r©   z/TestPivotTable.test_margins.<locals>.<listcomp>ZAAÚBB)r;   rŸ   rS   ©r    r8  rF   )ZDDZEEZFF)r6   r   r3   rF   r<   r   rè   )r7   r:  rZ   rH   Z	value_colZtotalsÚitemr   rÜ   r   Útest_marginsV  s:    ÿÿ
úÿ
zTestPivotTable.test_marginsz*columns, aggfunc, values, expected_columnsr-   )ç      @rB  çš™™™™™@rC  )ç       @rD  çš™™™™™@rE  )r&   r    r%   r    r€   r.   rW   )r}   é   é   rN   r�   r,   )é   é   é    r,   r,   rG  ))r&   r(   )r&   r)   )r&   r    )r%   r(   )r%   r)   )r%   r    rp   c                 C   s^   t g d¢g d¢g d¢g d¢g 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ÚlargerO  rN  rN  rO  rN  rN  rO  ©	r   rM   rM   r   r   r   rN   r�   r‚   ©	rM   r   rN   rN   r�   r�   rƒ   r}   r}   ©r-   r.   r/   r0   r1   T)r<   rŸ   rS   r0   r1   r„   ©r   r   r
   r>   r?   )r7   r<   rS   r:   r‰   rY   rZ   rJ   r   r   r   Ú%test_margin_with_only_columns_defined’  s    ñÿz4TestPivotTable.test_margin_with_only_columns_definedc                 C   sÄ   | j  ¡ }t t|ƒd ¡ t|ƒd¡ d¡|g d¢< ttddgddgƒƒdg }t	j
|d	d
�}tg d¢g d¢dœ|d�jddd�}|d |d  |d< |jdddgddtjdd�}t ||¡ d S )Nr   Úi8)r0   r1   r2   r&   r%   r(   r)   r?  r“   rp   )é   é   r   r}   é-   )é!   r   é$   é3   éx   ©r*   r+   rz   r/   r   rÕ   r*   r+   r    r0   r-   r.   Tr   ©r:   r;   r<   rŸ   rS   rT   )r6   Úcopyr3   r¢   r@   r   rX   rV   r   r   rq   r   Úrename_axisr   rW   r>   r?   )r7   rY   Úmi_valÚmirJ   rZ   r   r   r   Útest_margins_dtypeÊ  s&    
,ÿþú	z!TestPivotTable.test_margins_dtypec                 C   sŽ   t tddgddgƒƒdg }tj|dd�}tg d¢g d	¢d
œ|d�jddd�}|d |d  |d< | jjdddgddtdd�}t	 
||¡ d S )Nr&   r%   r(   r)   r?  r“   rp   )r   r   rM   r   rN   )rM   r   rM   rM   r�   r]  rz   r/   r   rÕ   r*   r+   r    r0   r-   r.   Tr   r^  )rV   r   r   rq   r   r`  r6   r   r@   r>   r?   )r7   ra  rb  rJ   rZ   r   r   r   Útest_margins_dtype_lenâ  s"    ÿþú	z%TestPivotTable.test_margins_dtype_lenrf   ))r   rM   )r]   r^   ræ   )r]   r   c                 C   sn   t |d g d¢|d g d¢dg d¢iƒ}|jd|d�}t g d¢gtjg d¢|d�tdgƒd	�}t ||¡ d S )
Nr   rd   r   r®   )r   rN   r�   )r:   r<   ))r   r   )rM   rM   )r   r   rp   ©r<   r;   )r   r   r   rq   r
   r>   r?   )r7   rf   Údf2rZ   rJ   r   r   r   Ú test_pivot_table_multiindex_onlyõ  s    (ýz/TestPivotTable.test_pivot_table_multiindex_onlyc                 C   sZ   t dddd�}ttj d¡tj d¡|dœƒ}|jddgdd	�}|jjd
  |¡sVJ ‚d S )Nz
2016-01-01r   zEurope/Amsterdam)rÈ   rö   r~   r.   r/   F)r;   r   r   )	r   r   r3   r4   r5   r   r;   r   Úequals)r7   ZdtirY   rZ   r   r   r   Útest_pivot_table_retains_tz  s     z*TestPivotTable.test_pivot_table_retains_tzc                    sŽ   t j‰ ttddgg d¢ddg‡ fdd„tdƒD ƒd	gƒƒ}t|ƒ}|jd
g d¢dgd�}|jtd�}|jdg d¢dgd�}t	j
||dd� d S )Nr%   r&   r~   Úx1Zx2c                    s   g | ]}ˆ t |ƒ ‘qS r   )r   )r¿   r¯   rø   r   r   r=    r©   z=TestPivotTable.test_pivot_integer_columns.<locals>.<listcomp>rä   r�   r   )r   r   r   rM   )r:   r;   r<   r…   Ú4)Ú0Ú1Ú3Ú2Fr7  )r   r  rV   r   r‡   r   r   ÚrenameÚstrr>   r?   )r7   r6   rY   rH   rf  rI   r   rø   r   Útest_pivot_integer_columns  s    ûÿ	z)TestPivotTable.test_pivot_integer_columnsc                 C   s’   t g d¢d g d¢d dgd dgd  d tj d¡dœƒ}|jd	d
ddgd�}| g d¢¡d	  ¡ }| d¡ d¡jddd�}t	 
||¡ d S )N)r]   r]   r]   r]   r^   r^   r^   r^   rM   )r   r   r   r   r   r   r   r   r%   r   r&   é   )r]   r^   r_   Úvaluert  r]   r^   r_   r„   r\   r   Úall)rÖ   Úhow)r   r3   r4   r5   r   rD   rF   rG   r   r>   r?   )r7   r6   rH   ÚgroupedrJ   r   r   r   Útest_pivot_no_level_overlap   s    


üÿ	z*TestPivotTable.test_pivot_no_level_overlapc           
   
   C   s0  d}t  dtfdtfdtfdtfdtfdtfdtfg¡}t jg d	¢dtfdtfgd
�}t j||d
�}t j dt	|ƒ|¡}|d | |d< |d | |d< t
tdddƒtdddƒƒ}|t j dt	|ƒ|¡ }|j|d< |j|d< |j|d< t j dd|¡|d< t|ƒ}|jdddgg d¢dd�}	|	jj�s,J ‚d S )Ni'  r
   ÚSymbolÚYearÚMonthZDayÚQuantityZPrice)	)ÚSP500ZADBE)r}  ZNVDA)r}  ZORCL)ÚNDQ100ZAAPL)r~  ZMSFT)r~  ZGOOG)ÚFTSEzDGE.L)r  zTSCO.L)r  zGSK.Lrœ   r   iÐ  r   iÚ  rV  é   r’   r�   )r
   ry  rz  rF   ©r;   r<   rS   )r3   r�   r"  Úintr†   ÚarrayÚemptyr4   Úrandintr@   r   r   Úyearrn   rÏ   Z	lognormalr   r   r<   Zis_monotonic)
r7   Únr�   ZproductsÚitemsZiproductZdrÚdatesrY   Úpivotedr   r   r   Útest_pivot_columns_lexsorted2  sB    ùÿô


üz+TestPivotTable.test_pivot_columns_lexsortedc                 C   sL   dgdgdœ}| j  ddg¡ |¡ d¡}| j jdd|d�}t ||¡ d S )NrÝ   rW   ©r0   r1   r-   r.   r�  )r6   rD   rE   rG   r   r>   r?   )r7   r¸   rJ   rZ   r   r   r   Útest_pivot_complex_aggfuncf  s    z)TestPivotTable.test_pivot_complex_aggfuncc                 C   sF   | j ddg jddgtdd�}| ¡ }t|d d… ƒ|d ksBJ ‚d S )Nr-   r.   T)r;   rS   rŸ   r›   )r6   r   r@   ÚtolistrW   )r7   rZ   Zresult_listr   r   r   Útest_margins_no_values_no_colsm  s
    
ÿz-TestPivotTable.test_margins_no_values_no_colsc                 C   s:   | j g d¢ jddgdtdd�}|j ¡ g d¢ks6J ‚d S )Nr~   r-   r.   r/   T©r;   r<   rS   rŸ   ©r‘   r�   r’   r‘   ç      &@©r6   r   r@   r    rŽ  ©r7   rZ   r   r   r   Útest_margins_no_values_two_rowsu  s    ÿz.TestPivotTable.test_margins_no_values_two_rowsc                 C   s6   | j ddg jddtdd�}|j ¡ g d¢ks2J ‚d S )Nr-   r.   Tr�  )r’   ç      @r’  r“  r”  r   r   r   Ú&test_margins_no_values_one_row_one_col}  s    ÿz5TestPivotTable.test_margins_no_values_one_row_one_colc                 C   sL   g d¢| j d< | j g d¢ jddgddgtdd�}|j ¡ g d	¢ksHJ ‚d S )
N)r]   r^   r_   rk   Úer¸   ÚgÚhr¯   Újr<  r0   ©r-   r.   r/   r0   r-   r.   r/   Tr�  r‘  r“  r”  r   r   r   Ú'test_margins_no_values_two_row_two_cols…  s
    ÿz6TestPivotTable.test_margins_no_values_two_row_two_colsÚmargin_namer%   r(   iš  Nr]   r^   c              	   C   sì   d|› d�}t jt|d��, t| jdddgdgd|d	� W d   ƒ n1 sL0    Y  t jt|d��, t| jddgddgd|d	� W d   ƒ n1 s–0    Y  t jt|d��* t| jddgdgd|d	� W d   ƒ n1 sÞ0    Y  d S )
NzConflicting name "z3" in margins|margins_name argument must be a stringr(  r0   r-   r.   r/   T)r:   r;   r<   rŸ   r;  )r*  r+  Ú
ValueErrorr   r6   )r7   rž  r-  r   r   r   Ú-test_pivot_table_with_margins_set_margin_nameŽ  s:    
ÿú$ú$úz<TestPivotTable.test_pivot_table_with_margins_set_margin_namec                 C   s>  t d ¡ d ¡ g d¢tdddƒtdddƒtdddƒtdddƒtdddƒtdddƒtdddƒtdddƒgd	œƒ d
¡}t tjg d¢dd� dd¡tjtdddƒgdd�d ¡ d�}d
|j	_
d|j_
t|tdd�ddtjd�}t ||¡ t|dtdd�dtjd�}t ||j¡ t t dtjdddtjg¡ dd¡tjtdddƒtdddƒgdd�d ¡ d�}d
|j	_
d|j_
|�r„|d  d¡|d< t|tdd�ddtjd�}t ||¡ t|dtdd�dtjd�}t ||j¡ | ¡ }t|tdd
d�ddtjd�}t ||¡ t|dtdd
d�dtjd�}t ||j¡ d}tjt|d��, t|tddd�ddtjd� W d   ƒ n1 �sr0    Y  tjt|d��, t|dtddd�dtjd� W d   ƒ n1 �s¾0    Y  | d
¡}t|tdd
d �ddtjd�}t ||¡ t|dtdd
d �dtjd�}t ||j¡ d!}tjt|d��, t|tddd �ddtjd� W d   ƒ n1 �sj0    Y  tjt|d��, t|dtddd �dtjd� W d   ƒ n1 �s¶0    Y  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d0gd�}d1|j_
t|td,d
d�td,d-d�gd1gdtjd�}t ||¡ t|d1gtd,d
d�td,d-d�gdtjd�}t ||j¡ d S )2NzA A A A A A A Bz$Carl Mark Carl Carl Joe Joe Joe Carl)r   r   rN   r   rƒ   r   r}   r   rí   r   r¡   rM   rV  )ÚBranchÚBuyerr|  ÚDater£  )r¡   rI  r   r°   rœ   r   r€  r-   rÍ   zCarl Joe Markr„   r¢  r|  ©r;   r<   r:   rS   r}   rI  r‚   Z6MSZCarl)rÇ   rË   z#'The grouper name foo is not found'r(  r%   )rÇ   ÚlevelzThe level foo is not validr,   rF  r   rN   rä   rH  r   râ   é   )r¡  r¢  r|  r£  ÚPayDayrÊ   r§  r�   rp   r.   r¡  )r   Úsplitr   r  r3   rƒ  r   r   rÎ   r;   rC   r<   r   r	   rW   r>   r?   rh   r•   rX   rÂ   r*  r+  r5  rŸ  r   rq   )r7   Zusing_array_managerrY   rJ   rZ   r-  ZtuplesrÑ   r   r   r   Útest_pivot_timegrouper´  sô   







øüÿðýûû ÿûûû
û
û
û&
û&	

û
û
û&
û&	øøòÿ

ûðÿí



üù	



üùâ(

ûú&ÿþûûûz%TestPivotTable.test_pivot_timegrouperc                 C   s†  g d¢}g d¢}t g d¢||tjddd�ddgd	 d
œƒ}|d  dd„ ¡|d< |d  dd„ ¡|d< tjg d¢ddd�}tddgƒ}tddgdd�}t ||g¡}t dd	gddgddgg||d�}t	|dgdgdgd�}	t
 |	|¡ tg d¢ƒ}tg d¢d ƒ}tjdd gd d!dd�}
t |||
g¡}t tjg d"¢g d#¢g d$¢gdd�||d�}t	|dgdgdd%gtjtjgd&�}	t
 |	|¡ d S )'N©ú2011-07-19 07:00:00ú2011-07-19 08:00:00ú2011-07-19 09:00:00r«  r¬  r­  ©ú2013-01-01 15:00:00r¯  r¯  ú2013-02-01 15:00:00r°  r°  ©r]   r]   r]   r^   r^   r^   r�   r°   rœ   r   rM   r   ©Úlabelrï   rð   Úvalue1Úvalue2rï   c                 S   s   t j| dd�S ró   r÷   rø   r   r   r   r¨   ä  r©   z7TestPivotTable.test_pivot_datetime_tz.<locals>.<lambda>rð   c                 S   s   t j| dd�S rù   r÷   rø   r   r   r   r¨   å  r©   )r«  r¬  r­  rô   )rö   rC   r´  r]   r^   r³  r€   r   r   rN   r„   r¾   )rW   rW   rW   rW   rF   rF   rF   rF   )r´  r´  rµ  rµ  r¯  r°  rú   )r   r   r   rM   r   r   r   rM   )r   r   rM   r   r   r   rM   r   )rM   rN   r   rM   rM   rN   r   rM   rµ  r¤  )r   r3   r¢   rþ   r   rÎ   r
   r   r   r   r>   r?   rƒ  rW   rF   )r7   Údates1Údates2rY   Úexp_idxr   r  r  rJ   rZ   Zexp_col3r   r   r   Útest_pivot_datetime_tzÊ  sd    
ûÿ	ý 
ýýúö
ûz%TestPivotTable.test_pivot_datetime_tzc              
   C   s(  g d¢}g d¢}t g d¢||tjddd�ddgd	 d
œƒ}|d  dd„ ¡|d< |d  dd„ ¡|d< t|d|d jjdd�}tddgdd�}t dd	gddgddgdœ|tg d¢dd�d�}t 	||¡ t||d jj
|d jjdd�}t dd	gddgddgdœtddgdd�tg d¢dd�d�}t 	||¡ t||d jjj|d jj|d jj
gdd�}tjg d¢ddgd	 gddgd�}t tjg d¢gdd�dg|d�}t 	||¡ t|t g d¢¡|d jj|d jj
gdd�}t t dd	dtjdtjgtjtjtjdtjdgg¡d d!g|d�}t 	||¡ d S )"Nrª  r®  r±  r�   r°   rœ   r   rM   r   r²  rï   c                 S   s
   t  | ¡S r   r÷   rø   r   r   r   r¨   ,  r©   z6TestPivotTable.test_pivot_dtaccessor.<locals>.<lambda>rð   c                 S   s
   t  | ¡S r   r÷   rø   r   r   r   r¨   -  r©   r³  r´  r¾   r]   r^   r€   r   r   rN   )r‚   rƒ   r}   r„   )r‚   r‚   rƒ   rƒ   r}   r}   rp   )r   r   r   r   rM   rN   rí   )ÚXrº  rº  rº  ÚYr»  rº  r»  )r   r3   r¢   rþ   r   rÉ   r  r
   r>   r?   rn   r†  r:   r   r   rƒ  r•   )r7   r¶  r·  rY   rZ   r¸  rJ   r  r   r   r   Útest_pivot_dtaccessor  st    
ûÿ	ÿýÿýüÿÿü*ÿûz$TestPivotTable.test_pivot_dtaccessorc                 C   s°   t dddd�}ttj t|ƒ¡|d�}tt|ƒ|jj	|jj
d�}|j d¡|_t |jj
¡}tdd	ƒD ]D}|||k }|jj	|_||  ¡ }tj||d
d� |j|ksfJ ‚qfd S )Nú1/1/2000ú
12/31/2004r0   rÍ   rz   r„   r   r   io  Fr7  )r   r   r3   r4   r5   r@   r   r   r;   r†  Z	dayofyearr<   Ú	droplevelZasarrayr‡   r   r>   r£   rC   )r7   Úrngr  ÚannualZdoyr¯   ÚsubsetrZ   r   r   r   Ú
test_dailyd  s    ÿ
zTestPivotTable.test_dailyc                 C   sª   t dddd�}ttj t|ƒ¡|d�}tt|ƒ|jj	|jj
d�}|j d¡|_|jj
}tdd	ƒD ]D}|||k }|jj	|_||  ¡ }tj||d
d� |j|ks`J ‚q`d S )Nr½  r¾  rÊ   rÍ   rz   r„   r   r   rF  Fr7  )r   r   r3   r4   r5   r@   r   r   r;   r†  rn   r<   r¿  r‡   r   r>   r£   rC   )r7   rÀ  r  rÁ  rn   r¯   rÂ  rZ   r   r   r   Útest_monthlyw  s    
zTestPivotTable.test_monthlyc                 C   s€   dddœ}t | jdgt| ¡ ƒ|d�}t | jdg| ¡ |d�}t ||¡ dd„ | ¡ D ƒ}t | jdg||d�}t ||¡ d S )NrW   rF   rŒ  r-   )r;   r:   rS   c                 s   s   | ]
}|V  qd S r   r   )r¿   rt  r   r   r   Ú	<genexpr>“  r©   zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>)r   r6   rV   rÞ   r>   r?   )r7   ZaggsZpivot_values_listZpivot_values_keysZagg_values_genZpivot_values_genr   r   r   Ú%test_pivot_table_with_iterator_values†  s    
ÿÿÿz4TestPivotTable.test_pivot_table_with_iterator_valuesc                 C   sœ   d}t g d¢g d¢g d¢dœƒ}|jddd|tjtgd	�}td
d|gddd�}dddd|fdddd|fg}tj|g d¢d�}t |j||d�}t	 
||¡ d S )NZWeekly)ÚbaconÚcheeserÇ  rÈ  )r³   rµ   gš™™™™™	@gffffff
@)rÊ   rÊ   rh   rh   )r@  ÚcostrÏ   r@  rÏ   T)r;   r<   rŸ   r;  rS   rÇ  rÈ  r"  ©r�   rC   )rF   rÉ  rÊ   )rF   rÉ  rh   rF   rÉ  )ÚmaxrÉ  rÊ   )rË  rÉ  rh   rË  )NNrÏ   rp   r„   )r   r   r3   rF   rË  r
   r   rq   r:   r>   r?   )r7   r;  ZcostsrH   ÚixZtupsrf   rJ   r   r   r   Ú/test_pivot_table_margins_name_with_aggfunc_list™  s2    ýÿûúz>TestPivotTable.test_pivot_table_margins_name_with_aggfunc_listc                 C   s¦   |r|j  tjjdd�¡ tt d¡t d¡d t d¡d dœƒ}tg d¢g d¢g d	¢gƒ}tg d
¢dd�|_	tg d
¢dd�|_
|jddd|dd�}t ||¡ d S )Nú1GH#17035 (np.mean of ints is casted back to ints)r/  rƒ   r   rM   r`   ©r�   r�   r²   ©rN   r�   rB  ©r   r   r´   ©r   r   r    rb   r€   rc   ra   T©r   rŸ   )ÚnodeÚ
add_markerr*  ÚmarkÚxfailr   r3   r¢   r
   r;   r<   r   r>   r?   ©r7   r=   r   rY   rJ   rH   r   r   r   Útest_categorical_margins·  s    ÿÿ$ÿz'TestPivotTable.test_categorical_marginsc                 C   sÂ   |r|j  tjjdd�¡ tt d¡t d¡d t d¡d dœƒ}tg d¢g d¢g d	¢gƒ}tg d
¢dd�|_	tg d
¢dd�|_
|j d¡|_|j d¡|_|jddd|dd�}t ||¡ d S )NrÎ  r/  rƒ   r   rM   r`   rÏ  rÐ  rÑ  rÒ  rb   r€   rc   rU   ra   TrÓ  )rÔ  rÕ  r*  rÖ  r×  r   r3   r¢   r
   r;   r<   rb   rX   rc   r   r>   r?   rØ  r   r   r   Ú!test_categorical_margins_categoryÊ  s     ÿÿ$ÿz0TestPivotTable.test_categorical_margins_categoryc                 C   sl   t g d¢g d¢g d¢g d¢dœƒ}t|ddd�}t g d	¢g d
¢g d¢dœtg d¢dd�d�}t ||¡ d S )N)rM   r   r�   rƒ   )r   r   rN   rƒ   )r   r   r   r�   )rº  rº  r»  r»  rœ  r0   T)r;   rŸ   )r   r‚   rN   )r³   g      @rµ   )rM   rN   r´   r~   )rº  r»  r    r€   rz   rS  )r7   r=   rY   rZ   rJ   r   r   r   Útest_margins_casted_to_floatÞ  s    üÿ	þz+TestPivotTable.test_margins_casted_to_floatc           	      C   sþ   t jdddt jg}t jddt jdg}tt|ddg|d�t|ddg|d�tddƒdœƒ}|jd	d
d|d�}tjddg|d
d�}tdt jgt jdgg|d�}ttddgddg|d�d	d�|_	t
 ||¡ |jd
d|d�}tddgg|tdgƒd�}t
 ||¡ d S )NrŒ   r�   r-   r.   rv   r   r�   )ÚInÚColÚValrÜ  rÝ  rÞ  )r;   r<   r:   r=   )rx   rC   r�   r‘   )r6   r<   r€   )r<   r:   r=   r´   )r6   r<   r;   )r3   r•   r   r   r‡   r   r   ÚCategoricalIndexr
   r;   r>   r?   )	r7   r=   rx   rÑ   rÀ   rY   rZ   Zexpected_colsrJ   r   r   r   Útest_pivot_with_categoricalð  s.    ýÿÿþÿz*TestPivotTable.test_pivot_with_categoricalc                 C   s¬   t g d¢g d¢g d¢dœƒ}|d  d¡|d< |jddd|d	d
�}tjg d¢g d¢ddd�}tddgdd�}tjddgddgddggtjd�}t |||d�}t	 
||¡ d S )N)r-   r.   r/   r/   ru   ry   )rà   rá   ÚVrà   rU   rá  rá   Úcount)r;   r<   r   rS   r~   F©rw   rx   rC   r]   r^   r€   r   r   rM   rœ   r„   )r   rX   r   r   rß  r
   r3   rƒ  r°   r>   r?   )r7   r=   rY   rZ   rŠ   r‰   Úexpected_datarJ   r   r   r   Útest_categorical_aggfunc  s     ÿ
ÿÿ"ÿz'TestPivotTable.test_categorical_aggfuncc           	      C   s¼   t g d¢g d¢g d¢dœƒ}g d¢}|d  d¡j |¡|d< |jddd	|d
d�}tddgd	dd�}tj||ddd�}ddggddggd  }t |||d�}|r¬|jdg }t	 
||¡ d S )N)rå   r\  éÜ   )ÚJanuaryrç  rç  )rí   rî   rí   )ÚSalesr{  rz  )rç  ÚFebruaryZMarchZAprilÚMayZJuneZJulyZAugustZ	SeptemberZOctoberZNovemberZDecemberr{  rU   rè  rz  rW   )r:   r;   r<   r=   rS   rí   rî   r°   )rC   r�   Frã  i@  r\  r   r,   r„   rç  )r   rX   r¬   Zset_categoriesr   r
   r   rß  rè   r>   r?   )	r7   r=   rY   ÚmonthsrZ   r‰   rŠ   rä  rJ   r   r   r   Ú%test_categorical_pivot_index_ordering'  s4    ýÿûÿÿz4TestPivotTable.test_categorical_pivot_index_orderingc                 C   s.  t g d¢g d¢g d¢dœƒ}|jdddgtjd�}tjg d¢g d¢gddgd	�}t g d¢|dgd
�}t ||¡ |jdddtjd�}t dtjtjgtjdtjgtjtjdggt	g d¢dd�t	g d¢dd�d
�}t ||¡ |jddtjgd�}t dgdgg¡}t g d¢t	g d¢dd�|d
�}t ||¡ d S )N)r   r   rN   )r/   r0   r1   )r   r   r}   rO   rP   rR   rQ   rg   rp   r„   r�  r   r   rN   r€   rW   )
r   r   r3   rW   r   r   r>   r?   ÚNaNr
   )r7   rY   rZ   rs   rJ   r   r   r   Útest_pivot_table_not_seriesS  s     &ýz*TestPivotTable.test_pivot_table_not_seriesc                 C   sX   d}t dg d¢iƒ}t|dgtd|d�}tddd|gd	dd
�}t |d�}t ||¡ d S )Nu   Î”Î¿ÎºÎ¹Î¼Î®r%   rd   T)r;   rS   rŸ   r;  r   rM   r   r"  rÊ  rz   )r   r   r@   r
   r>   r?   )r7   ÚgreekÚframerH   r;   rJ   r   r   r   Útest_pivot_margins_name_unicodeo  s    ÿ
z.TestPivotTable.test_pivot_margins_name_unicodec                 C   s  t g d¢g d¢tdƒdœƒ}t|dddd�}td	gd
dggddgddggd dgd�}t dddœdddœdœ|d� d¡}t ||¡ t|ddddgd�}tddgd	gd
dggg d¢g d¢g d¢gg d¢d�}t dddœdddœdddœdddœdœ|d� d¡}t ||¡ d S ) Nr$   r'   r,   r~   r-   r.   rW   r�  r/   r(   r)   r   r   r  râ   rF  )r&   r%   r‚   rä   ))r/   r(   )r/   r)   r…   rF   r™   )r   r   r   r   r&  )NNr.   ç      @rÌ   r–  g«ªªªªª@))rF   r/   r(   )rF   r/   r)   )rW   r/   r(   )rW   r/   r)   )r   r‡   r   r   r`  r>   r?   )r7   r6   rZ   rb  rJ   r   r   r   Útest_pivot_string_as_funcz  sD    åÿ  ÿþýýüùø	z(TestPivotTable.test_pivot_string_as_funcz
f, f_numpyrF   rÝ   c                 C   s4   t | jdd|d�}t | jdd|d�}t ||¡ d S )Nr-   r.   r�  )r   r6   r>   r?   )r7   r¸   Zf_numpyrZ   rJ   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��P t
jtd	d��" |jd
dddd� W d   ƒ n1 s�0    Y  W d   ƒ n1 s®0    Y  W d   ƒ n1 sÌ0    Y  d S )Nc                       s   e Zd Z‡ fdd„Z‡  ZS )zSTestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstackerc                    s   t ƒ j|i |¤Ž tdƒ‚d S )NúDon't compute final result.)ÚsuperÚ__init__Ú	Exception)r7   ÚargsÚkwargs©Ú	__class__r   r   r÷  Ï  s    z\TestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)Ú__name__Ú
__module__Ú__qualname__r÷  Ú__classcell__r   r   rû  r   ÚMockUnstackerÎ  s   r  Ú
_Unstackeri   r   )Úind1Úind2râ  z$The following operation may generater(  rõ  r  r  râ  r¤  )Úreshape_libr  ÚcontextÚsetattrr   r3   r¢   r>   Zassert_produces_warningr   r*  r+  rø  r   )r7   Zmonkeypatchr  rs   rY   r-  r   r   r   Ú-test_pivot_number_of_levels_larger_than_int32Ê  s    
ÿÿz<TestPivotTable.test_pivot_number_of_levels_larger_than_int32c           
      C   sÂ   t g d¢g d¢g d¢dœƒ}dd„ }dd„ }d	d
„ }t|d|||g|d�}ddtjtjddgddtjtjddgg}tjg d¢ddggd dgd�}t |ddg|d�}	|r²|	jdd�}	t ||	¡ d S )N)ÚappleÚpeachr	  )r   r   rM   )r‚   r�   r�   )ÚfruitÚsizeÚtastec                 S   s   dS )Nr   r   r§   r   r   r   Úret_oneë  s    z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_onec                 S   s   t | ƒS r   )rW   r§   r   r   r   Úret_sumî  s    z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumc                 S   s   t jS r   )r3   r•   r§   r   r   r   Úret_noneñ  s    z@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_noner  ©r<   rS   r   r   r   rF  r�   )r  r  r  r	  r
  rp   r  r  r„   r<   rÕ   )	r   r   r3   r•   r   Zfrom_productr   r>   r?   )
r7   r   rY   r  r  r  rZ   r6   rÀ   rJ   r   r   r   Útest_pivot_table_aggfunc_dropnaá  s*    ýÿÿ(þz.TestPivotTable.test_pivot_table_aggfunc_dropnac                 C   sŽ   t g d¢dtjdgdtjtjgdœƒ}t|dtj|d�}dtjgdtjgg}td	d
gdd�}t |ddg|d�}|r~|jdd�}t ||¡ d S )N)r(   r)   r(   r   rM   r   )r-   ra   rb   r-   r  r³   r(   r)   r€   ra   rb   r„   r<   rÕ   )	r   r3   r•   r   rF   r
   r   r>   r?   )r7   r   rY   rZ   r6   rÀ   rJ   r   r   r   Ú&test_pivot_table_aggfunc_scalar_dropna  s     ÿz5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnac                 C   sb   t g d¢g d¢g d¢g d¢dœƒ}|jdddtjd	�}t tg d
dd�d�}d|j_t ||¡ d S )N)rM   rM   r   r   rM   )rN   r�   r‚   rƒ   r}   )Úpr  r  r  r  )NNNNN)r-   Úidr/   r0   r-   r0   r  r¤  r°   rÊ  rz   )	r   r   r3   r  r
   r<   rC   r>   r?   ©r7   rY   rZ   rJ   r   r   r   Útest_pivot_table_empty_aggfunc  s    üÿz-TestPivotTable.test_pivot_table_empty_aggfuncc                 C   sh   dd„ }t g d¢g d¢g d¢dœƒ}tjtdd��" |jdd	d
|d� W d   ƒ n1 sZ0    Y  d S )Nc                 S   s
   t  | ¡S r   )r3   rF   )Zarrr   r   r   rE   &  s    z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.aggr™   r&  )r¡   rä   r¦  é(   )rº  r»  ÚZZ
notpresentr(  rº  r»  )rS   )r   r*  r+  r5  r   )r7   rE   r%   r   r   r   Ú!test_pivot_table_no_column_raises$  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 )NrK  rL  rM  rP  rQ  rR  r0   r1   r-   r/   rŒ  )r:   r;   rS   ))r0   rF   ©r1   rË  )r1   rF   ©r1   r  ))r&   rO  )r&   rN  )r%   rO  )r%   rN  rp   )rB  ç      "@g      @ç      @)rB  r  g      !@rD  )r�   rò  rµ   r’   )g["8ªªª@r  g.UUU@r�   re  r  r  )r   r   r3   rF   r  rË  r   rq   rƒ  rX   r°   r>   r?   )r7   rY   rH   rf   r;   ÚvalsrJ   r   r   r   Ú0test_pivot_table_multiindex_columns_doctest_case-  s@    ñÿüÿþüÿz?TestPivotTable.test_pivot_table_multiindex_columns_doctest_casec                 C   s–   t g d¢g d¢g d¢g d¢dœƒ}|jddgdd	d
dd�}t dtjgdtjgtjdggtddgdd�tjg d¢g d¢gddgd�d�}t ||¡ d S )N)Zd1Zd4Zd3r\   )é   rW  é"   )Ú2018r#  Ú2019)r]   rÀ   Únumr†  r]   rÀ   r†  r%  rW   F)r;   r<   r:   rS   Úsortr!  rW  r"  r#  r$  r€   rp   re  )	r   r   r3   r•   r
   r   r   r>   r?   r  r   r   r   Útest_pivot_table_sort_falsea  s$    üÿÿÿýz*TestPivotTable.test_pivot_table_sort_falsec                 C   sŽ   t g d¢g d¢g d¢g d¢gƒ}g d¢|_|jdddd	d
dd�}t g d¢g d¢g d¢gƒ}g d¢|_g d¢|_d|j_d|j_t ||¡ d S )N)r]   ra   r   )r]   rb   rM   )r^   rb   r   )r^   rc   r   )r¡   rä   r¦  r¡   rä   r¦  rW   r   T)r;   r<   r:   rS   rT   rŸ   )r   rM   r   r   )r   r   r   r‚   )r   rN   r   r¡   )ra   rb   rc   r    )r]   r^   r    )r   r<   r   r;   rC   r>   r?   r  r   r   r   Ú1test_pivot_table_with_margins_and_numeric_columnsw  s     
ÿ

z@TestPivotTable.test_pivot_table_with_margins_and_numeric_columns)Vrý  rþ  rÿ  r9   rK   r[   rj   rt   r|   r‹   r–   r˜   r¤   r¦   rª   r«   r¹   r*  rÖ  ZparametrizerÄ   rÔ   r×   rß   rì   Úfilterwarningsr  r  r  r  r3   rƒ  r   r
   r%  r'  r.  r×  r4  r6  rA  rF   r   rq   rT  rc  rd  rg  ri  rr  rx  r‹  r�  r�  r•  r—  r�  r   r©  r¹  r¼  rÃ  rÄ  rÆ  rÍ  rÙ  rÚ  rÛ  rà  rå  rì  rî  rñ  ró  rW   rÝ   rô  Zslowr  r  r  r  r  r   r'  r(  r   r   r   r   r#   )   s  0%5	$


ýþ
!	
5
;7
-

üþ	

üþ	!ÿ&
<ü÷üùþ

4	
%  GS#,>úþ

#	4r#   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú	TestPivotc                 C   s¼   g d¢g d¢g d¢dœ}t |ƒ}|jdddd�}t dd	d
dœdd	d
dœdœƒ}d\|j_|j_t ||¡ |jjdkszJ ‚|jjdksŠJ ‚|jddd�}|jjdks¨J ‚|jjdks¸J ‚d S )N©r-   r.   r/   r/   r.   r-   ©ÚOner-  r-  ÚTwor.  r.  ©r�   r�   r‘   r‘   r�   r�   r¾   r;   r<   r:   r�   r�   r‘   r~   ©r-  r.  r„   ©Nr<   )r   rç   r;   rC   r<   r>   r?   rA   )r7   r6   rð  rŠ  rJ   r   r   r   Ú
test_pivotŠ  s$    ý

þÿzTestPivot.test_pivotc                 C   s\   t g d¢g d¢g d¢dœƒ}tjtdd�� | ddd	¡ W d   ƒ n1 sN0    Y  d S )
N)r&   r&   r%   r%   r%   )r(   r)   r(   r(   r)   )r�   r�   r‘   r‘   r’   r\   zduplicate entriesr(  r]   r^   r_   )r   r*  r+  rŸ  rç   )r7   r6   r   r   r   Útest_pivot_duplicates§  s    ýÿzTestPivot.test_pivot_duplicatesc                 C   s6   t g d¢d�}| ddd¡}t ƒ }tj||dd� d S )Nr\   r…   r]   r^   r_   Fr7  )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-   rm  ÚA1)r.   ro  ZB2r2  r   r   rM   r¾   r-   r.   r€   )r   rç   Úreprr>   rr   r<   r
   )r7   rY   rZ   r   r   r   Útest_pivot_integer_bug¸  s    z TestPivot.test_pivot_integer_bugc                 C   sþ   g d¢g d¢g d¢dœ}t |ƒ d¡}|jddd�}t d	d
ddœd	d
ddœdœƒ}d\|j_|j_t ||¡ |jdd�}tj	ddgd dgd�|_d|j_tj||dd� |jjdksºJ ‚|jj
dksÊJ ‚|j d¡|_|jddd�}d|j_t ||¡ d S )Nr+  r,  r/  r¾   r;   r<   r:   )r<   r:   r�   r�   r‘   r~   r0  r„   r…   )r:   r-  )r:   r.  rp   Fr7  r1  r   )r   r  rç   r;   rC   r<   r>   r?   r   rq   rA   r¿  )r7   r6   rð  rZ   rJ   r   r   r   Útest_pivot_index_none¿  s2    ý

þÿÿzTestPivot.test_pivot_index_nonec              
   C   sÔ   t g d¢g d¢g d¢g d¢g d¢dœƒ}ddg}d	g}|j||d d
�}t t g d¢dtjdtjgg d¢tjdtjdgg¡tjddgddgd�tjddgd d	gd�d�}t ||¡ |ddgksÂJ ‚|d	gksÐJ ‚d S )N)r   r   r   rM   rM   rM   )r   r   rM   r   r   rM   )r   rM   r   rM   r   rM   r  r1  )Úlev1Úlev2Úlev3Úlev4r:   r9  r:  r;  r¾   )r�   r�   rŽ   r�   r‘   r�   )rò  r’   r’   r‘   r  rò  rš   )r   rM   r   rM   rp   )r<  r<  r:   r:   r„   )	r   rç   r3   rƒ  r•   r   r   r>   r?   )r7   rY   r;   r<   rZ   rJ   r   r   r   Ú0test_pivot_index_list_values_none_immutable_argsã  s<    ûÿ	üÿÿþôz:TestPivot.test_pivot_index_list_values_none_immutable_argsN)	rý  rþ  rÿ  r2  r3  r4  r7  r8  r=  r   r   r   r   r*  ‰  s   $r*  )%r   r   r   Ú	itertoolsr   Únumpyr3   r*  Zpandas.errorsr   Zpandasr   r   r   r	   r
   r   r   r   r   Zpandas._testingZ_testingr>   Zpandas.api.typesr   rˆ   Zpandas.core.reshaper   r  Zpandas.core.reshape.pivotr   Zfixturer   r‡   r"   r#   r*  r   r   r   r   Ú<module>   s@   (

.
                p