U
    ¾mœd1W ã                   @   s  d dl mZm Z mZ d dlmZ d dlZd dlZd dlm	Z	 d dl
Zd dl
mZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ ejd	d
gd�dd„ ƒZ ejd gd dgd fe!d dƒe!ddƒfgd�dd„ ƒZ"G dd„ dƒZ#G dd„ dƒZ$dS )é    )ÚdateÚdatetimeÚ	timedelta)ÚproductN)ÚPerformanceWarning)ÚCategoricalÚ	DataFrameÚGrouperÚIndexÚ
MultiIndexÚSeriesÚconcatÚ
date_range)ÚCategoricalDtype)Úreshape©Úpivot_tableTF)Úparamsc                 C   s   | j S ©N)Úparam)Úrequest© r   úX/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/reshape/test_pivot.pyÚdropna   s    r   é   é   é   c                 C   s   | j \}}ttj |||¡ƒS r   )r   r   ÚpdÚIntervalIndexÚfrom_arrays)r   ÚclosedÚleftÚrightr   r   r   Úinterval_values#   s    
r#   c                   @   s*  e Zd Z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   )Ú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   Úquantityri   rh   rg   r   F)r   )r,   rY   )r,   rZ   )r,   r[   )r,   re   )r-   rY   )r-   rZ   )r-   r[   )r-   re   )r.   rY   )r.   rZ   )r.   r[   )r.   re   ©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[   re   r]   r   rJ   r   r   )r,   r-   r7   r7   r,   r-   )r7   r8   r   rj   ©r8   )r   r   r   r   r   r;   r<   )r5   Zcat1Ú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[   re   r   rJ   r   r   é	   ©r,   r-   r.   r,   F©rq   r-   r.   )r8   r9   r7   r   ©rA   é   r   é   rK   é   ©r8   r9   ©r9   Úfloat)
r   ÚrangerU   ÚCDTr   r   Zreindexr   r;   r<   )r5   r   rp   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ÚhighTro   ç        ç      ð?ç       @ç      @ç      @©r,   r-   r,   r-   ©r8   r7   r   r   r   rx   rr   )	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…   Tro   rK   r‹   r,   r-   rŒ   rJ   r   r   r   rx   rr   )
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Œ   rx   rr   )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   Trw   F)Z	ascendingrv   r.   r-   r,   rT   ©r8   r9   r7   rP   ÚmarginsÚAllr   rz   é
   rx   )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/   r|   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>r|   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.   r|   )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ÚcatÚbatr   rJ   r   r   rY   rZ   )rY   ÚvÚir§   Úint64r¨   r   )r7   r8   r9   rQ   rP   Úabrx   rr   ç      ø?ç      @ç      @ç      @Ú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   rr   r|   )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   rh   Údayr   rk   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·   rx   r|   )	r2   r�   r   Úpivotr   r
   r;   r<   rb   )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-01ry   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<   rb   )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   ru   r   rJ   éÞ  r   r©   r•   )Údt1Údt2Údata1Údata2rì   c                 S   s   t j| dd�S ©Nú
US/Pacific©Útz©r   rÊ   ©re   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ñ   r|   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Ó   rx   z2016-08-12 00:00:00z2016-08-25 00:00:00r|   )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	  r|   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   rx   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   ry   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   ry   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  ry   r  r&   r  Úfirstr  )rÈ   r  r  r  )r&   r&  )r&   r  )r  r&  r·   rr   rv   )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   ry   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   r0  ZtotalsÚitemr   r   r   Útest_no_col’  s*       ÿ
  ÿzTestPivotTable.test_no_colz*columns, aggfunc, values, expected_columnsç      @gš™™™™™@ç       @gš™™™™™@r%   rx   rT   ru   é   é   rK   ry   r+   é   é   é    )r&   r'   )r&   r(   )r&   r™   )r%   r'   )r%   r(   )r%   r™   rj   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   ry   rz   r{   ru   ©r,   r-   r.   r/   r0   rT   r4  r  T)r9   r˜   rP   r-   r}   r.   r/   r0   r|   )	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(   r7  r‹   rj   é   é   ru   é-   é!   r   é$   é3   éx   ©r)   r*   rr   r.   r   rÏ   r)   r*   r™   r,   r-   T©r7   r8   r9   r˜   rP   rQ   )Úcopyr2   r›   r=   r   rU   rS   r   r   rk   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(   r7  r‹   rj   r   rJ   rK   r   ry   rM  rr   r.   rÏ   r)   r*   r™   r/   r,   r-   TrN  )
rS   r   r   rk   r   rP  r   r=   r;   r<   )r5   r6   rQ  rR  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   ry   )r7   r9   )r   r   )rJ   rJ   )r   r   rj   ©r9   r8   )r   r   r   rk   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ó   rv   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   r3  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   rW  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[   Úvaluere  r[   r|   Úall)rÐ   Úhow)r   r2   r3   r4   r   rB   rD   rE   r   r;   r<   )r5   r6   rF   Ú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
   ÚSymbolÚYearÚMonthZDayÚQuantityZPrice)ÚSP500ZADBE)rn  ZNVDA)rn  ZORCL)ÚNDQ100ZAAPL)ro  ZMSFT)ro  ZGOOG)ÚFTSEzDGE.L)rp  zTSCO.L)rp  zGSK.Lr•   r   iÐ  r   iÚ  rF  é   rŠ   rˆ   rD   ©r8   r9   rP   )r2   r–   r  Úintr~   ÚarrayÚemptyr3   Úrandintr=   r   r   Úyearrh   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-   rr  )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™   r  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[   re   Úer±   ÚgÚhr¨   Újr2  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   r{   ru   rê   rš   rJ   rF  )ÚBranchÚBuyerrm  ÚDater”  r?  r©   r•   rq  r,   rÅ   zCarl Joe Markr|   r“  rm  ©r8   r9   r7   rP   rz   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   rt  r   r   rÆ   r8   rA   r9   r   r	   rT   r;   r<   rb   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   r{   ru   rê   r+   r<  r   rš   rß   rJ   rF  r>  r   rÝ   rz   é   )r’  r“  rm  r”  ÚPayDayrÂ   r”  r–  r›  rm  r•  ry   rq  rÅ   r|   rj   r,   r-   r’  )r   r—  r   r   r	   r2   rT   rt  r�   r   r   rÆ   r8   rA   r9   r;   r<   rb   r   rk   )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   ry   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£  rx   r   r   rK   r|   r·   rT   rD   r¥  r÷   r•  )r   r2   r›   rø   r   rÆ   r
   r   r   r   r;   r<   rt  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   ry   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·   rx   r   r   rK   )rz   r{   ru   rz   r{   ru   ©r–   rA   r|   rj   rê   ÚXÚY)r   r2   r›   rø   r   rÁ   r   r
   rÉ   r;   r<   rh   rw  r7   r   r   rt  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Å   rr   r|   r   Fr*  )r   r   r2   r3   r4   r=   r   r   r8   rw  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Å   rr   r|   r   Fr*  )r   r   r2   r3   r4   r=   r   r   r8   rw  rh   r9   r°  r   r;   rœ   rA   r@   )r5   r¨   r±  rÿ   r²  rh   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   r}  r,   )r8   r7   rP   c                 s   s   | ]
}|V  qd S r   r   )r¸   re  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WeeklyÚbaconZcheeser¬   r®   gš™™™™™	@gffffff
@rÂ   rb   )r8  ÚcostrÇ   r8  rÇ   T)r8   r9   r˜   r.  rP   r  rª  )rD   r¹  rÂ   )rD   r¹  rb   rD   r¹  )Úmaxr¹  rÂ   )rº  r¹  rb   rº  rj   r|   )r   r   r2   rD   rº  r
   r   rk   r7   r;   r<   )r5   r.  ZcostsrF   Z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$  r{   r   rJ   ©r\   r]   r^   r‡   rˆ   r«   rK   ry   r:  r   r­   r   r   r™   r]   rx   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$  r{   r   rJ   r½  r‡   rˆ   r«   rK   ry   r:  r   r­   r   r   r™   r]   rx   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   ry   r{   r   rK   r   r«  r¬  )r,   r-   r.   r/   r/   T)r8   r˜   rz   r¬   g      @r®   r­   rv   r™   rx   rr   )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-   ro   r   ry   )ÚInÚColÚValrÈ  rÉ  rÊ  )r8   r9   r7   r:   )rq   rA   rˆ   r‰   )r6   r9   rx   )r9   r7   r:   r­   )r6   r9   r8   )r2   r�   r   r   r   r   r   ÚCategoricalIndexr
   r8   r;   r<   )	r5   r:   rq   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©rp   rq   rA   rx   r   r•   r|   )r   rU   r   r   rË  r
   r2   rt  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ã   rL  éÜ   ÚJanuaryrê   rë   )ÚSalesrl  rk  ÚFebruaryZMarchZAprilÚMayZJuneZJulyZAugustZ	SeptemberZOctoberZNovemberZDecemberrl  rR   rÔ  rk  rT   )r7   r8   r9   r:   rP   r©   )rA   r–   FrÏ  i@  r   r+   r|   )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   ru   rL   rM   rO   rN   ra   rj   r|   rr  rx   rT   )
r   r   r2   rT   r   r   r;   r<   ÚNaNr
   )r5   rV   rW   rm   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ª  r|   )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+   rv   r,   r-   rT   rr  r.   r   r   r  rÝ   r<  )r&   r%   rz   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   rP  r;   r<   )r5   r6   rW   rR  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-   rr  )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î  rm   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 )NÚappleÚpeachr   rJ   rz   ry   )Ú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   r<  rý  rþ  rü  rj   rú  rû  r|   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¬   rx   r\   r]   r|   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   ry   rz   r{   ru   Úpr  )r,   Úidr.   r/   r,   r/   r  r—   rx   r©   rª  r|   )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(   rA  rB  r   rJ   r   r   rK   ry   rz   r{   ru   rC  r/   r0   r,   r.   r}  )r7   r8   rP   )r/   rD   )r0   rº  )r0   rD   )r0   r  )r&   rB  )r&   rA  )r%   rB  )r%   rA  rj   r:  g      "@g      @ç      @g      !@r;  rˆ   rÞ  r®   rŠ   g["8ªªª@g.UUU@rV  )r   r   r2   rD   r  rº  r   rk   rt  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 )NZd1Zd4Zd3rY   rZ   r[   é   rG  é"   Z2018Z2019)rY   r¹   Únumrw  r¹   rw  r  rT   F)r8   r9   r7   rP   Úsortrx   rj   rV  )	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/  rG  r™   rx   ©r  r,   ©r  r™   rj   ©r8   r9   r–   )r   r   r   r
   r   rk   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é­   é¶   é/   rI  )Ú	firstnameÚlastnameÚheightÚager  r  r  r   F)r8   r7   r  )r  r  )r  r  rj   rV  )r   r   r   rk   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˜   rz   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š  rx   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™   rx   r+  rª  r  r  rj   r|   )r   r   rÊ   r;   rõ  r   r   r   r
   r  rk   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(   rA  rB  r   rJ   r   r   rK   ry   rz   r{   ru   )r,   r-   r.   r/   r0   )Zcol5)Zcol6ry   ©rz   Úsevenr/   r,   r-   r%  rÓ   rŠ   rÞ  r†  r  r‡   rx   rj   rV  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   rd   rn   rt   rƒ   r�   r‘   r“   r�   rŸ   r£   r¤   r²   rÁ  Zparametrizer½   rÎ   rÒ   rÙ   râ   ré   rý   r  r  r  r2   rt  r   r
   r  r  r#  rÂ  r'  r)  r-  r1  r9  rD   r   rk   rD  rS  rT  rX  rZ  rc  ri  r|  r~  r€  r…  r‡  rŒ  r�  r™  rœ  r©  r­  r   r´  rµ  r·  r»  rÄ  rÅ  rÇ  rÌ  rÑ  rØ  rÚ  rÝ  rß  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   rv   ©r*  r+  r|   ©Nr9   )	r   rá   r8   rA   r9   r;   r<   r@   r>   )r5   r6   rÜ  r{  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·   r|   Fr*  )r   rá   r;   r<   rÆ  r   r   r   Útest_pivot_emptyw	  s    zTestPivot.test_pivot_emptyc                 C   sD   t ddgd�}|jdddd�}t|ƒ t |jtdd	gdd
�¡ d S )N)r,   r^  ÚA1)r-   r`  ZB2rÖ   r   r   rJ   r·   r,   r-   rx   )r   rá   Úreprr;   rl   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   rv   r,  r|   r}   )r7   r*  )r7   r+  rj   Fr*  r-  r   )r   r  rá   r8   rA   r9   r;   r<   r   rk   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   ry   r   )Úlev1Úlev2Úlev3Úlev4r7   r6  r7  r8  r|   r‡   rˆ   r†   r‰   rÞ  rŠ   r  )r   r   rJ   rJ   )r   rJ   r   rJ   rj   )r9  r9  r7   r7   )
r   rá   r2   rt  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   rU  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   rV  r=  rx   rr   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   r<  rZ   rV  )r[   rJ   rr   r[   r>  rx   r|   )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   r<  rZ   r[   r>  rx   r|   r4  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(   rB  r·   )r   rO  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/  r0  r3  r5  r:  r;  r?  r@  rA  rD  r   r   r   r   r)  N	  s   $&r)  )%r   r   r   Ú	itertoolsr   Ú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