U
    ùQ”i1W ã                   @   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   úC/tmp/pip-unpacked-wheel-58ppya8e/pandas/tests/reshape/test_pivot.pyÚdropna   s    r   é   é   é   c                 C   s   | j \}}ttj |||¡ƒS r   )r   r   ÚpdÚIntervalIndexÚfrom_arrays)r   ÚclosedÚleftÚrightr   r   r   Úinterval_values#   s    
r#   c                   @   s*  e Zd Zejdd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej dd d!d"gfd 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 d,d-d.g¡d3d4„ ƒZd5d6„ Zej d,d-d.g¡d7d8„ ƒZd9d:„ 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;d@d<ge  !d@d<g¡e"d@d<gƒe#d@d<gƒg¡ej d,d-d.g¡dAdB„ ƒƒZ%dCdD„ Z&ejj'dEdF�ej d,d-d.g¡dGdH„ ƒƒZ(ej d,d-d.g¡dIdJ„ ƒZ)dKdLgdMgdNfdOdP„Z*dQdR„ Z+dSdT„ Z,ej dUdKe j-dVdVdWdWgdXdXdYdYgge#d@dNdZdNgdKd[�fdKdLgd\d]d^d_d`dadbgdcdddedbdbd_gge.j/dfdgdhdidjdkgdKdLgdl�fg¡dmdn„ ƒZ0dodp„ Z1dqdr„ Z2ej dsdtdudvdwg¡dxdy„ ƒZ3dzd{„ Z4d|d}„ Z5d~d„ Z6d€d�„ Z7d‚dƒ„ Z8d„d…„ Z9d†d‡„ Z:dˆd‰„ Z;dŠd‹„ Z<ej dŒdZd�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Ã„ ZVej dÄd-d.g¡dÅdÆ„ ƒZWdÇdÈ„ ZXdÉdÊ„ ZYdËdÌ„ ZZdÍdÎ„ Z[dÏdÐ„ Z\dÑdÒ„ Z]ej dÓd-d.g¡dÔdÕ„ ƒZ^dÖd×„ Z_dØdÙ„ Z`d�S )ÚÚTestPivotTablec                 C   sp   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œƒS )	NÚfooÚbarÚoneÚtwoÚdullÚshinyé   )ÚAÚBÚCÚDÚEÚF)r   ÚnpÚrandomÚrandn)Úselfr   r   r   Údata*   sT    õõõ


ÖÿzTestPivotTable.datac                 C   sä   ddg}d}t |d|||d�}|j d|||d�}t ||¡ t |d||d� t|ƒdkrn|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‚| 
||g ¡d  tj¡ ¡ }t ||¡ d S )	Nr,   r-   r.   r/   )ÚvaluesÚindexÚcolumnsÚobserved)r7   r8   r:   r   r   )r   ÚtmÚassert_frame_equalÚlenr8   ÚnamesÚtupleÚAssertionErrorÚnamer9   ÚgroupbyÚaggr2   ÚmeanÚunstack)r5   r:   r6   r8   r9   ÚtableÚtable2Úexpectedr   r   r   Útest_pivot_table[   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Úcol3rM   rO   rN   r   )r8   r7   r9   ÚaggfuncÚ
fill_valueÚcategory)r8   r7   r9   rP   rQ   r:   )r   Úlistr   r2   Úsumr8   Úastyper9   rM   rN   r;   r<   )r5   r:   ÚdfrH   Úresultr   r   r   Ú+test_pivot_table_categorical_observed_equalw   s.    ÿ    ÿú	z:TestPivotTable.test_pivot_table_categorical_observed_equalc                 C   s†   t dddgdddgddd	gd
œƒ}|jdtjd�}|jdtjd�j}t ||¡ |jdddid�}|jdddid�j}t ||¡ d S )NÚaÚbÚcÚxÚyÚzr   rJ   r   )ZrowsÚcolsr7   r_   )r9   rP   ©r8   rP   r7   rD   )r   r   r2   rT   ÚTr;   r<   )r5   rV   Ú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   rJ   r   r,   r-   r.   i[ i] i\ i^ rY   rZ   r[   Údi€„ i ¡ i@B )ÚamountÚcustomerÚmonthr   Úquantityrh   rg   rf   r   F)r   )r,   rY   )r,   rZ   )r,   r[   )r,   rd   )r-   rY   )r-   rZ   )r-   r[   )r-   rd   )r.   rY   )r.   rZ   )r.   r[   )r.   rd   ©r>   )r   r   r   Úfrom_tuplesr;   Úassert_index_equalr9   r8   )r5   rV   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 )NrY   rZ   r^   T©Ú
categoriesÚorderedr[   rd   r]   r   rJ   r   r   )r,   r-   r7   r7   r,   r-   )r7   r8   r   ri   ©r8   )r   r   r   r   r   r;   r<   )r5   Zcat1Zcat2rV   rW   Z	exp_indexrH   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 )NrY   rZ   r[   rd   r   rJ   r   r   é	   ©r,   r-   r.   r,   F©rp   r-   r.   )r8   r9   r7   r   ©rA   é   r   é   rK   é   ©r8   r9   ©r9   Úfloat)
r   ÚrangerU   ÚCDTr   r   Zreindexr   r;   r<   )r5   r   ro   rV   rW   Úexpected_columnsÚexpected_indexrH   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ÚhighTrn   ç        ç      ð?ç       @ç      @ç      @©r,   r-   r,   r-   ©r8   r7   r   r   r   rv   rq   )	r   r   r2   Únanr   r
   Ú
from_codesr;   r<   ©r5   r   rV   rW   rH   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ƒ   Trn   rK   r‰   r,   r-   rŠ   rJ   r   r   r   rv   rq   )
r   r   r}   r   r
   rŒ   rU   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Š   rv   rq   )r   r   r
   ÚuniquerU   r|   r;   r<   )r5   r#   r   rV   rW   rH   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   rJ   r   éÿÿÿÿ©ÚdtyperY   rZ   Tru   F)Z	ascendingrt   r.   r-   r,   rT   ©r8   r9   r7   rP   ÚmarginsÚAllr   rx   é
   rv   )r8   rA   r”   )r   r   r   r   r2   ÚarangeZintpr   Zsort_valuesr   r   r
   ZIntervalr;   Úassert_series_equal)r5   Zordered_catrV   Z	pivot_tabrW   rH   r   r   r   Ú&test_pivot_with_interval_index_margins,  s2    
ÿýÿ
     ÿ üz5TestPivotTable.test_pivot_with_interval_index_marginsc                 C   s4   |j d|j|jd�}|j dddd�}t ||¡ d S )Nr/   rz   r,   r.   )r   r,   r.   r;   r<   ©r5   r6   rW   rH   r   r   r   Útest_pass_arrayF  s    zTestPivotTable.test_pass_arrayc                 C   s<   |j ddd„ |jd�}|j d|jd dd�}t ||¡ d S )Nr/   c                 S   s   | d S )NrK   r   ©r\   r   r   r   Ú<lambda>L  ó    z3TestPivotTable.test_pass_function.<locals>.<lambda>rz   rK   r.   )r   r.   r8   r;   r<   rœ   r   r   r   Útest_pass_functionK  s    z!TestPivotTable.test_pass_functionc                 C   sF   ddg}d}t |||d�}| ||g ¡ tj¡ ¡ }t ||¡ d S )Nr,   r-   r.   rz   )r   rB   rC   r2   rD   rE   r;   r<   )r5   r6   r8   r9   rF   rH   r   r   r   Útest_pivot_table_multipleP  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ÚcatZbatr   rJ   r   r   rY   rZ   )rY   ÚvÚir¤   Úint64r¥   r   )r7   r8   r9   rQ   rP   Úabrv   rq   ç      ø?ç      @ç      @ç      @Úfloat64)r   Údtypesr@   r   r2   rT   r   r”   r
   rS   r;   rš   rD   )r5   Úfr^   rW   rH   r   r   r   Útest_pivot_dtypesW  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 )NrK   r“   r†   rJ   r   )r±   r²   r°   r³   r8   ©r8   r9   r7   c                 S   s   i | ]}|t  d ¡“qS )r¬   )r2   r”   )Ú.0Úcolr   r   r   Ú
<dictcomp>Ž  s      z=TestPivotTable.test_pivot_preserve_dtypes.<locals>.<dictcomp>)	r2   r™   r¬   r   Úreset_indexr   Údictr­   r@   )r5   r9   r7   r¤   rV   Zdf_resrW   rH   r   r   r   Útest_pivot_preserve_dtypesz  s    
ÿ  ÿ
z)TestPivotTable.test_pivot_preserve_dtypesc                 C   sx  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¡}|j	|j
d  tj¡dd�}tddgdtjggtddgtjd�|d�}t ||¡ t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tddgtjd�|d�}t ||¡ |jtdd�tddd�d�}tdgt jdgdd�|d�}t ||¡ d S )Nz
2011-01-01z
2011-02-01z
2011-01-02r,   r   rJ   r   r   rK   rq   rz   )r,   r   )r,   rJ   )Úlevelr©   rˆ   r†   r“   r/   )ÚfreqÚperiods)r,   Údtr¾   ÚM)Úkeyr¼   z
2011-01-31ç      
@©r¼   z
2011-12-31)r   ÚDatetimeIndexr   r   r8   rg   Údayr   rj   Z
set_levelsÚlevelsrU   r2   Úint32r‹   r
   r;   r<   r   r	   Ú	Timestampr>   )r5   ÚidxrV   ÚresZexp_columnsÚexpr   r   r   Útest_pivot_no_values‘  sR    ÿ ÿýþû
  ÿ 
ÿ  ÿz#TestPivotTable.test_pivot_no_valuesc                 C   sJ   t |ddgdddgdd�}t |jdgd	d
�dddgdd�}t ||¡ d S )Nr/   r0   r,   r-   r.   r   )r7   r8   r9   rQ   r1   r   ©Úaxis)r8   r9   rQ   )r   Údropr;   r<   rœ   r   r   r   Útest_pivot_multi_values»  s        ÿ   ÿz&TestPivotTable.test_pivot_multi_valuesc                    s¨   ‡ fdd„}|t jt jgƒ}|t jƒ}|t jƒ}t||gddgdd�}t ||¡ ‡ fdd„}|t jt jgƒ}|t jƒ}|t jƒ}t||gddgdd�}t ||¡ d S )Nc                    s   t ˆ ddgddgd| d�S )Nr/   r0   r,   r-   r.   ©r7   r8   r9   rP   r   ©Úfunc©r6   r   r   rŸ   Å  s       ÿz;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>rD   Ústdr   )ÚkeysrÍ   c                    s   t ˆ ddgddgd| dd�S )Nr/   r0   r,   r-   r.   T)r7   r8   r9   rP   r–   r   rÑ   rÓ   r   r   rŸ   Ï  s   ú)r2   rD   rÔ   r   r;   r<   )r5   r6   r®   rW   ZmeansZstdsrH   r   rÓ   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œƒ}|rD|jdddd�}ntj|dddd�}t||d
|gd|||g|d	||g|||dggt|dddgdd�t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˜   é   é   é   ©rY   rZ   r[   rY   rZ   r[   r´   rv   rz   )	r2   r‹   r   Úpivotr   r
   r;   r<   ra   )r5   r×   r‹   rV   rW   rH   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-01rw   r/   )r½   r¼   éd   )rY   r[   rY   z
2014-02-02rZ   )r   rY   )r   rY   ©r   rZ   )r   rZ   r[   r´   )r   r   r2   r™   r   rÇ   r‹   ÚlocrÞ   Znotnar7   rT   r=   r@   Ziterrowsr;   r<   ra   )r5   r×   rV   ÚpvÚ_ÚrowrW   r   r   r   Útest_pivot_index_with_nan_datesù  s$    þÿ$z.TestPivotTable.test_pivot_index_with_nan_datesc                 C   sÐ  t tdddddƒtdddddƒtdddddƒtdddddƒgtdddddƒtdddddƒtdddddƒtdddddƒgtjddd	�tjddd	�d
œƒ}|d  dd„ ¡|d< |d  dd„ ¡|d< t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   rs   r   rJ   éÞ  r   r¦   r“   )Údt1Údt2Údata1Údata2ré   c                 S   s   t j| dd�S ©Nú
US/Pacific©Útz©r   rÇ   ©rd   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ô   )rA   rð   r   z2013/01/01 09:00z2013/01/02 09:00rî   rz   r´   )r   r   r2   r™   Úapplyr
   r   rÃ   r   r   rÞ   r;   r<   ©r5   r×   rV   Úexp_col1Úexp_col2Úexp_colrH   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Ÿ   m  r    z8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>rû   rÐ   rv   z2016-08-12 00:00:00z2016-08-25 00:00:00rz   )r   r   rÇ   Ú	set_indexr¸   rü   Úmapr   r2   Úminr
   rÃ   r;   r<   )r5   rV   ZminsrW   rH   r   r   r   Útest_pivot_tz_in_valuesQ  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ì   rJ   r  )rA   r¼   r   r   r   r  rz   r´   )r   r   ÚPeriodr2   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   rJ   Z2019Q1Z2019Q2r…   )rY   rZ   r\   r—   rY   rv   rZ   )r6   r8   r9   r\   T)r8   r9   r7   r–   )r   r   r  r
   r   r;   r<   )r5   rV   rH   rW   r   r   r   Útest_pivot_periods_with_margins¶  s"    
üøÿýz.TestPivotTable.test_pivot_periods_with_marginsr7   Ú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   rJ   r   r   rK   rw   r\   r]   r^   ÚqÚwÚt©r%   r&   r  r  r%   r&   r´   ©r6   rA   r  r  r   ©rÅ   Úcodesr>   Úobject©r6   r8   r9   r”   )r   rÞ   r   r
   r   r;   r<   ©	r5   r7   r×   rV   rW   r6   r8   r9   rH   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   rJ   r   r   rK   rw   r\   r]   r^   r  r  r  r  r  r%   r´   r  r&   r  r   r  r  r  )	r   rÞ   r   r2   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 )NrY   rZ   r[   r   rJ   r   rL   z=pivot\(\) missing 1 required keyword-only argument: 'columns'©ÚmatchrM   rO   )r8   r7   ©r   ÚpytestÚraisesÚ	TypeErrorrÞ   )r5   rV   Úmsgr   r   r   Ú#test_pivot_columns_none_raise_error  s    "z2TestPivotTable.test_pivot_columns_none_raise_errorzBMultiIndexed unstack with tuple names fails with KeyError GH#19966©Úreasonc              	   C   s  t ddddddgd�}dd	dd
gddddgddddgdd	ddgddddgddddgg}tddgddggddddgddddggd�}t|||dd�}|r¨|jdddd�}ntj|dddd�}tddgddgd�tddgddgd�tddgddgd�d œ}t|ƒ}t ||¡ d S )!Nr   r   rJ   r   r   rK   rÓ   r'   r,   r\   r-   r]   r.   r^   r(   r  r  rw   r  r&   r  Úfirstrÿ   )rÅ   r  r  r  )r&   r#  )r&   rÿ   )r  r#  r´   rq   rt   )r
   r   r   rÞ   r   r   r;   r<   )r5   r×   r8   r6   r9   rV   rW   rH   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   rJ   r   r   rK   rw   r\   r]   r^   r  r  r  r  z^\('bar', 'baz'\)$r  r  r%   )r&   r  r´   )r   r  r  ÚKeyErrorrÞ   r   )r5   r×   rV   r   r   r   Útest_pivot_with_tuple_of_valuesN  s    üÿz.TestPivotTable.test_pivot_with_tuple_of_valuesr,   r-   r.   r—   c                 C   sÊ   |j |jd d… |f }| |¡|  ¡ }tj||dd� |j|ksHt‚| ¡ }|j |df j	d d… }	| |¡|  ¡ }
tj|	|
dd� |	j|dfksœt‚|j |df|f }||  ¡ }||ksÆt‚d S )Nr’   F©Zcheck_namesÚ )
râ   r8   rB   rD   r;   rš   rA   r@   Z
sort_indexZiloc)r5   rW   Z
values_colr6   r8   r9   Ú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 dddgddtjd�}|  |d|¡ |j dddgddtjdd�}| j|d|dd	� |j ddgddtjd
�}|jjd D ]}|  || ||¡ qzd S )Nr/   r,   r-   r.   T)r7   r8   r9   r–   rP   ZTotals)r7   r8   r9   r–   rP   Úmargins_name)r)  ©r8   r9   r–   rP   r   )r   r2   rD   r*  r9   rÅ   )r5   r6   rW   rF   Ú	value_colr   r   r   Útest_marginsy  s2        ÿú   ÿzTestPivotTable.test_marginsc              	   C   s  dd„ |j D ƒ|_ tjtdd�� |jddgdtjd� W 5 Q R X |jd	d
�jddgdtjd�}|j D ]&}|jd|f }|||  ¡ ksft	‚qftjtdd�� |jddgddd� W 5 Q R X |jd	d
�jddgddd�}dD ]&}|jd|f }|||  ¡ ksÜt	‚qÜd S )Nc                 S   s   g | ]}|d  ‘qS )rJ   r   )rµ   Úkr   r   r   Ú
<listcomp>–  s     z.TestPivotTable.test_no_col.<locals>.<listcomp>úCould not convertr  ZAAÚBBT)r8   r–   rP   ÚCCr{   ©r—   r(  rD   )ZDDZEEZFF)
r9   r  r  r  r   r2   rD   rÎ   râ   r@   )r5   r6   rF   r-  ZtotalsÚitemr   r   r   Útest_no_col’  s*       ÿ
  ÿzTestPivotTable.test_no_colz*columns, aggfunc, values, expected_columnsç      @gš™™™™™@ç       @gš™™™™™@r%   rv   rT   rs   é   é   rK   rw   r+   é   é   é    )r&   r'   )r&   r(   )r&   r—   )r%   r'   )r%   r(   )r%   r—   ri   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kr tjtdd�� |j|d|d� W 5 Q R X d|kr´|jdd�}|jdd�j|d|d�}t |tddgƒ|d�}t ||¡ d S )Nr%   r&   r'   r(   ÚsmallÚlarger   rJ   r   r   rK   rw   rx   ry   rs   ©r,   r-   r.   r/   r0   rT   r1  r  T)r9   r–   rP   r-   r{   r.   r/   r0   rz   )	r   r  r  r  r   rÎ   r
   r;   r<   )r5   r9   rP   r7   r   rV   rW   rH   r   r   r   Ú%test_margin_with_only_columns_defined©  s:    "÷ñÿ  ÿz4TestPivotTable.test_margin_with_only_columns_definedc                 C   sÐ   |  ¡ }t t|ƒd ¡ t|ƒd¡ d¡|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/   r0   r1   r&   r%   r'   r(   r4  r‰   ri   é   é   rs   é-   é!   r   é$   é3   éx   ©r)   r*   rq   r.   r   rÌ   r)   r*   r—   r,   r-   T©r7   r8   r9   r–   rP   rQ   )Úcopyr2   r™   r=   r   rU   rS   r   r   rj   r   Úrename_axisr   rT   r;   r<   )r5   r6   rV   Úmi_valÚmirH   rW   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dddgddtdd�}t 	||¡ d S )Nr&   r%   r'   r(   r4  r‰   ri   r   rJ   rK   r   rw   rJ  rq   r.   rÌ   r)   r*   r—   r/   r,   r-   TrK  )
rS   r   r   rj   r   rM  r   r=   r;   r<   )r5   r6   rN  rO  rH   rW   r   r   r   Útest_margins_dtype_len  s&     ÿ þú	z%TestPivotTable.test_margins_dtype_lenr_   )r   rJ   ©rY   rZ   rá   )rY   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   rJ   r   r¤   r   rK   rw   )r7   r9   )r   r   )rJ   rJ   )r   r   ri   ©r9   r8   )r   r   r   rj   r
   r;   r<   )r5   r_   Údf2rW   rH   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ð   rt   r-   r.   F)r8   r   r   )
r   r   r2   r3   r4   r   r8   rÅ   Úequalsr@   )r5   ZdtirV   rW   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   r0  4  s     z=TestPivotTable.test_pivot_integer_columns.<locals>.<listcomp>rÜ   r…   r   r   r   r   rJ   )r7   r8   r9   r{   Ú4Ú0Ú1Ú3Ú2Fr'  )r   r  rS   r   r}   r   r   ÚrenameÚstrr;   r<   )r5   r6   rV   rF   rT  rG   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 )NrY   rZ   rJ   r   r   r%   r   r&   é   )rY   rZ   r[   Úvaluerb  r[   rz   Úall)rÍ   Úhow)r   r2   r3   r4   r   rB   rD   rE   r   r;   r<   )r5   r6   rF   ZgroupedrH   r   r   r   Útest_pivot_no_level_overlap@  s    
üÿ	z*TestPivotTable.test_pivot_no_level_overlapc           
   
   C   s@  d}t  dtfdtfdtfdtfdtfdtfdtfg¡}t jd	d
dddddddg	dtfdtfgd�}t j||d�}t j dt	|ƒ|¡}|d | |d< |d | |d< t
tdddƒtdddƒƒ}|t j dt	|ƒ|¡ }|j|d< |j|d< |j|d< t j dd|¡|d< t|ƒ}|jdddgdddgdd�}	|	jj�s<t‚d S )Ni'  r
   ZSymbolÚYearÚMonthZDayÚQuantityZPrice)ÚSP500ZADBE)ri  ZNVDA)ri  ZORCL)ÚNDQ100ZAAPL)rj  ZMSFT)rj  ZGOOG)ÚFTSEzDGE.L)rk  zTSCO.L)rk  zGSK.Lr“   r   iÐ  r   iÚ  rC  é   rˆ   r†   rD   ©r8   r9   rP   )r2   r”   r  Úintr|   ÚarrayÚemptyr3   Úrandintr=   r   r   Úyearrg   rÄ   Z	lognormalr   r   r9   Zis_monotonic_increasingr@   )
r5   Únr”   ZproductsÚitemsZiproductZdrÚdatesrV   Úpivotedr   r   r   Útest_pivot_columns_lexsortedR  sT    ùÿ÷ô


üz+TestPivotTable.test_pivot_columns_lexsortedc                 C   sH   dgdgdœ}|  ddg¡ |¡ d¡}|jdd|d�}t ||¡ d S )NrÔ   rT   ©r/   r0   r,   r-   rm  )rB   rC   rE   r   r;   r<   )r5   r6   r®   rH   rW   r   r   r   Útest_pivot_complex_aggfunc…  s    z)TestPivotTable.test_pivot_complex_aggfuncc                 C   sD   |ddg j ddgtdd�}| ¡ }t|d d… ƒ|d ks@t‚d S )Nr,   r-   T)r8   rP   r–   r’   )r   r=   ÚtolistrT   r@   )r5   r6   rW   Zresult_listr   r   r   Útest_margins_no_values_no_colsŒ  s      ÿz-TestPivotTable.test_margins_no_values_no_colsc                 C   s@   |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©r8   r9   rP   r–   r‡   r…   rˆ   ç      &@©r   r=   r—   rz  r@   ©r5   r6   rW   r   r   r   Útest_margins_no_values_two_rows”  s       ÿz.TestPivotTable.test_margins_no_values_two_rowsc                 C   s6   |ddg j ddtdd�}|j ¡ dddgks2t‚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   sd   ddddddddd	d
dg|d< |ddddg j ddgddgtdd�}|j ¡ dddddgks`t‚d S )NrY   rZ   r[   rd   Úer®   ÚgÚhr¥   Újr/  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š  NrY   rZ   c              	   C   sª   d|› d�}t jt|d��  t|dddgdgd|d	� W 5 Q R X t jt|d��  t|ddgddgd|d	� W 5 Q R X t jt|d�� t|ddgdgd|d	� W 5 Q R X d S )
NzConflicting name "z3" in margins|margins_name argument must be a stringr  r/   r,   r-   r.   T)r7   r8   r9   r–   r+  )r  r  Ú
ValueErrorr   )r5   rˆ  r6   r  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   rK   ry   rs   rç   r˜   rJ   rC  )ÚBranchÚBuyerrh  ÚDater�  r<  r¦   r“   rl  r,   rÂ   zCarl Joe Markrz   rŽ  rh  ©r8   r9   r7   rP   rx   Z6MSZCarl©r¼   rÀ   z#'The grouper name foo is not found'r  r%   )r¼   r»   zThe level foo is not valid)r   Úsplitr   r  r2   ro  r   r   rÃ   r8   rA   r9   r   r	   rT   r;   r<   ra   r‹   rU   r¸   r  r  r%  r‰  )r5   Úusing_array_managerrV   rH   rW   r  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   rK   ry   rs   rç   r+   r9  r   r˜   rÜ   rJ   rC  r;  r   rÚ   rx   é   )r�  rŽ  rh  r�  ÚPayDayr¿   r�  r‘  r–  rh  r�  rw   rl  rÂ   rz   ri   r,   r-   r�  )r   r’  r   r   r	   r2   rT   ro  r‹   r   r   rÃ   r8   rA   r9   r;   r<   ra   r   rj   )r5   rV   rW   rH   ZtuplesrÈ   r   r   r   Útest_pivot_timegrouper_doublek  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:00rY   rZ   rw   r¦   r“   r   rJ   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ð   rA   rŸ  rž  rv   r   r   rK   rz   r´   rT   rD   r   rô   r�  )r   r2   r™   rõ   r   rÃ   r
   r   r   r   r;   r<   ro  rT   rD   )r5   Údates1Údates2rV   Úexp_idxr÷   rø   rù   rH   rW   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tjdd�d �}t	 
||¡ t||d jj|d jjdd�}t ddgddgddgdœtddgtjdd�tdddgtjdd�d �}t	 
||¡ t||d jjj|d jj|d jjgdd�}tjtjddddddgtjd
�tjddgd tjd
�gddgd!�}t tjddddddggd	d
�td"gtjd
�|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œ  rY   rZ   rw   r¦   r“   r   rJ   r   r�  ré   c                 S   s
   t  | ¡S r   rñ   rò   r   r   r   rŸ   L  r    z6TestPivotTable.test_pivot_dtaccessor.<locals>.<lambda>rê   c                 S   s
   t  | ¡S r   rñ   rò   r   r   r   rŸ   M  r    rž  rŸ  r´   rv   r   r   rK   )rx   ry   rs   rx   ry   rs   ©r”   rA   rz   ri   rç   ÚXÚY)r   r2   r™   rõ   r   r¾   rý   r
   rÆ   r;   r<   rg   rr  r7   r   r   ro  r‹   )r5   r¡  r¢  rV   rW   r£  rH   rù   r   r   r   Útest_pivot_dtaccessor1  s¢    ú	ú
ûÿ	  
 ÿý 
 
 ÿýüþûýü*ÿûz$TestPivotTable.test_pivot_dtaccessorr¥   r   io  c                 C   s    t dddd�}ttj t|ƒ¡|d�}tt|ƒ|jj	|jj
d�}|j d¡|_t |jj
¡}|||k }|jj	|_||  ¡ }tj||dd	� |j|ksœt‚d S )
Nú1/1/2000ú
12/31/2004r/   rÂ   rq   rz   r   Fr'  )r   r   r2   r3   r4   r=   r   r   r8   rr  Z	dayofyearr9   Ú	droplevelZasarrayr   r;   rš   rA   r@   )r5   r¥   Úrngrü   ÚannualZdoyÚsubsetrW   r   r   r   Ú
test_dailyŠ  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Â   rq   rz   r   Fr'  )r   r   r2   r3   r4   r=   r   r   r8   rr  rg   r9   r«  r   r;   rš   rA   r@   )r5   r¥   r¬  rü   r­  rg   r®  rW   r   r   r   Útest_monthly�  s    
zTestPivotTable.test_monthlyc                 C   sv   dddœ}t |dgt| ¡ ƒ|d�}t |dg| ¡ |d�}t ||¡ dd„ |D ƒ}t |dg||d�}t ||¡ d S )NrT   rD   rx  r,   )r8   r7   rP   c                 s   s   | ]
}|V  qd S r   r   )rµ   rb  r   r   r   Ú	<genexpr>¹  s     zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>)r   rS   rÕ   r;   r<   )r5   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WeeklyZbaconZcheeser©   r«   gš™™™™™	@gffffff
@r¿   ra   )r5  ÚcostrÄ   r5  rÄ   T)r8   r9   r–   r+  rP   r  r¥  )rD   r³  r¿   )rD   r³  ra   rD   r³  )Úmaxr³  r¿   )r´  r³  ra   r´  ri   rz   )r   r   r2   rD   r´  r
   r   rj   r7   r;   r<   )r5   r+  ZcostsrF   ÚixZtupsr_   rH   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!  ry   r   rJ   ©r\   r]   r^   r…   r†   r¨   rK   rw   r7  r   rª   r   r   r—   r]   rv   r^   r\   T©r   r–   )ÚnodeÚ
add_markerr  ÚmarkÚxfailr   r2   r™   r
   r8   r9   r   r;   r<   ©r5   r:   r   rV   rH   rF   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!  ry   r   rJ   r¸  r…   r†   r¨   rK   rw   r7  r   rª   r   r   r—   r]   rv   r^   rR   r\   Tr¹  )rº  r»  r  r¼  r½  r   r2   r™   r
   r8   r9   r]   rU   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 )NrJ   r   rw   ry   r   rK   r   r¦  r§  )r,   r-   r.   r/   r/   T)r8   r–   rx   r©   g      @r«   rª   rt   r—   rv   rq   )r   r   r
   r;   r<   ©r5   rV   rW   rH   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-   rn   r   rw   )ÚInÚColÚValrÃ  rÄ  rÅ  )r8   r9   r7   r:   )rp   rA   r†   r‡   )r6   r9   rv   )r9   r7   r:   rª   )r6   r9   r8   )r2   r‹   r   r   r}   r   r   ÚCategoricalIndexr
   r8   r;   r<   )	r5   r:   rp   rÈ   r¶   rV   rW   Zexpected_colsrH   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.   rY   rZ   r   rJ   r   r   )rØ   rÙ   ÚVrØ   rR   rÈ  rÙ   Úcount)r8   r9   r   rP   F©ro   rp   rA   rv   r   r“   rz   )r   rU   r   r   rÆ  r
   r2   ro  r¦   r;   r<   )r5   r:   rV   rW   r€   r   Úexpected_datarH   r   r   r   Útest_categorical_aggfunc9  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à   rI  éÜ   ÚJanuaryrç   rè   )ÚSalesrg  rf  ÚFebruaryZMarchZAprilÚMayZJuneZJulyZAugustZ	SeptemberZOctoberZNovemberZDecemberrg  rR   rÏ  rf  rT   )r7   r8   r9   r:   rP   r¦   )rA   r”   FrÊ  i@  r   r+   rz   )r   rU   r£   Zset_categoriesr   r
   r   rÆ  râ   r;   r<   )	r5   r:   rV   ÚmonthsrW   r   r€   rË  rH   r   r   r   Ú%test_categorical_pivot_index_orderingM  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   rK   r.   r/   r0   r   rs   rL   rM   rO   rN   r`   ri   rz   rm  rv   rT   )
r   r   r2   rT   r   r   r;   r<   ÚNaNr
   )r5   rV   rW   rl   rH   r   r   r   Útest_pivot_table_not_seriesy  s     ""&ý"z*TestPivotTable.test_pivot_table_not_seriesc                 C   s\   d}t ddddgiƒ}t|dgtd|d�}tddd|gddd	�}t |g d
�}t ||¡ d S )Nu   Î”Î¿ÎºÎ¹Î¼Î®r%   r   rJ   r   T)r8   rP   r–   r+  r  r¥  rz   )r   r   r=   r
   r;   r<   )r5   ÚgreekÚframerF   r8   rH   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+   rt   r,   r-   rT   rm  r.   r   r   r  rÚ   r9  )r&   r%   rx   rÜ   ))r.   r'   )r.   r(   r{   rD   ç      @rÁ   r�  g«ªªªªª@))rD   r.   r'   )rD   r.   r(   )rT   r.   r'   )rT   r.   r(   )r   r}   r   r   rM  r;   r<   )r5   r6   rW   rO  rH   r   r   r   Útest_pivot_string_as_func   st    õõåÿ   ÿþý ýüùø	z(TestPivotTable.test_pivot_string_as_funcz
f, f_numpyrD   rÔ   c                 C   s<   |j dd�}t|dd|d�}t|dd|d�}t ||¡ d S )Nr.   r{   r,   r-   rm  )rÎ   r   r;   r<   )r5   r®   Zf_numpyr6   rW   rH   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)r5   Ú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   r2   r™   r;   Úassert_produces_warningr   r  r  rà  r   )r5   Zmonkeypatchré  rl   rV   r  r   r   r   Ú-test_pivot_number_of_levels_larger_than_int32ñ  s    
ÿ   ÿz<TestPivotTable.test_pivot_number_of_levels_larger_than_int32c           
      C   sÊ   t dddgdddgdddgdœƒ}dd	„ }d
d„ }dd„ }t|d|||g|d�}ddtjtjddgddtjtjddgg}tjdddgddggd dgd�}t |ddg|d�}	|rº|	jdd�}	t ||	¡ d S )NZappleZpeachr   rJ   rx   rw   )Ú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   )rT   rž   r   r   r   Úret_sum  s    z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumc                 S   s   t jS r   )r2   r‹   rž   r   r   r   Úret_none  s    z@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_nonerò  ©r9   rP   r   r   r9  rö  r÷  rõ  ri   ró  rô  rz   r9   rÌ   )	r   r   r2   r‹   r   Zfrom_productr   r;   r<   )
r5   r   rV   rõ  rö  r÷  rW   r6   r¶   rH   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   rJ   r   )r,   r\   r]   r,   rø  r©   rv   r\   r]   rz   r9   rÌ   )	r   r2   r‹   r   rD   r
   r   r;   r<   )r5   r   rV   rW   r6   r¶   rH   r   r   r   Ú&test_pivot_table_aggfunc_scalar_dropna+  s    "ÿz5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnar–   c              	   C   s‚   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g dd�}t tg ddd�|d�}t ||¡ d S )NrJ   r   rK   rw   rx   ry   rs   Úpr  )r,   Úidr.   r/   r,   r/   rü  r•   rv   r¦   r¥  rz   )r   r   r2   ró  r
   r;   r<   )r5   r–   rV   rW   Zexp_colsrH   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   )r2   rD   )Zarrr   r   r   rC   P  s    z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.aggr   r   r˜   rÜ   r•  é(   )r¦  r§  ÚZZ
notpresentr  r¦  r§  )rP   )r   r  r  r%  r   )r5   rC   rV   r   r   r   Ú!test_pivot_table_no_column_raisesN  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>  r?  r   rJ   r   r   rK   rw   rx   ry   rs   r@  r/   r0   r,   r.   rx  )r7   r8   rP   )r/   rD   )r0   r´  )r0   rD   )r0   r  )r&   r?  )r&   r>  )r%   r?  )r%   r>  ri   r7  g      "@g      @ç      @g      !@r8  r†   rÙ  r«   rˆ   g["8ªªª@g.UUU@rS  )r   r   r2   rD   r  r´  r   rj   ro  rU   r¦   r;   r<   )r5   rV   rF   r_   r8   ÚvalsrH   r   r   r   Ú0test_pivot_table_multiindex_columns_doctest_caseW  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 )NÚd1Zd4Zd3rY   rZ   r[   é   rD  é"   Z2018Z2019)rY   r¶   Únumrr  r¶   rr  r  rT   F)r8   r9   r7   rP   Úsortrv   ri   rS  )	r   r   r2   r‹   r
   r   r   r;   r<   rÁ  r   r   r   Útest_pivot_table_sort_false‹  s.    üÿ    ÿ ÿýz*TestPivotTable.test_pivot_table_sort_falsec                 C   s„   t dddgtddgdd�dœƒ}|jd	d
ddd�}t ddgddgddggtdddgd	d�tjddgd d
gd�dd�}t ||¡ d S )Nr,   r   rJ   r˜   r+   ÚInt64r“   )rY   rZ   ÚsalesrZ   rY   TrT   r,  rD  r—   rv   ©r  r,   ©r  r—   ri   ©r8   r9   r”   )r   r   r   r
   r   rj   r;   r<   rÁ  r   r   r   Ú!test_pivot_table_nullable_margins¡  s    ÿ ÿúz0TestPivotTable.test_pivot_table_nullable_marginsc                 C   sz   t ddgddgddgddgd	œƒ}|jd
dgddgdd�}t ddgddggddgtjddgd
dgd�d�}t ||¡ d S )NÚJohnÚMichaelÚFooÚBaré­   é¶   é/   rF  )Ú	firstnameÚlastnameÚheightÚager  r  r  r  F)r8   r7   r  )r  r  )r  r  ri   rS  )r   r   r   rj   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 )NrY   r\   r   r]   rJ   rZ   r   r^   r   r˜   rÜ   r•  rT   r   T)r8   r9   r7   rP   rQ   r–   rx   rK   r—   )r   r9   r   r8   rA   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 )NrY   rZ   rÜ   rþ  r
  r“   )r\   r]   r  r\   r]   r  rD   )r8   r9   r7   rP   r   r•  rv   ZFloat64r  )r   r   r   r
   r;   r<   r�   r   r   r   Útest_pivot_ea_dtype_dropnaÙ  s        ÿüz)TestPivotTable.test_pivot_ea_dtype_dropnac              
   C   sÂ   t dddgt d¡ddgdœƒ}t d ¡� |jdd	gd
ddd�}W 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   rJ   z
2019-12-31g      $@r+   )rY   rZ   r   r  rZ   r   rY   TrT   r,  r}  g      5@r—   rv   r(  r¥  r  r  ri   rz   )r   r   rÇ   r;   rð  r   r   r   r
   r  rj   r<   rÁ  r   r   r   Ú!test_pivot_table_datetime_warningè  s>    üÿ   ÿýþÿ
 ÿôz0TestPivotTable.test_pivot_table_datetime_warningc                 C   sB  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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dgdgtjd�}t ddgddgddgtjdggtddgdd�tjddddgddgd gddgd�d�}|�r2|d  d¡|d< t	 
||¡ d S )Nr%   r&   r'   r(   r>  r?  r   rJ   r   r   rK   rw   rx   ry   rs   )r,   r-   r.   r/   r0   )Zcol5)Zcol6rw   ©rx   Zsevenr/   r,   r-   r  rÐ   rˆ   rÙ  r�  r  r…   rv   ri   rS  r¦   )r   r   r2   rT   r‹   r
   r   r   rU   r;   r<   )r5   r“  rV   rW   rH   r   r   r   Ú)test_pivot_table_with_mixed_nested_tuples	  s‚    ÷÷÷÷Úÿ4    ÿ ÿýz8TestPivotTable.test_pivot_table_with_mixed_nested_tuples)arå  ræ  rç  r  Úfixturer6   rI   rX   rc   rm   rr   r�   rŽ   r�   r‘   r›   r�   r¡   r¢   r¯   r¼  Zparametrizerº   rË   rÏ   rÖ   rß   ræ   rú   r  r	  r
  r2   ro  r   r
   r  r  r   r½  r$  r&  r*  r.  r6  rD   r   rj   rA  rP  rQ  rU  rW  r`  re  rw  ry  r{  r€  r‚  r‡  rŠ  r”  r—  r¤  r¨  r}   r¯  r°  r²  r¶  r¿  rÀ  rÂ  rÇ  rÌ  rÓ  rÕ  rØ  rÚ  rT   rÔ   rÛ  Zslowrñ  rù  rú  rý  r   r  r	  r  r  r  r  r  r   r   r   r   r   r$   )   s>  
0%	#
ýþ
*	


;7
-

üþ	

üþ	!ÿ&
ù
üþú÷ùùþ
#
3	
% GY

#,>úþ

#
	4
 r$   c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )Ú	TestPivotc                 C   sÔ   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´   r8   r9   r7   rt   ©r#  r$  rz   ©Nr9   )	r   rÞ   r8   rA   r9   r;   r<   r@   r>   )r5   r6   r×  rv  rH   r   r   r   Ú
test_pivotO	  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 entriesr  rY   rZ   r[   r´   )r   r  r  r‰  rÞ   )r5   r6   r   r   r   Útest_pivot_duplicatesl	  s    ýÿzTestPivot.test_pivot_duplicatesc                 C   s@   t dddgd�}|jdddd�}t g g d�}tj||dd� d S )	NrY   rZ   r[   r{   r´   rz   Fr'  )r   rÞ   r;   r<   rÁ  r   r   r   Útest_pivot_emptyw	  s    zTestPivot.test_pivot_emptyc                 C   sD   t ddgd�}|jdddd�}t|ƒ t |jtdd	gdd
�¡ d S )N)r,   r[  ÚA1)r-   r]  ZB2rÓ   r   r   rJ   r´   r,   r-   rv   )r   rÞ   Úreprr;   rk   r9   r
   )r5   rV   rW   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´   r8   r9   r7   ©r9   r7   rt   r%  rz   r{   )r7   r#  )r7   r$  ri   Fr'  r&  r   )r   r  rÞ   r8   rA   r9   r;   r<   r   rj   r@   r>   r«  )r5   r6   r×  rW   rH   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�}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   rJ   r   r   rK   rw   r   )Úlev1Úlev2Úlev3Úlev4r7   r/  r0  r1  rz   r…   r†   r„   r‡   rÙ  rˆ   r  )r   r   rJ   rJ   )r   rJ   r   rJ   ri   )r2  r2  r7   r7   )
r   rÞ   r2   ro  r‹   r   r   r;   r<   r@   )r5   rV   r8   r9   rW   rH   r   r   r   Ú0test_pivot_index_list_values_none_immutable_args¨	  s>    ûÿ	

üÿ ÿþôz:TestPivot.test_pivot_index_list_values_none_immutable_argsc              	   C   s6   t dgddœƒ}tjtdd�� | ¡  W 5 Q R X d S )Nr   rR  z(missing 1 required keyword-only argumentr  r  )r5   rV   r   r   r   Útest_pivot_columns_not_givenÎ	  s    z&TestPivot.test_pivot_columns_not_givenc                 C   s¨   t dgdddœƒ}|jd d�}t dgddœƒ}t ||¡ |jd dd�}t d	ditdgdd
�d�}t ||¡ |jd ddd�}t dditdgdd
�d�}t ||¡ d S )Nr   rJ   r   ©NrZ   r[   r{   ))rZ   r   ©r[   r   rZ   rS  r6  rv   rq   r[   ©r9   r8   r7   )r   rÞ   r;   r<   r
   rÁ  r   r   r   Útest_pivot_columns_is_noneÔ	  s    z$TestPivot.test_pivot_columns_is_nonec                 C   s„   t dgdddœƒ}|jdd d�}t ddidgd�}d dg|j_t ||¡ |jdd d	d
�}t ddgtdgdd�d�}t ||¡ d S )Nr   rJ   r   r5  rZ   rS  )r[   rJ   rq   r[   r7  rv   rz   )r   rÞ   r9   r>   r;   r<   r
   rÁ  r   r   r   Útest_pivot_index_is_noneã	  s    z"TestPivot.test_pivot_index_is_nonec                 C   sˆ   t dgdddœƒ}|jddd d�}t dtdgdd�tdgdd�d	�}t ||¡ |jdd d
�}t ddgtdgdd�d	�}t ||¡ d S )Nr   rJ   r   r5  rZ   r[   r7  rv   rz   r-  r   )r   rÞ   r
   r;   r<   rÁ  r   r   r   Útest_pivot_values_is_noneð	  s      ÿz#TestPivot.test_pivot_values_is_nonec                 C   s>   t dgdddœƒ}|jdd�}|jddd	d
� t ||¡ d S )NrY   r   r   )r'   r(   ÚthreeT)Údeepr'   r(   r;  r´   )r   rL  rÞ   r;   r<   )r5   rV   rH   r   r   r   Ú"test_pivot_not_changing_index_nameþ	  s    z,TestPivot.test_pivot_not_changing_index_nameN)rå  ræ  rç  r'  r(  r)  r,  r.  r3  r4  r8  r9  r:  r=  r   r   r   r   r"  N	  s   $&r"  )%r   r   r   Ú	itertoolsr   Znumpyr2   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   r!  r   r}   r#   r$   r"  r   r   r   r   Ú<module>   sD   (

.
                  7