a
    é´«jun ã                   @   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Zd dl	m
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ƒ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)Úusing_string_dtype)ÚPerformanceWarning)ÚCategoricalÚ	DataFrameÚGrouperÚIndexÚ
MultiIndexÚSeriesÚconcatÚ
date_range)ÚCategoricalDtype)Úreshape©Úpivot_tableTF)Úparamsc                 C   s   | j S ©N)Úparam)Úrequest© r   ú^/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/reshape/test_pivot.pyÚdropna!   s    r   é   é   é   c                 C   s   | j \}}ttj |||¡ƒS r   )r   r   ÚpdÚIntervalIndexÚfrom_arrays)r   ÚclosedÚleftÚrightr   r   r   Úinterval_values&   s    
r$   c                   @   sÜ  e Zd Zejdd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej dd d!d"gfd g d#¢fd$g d#¢fg¡d%d&„ ƒZd'd(„ Zd)d*„ Zd+d,„ Zej d-d.d/g¡d0d1„ ƒZej d-d.d/g¡d2d3„ ƒZej d-d.d/g¡d4d5„ ƒZd6d7„ Zej d-d.d/g¡d8d9„ ƒZd:d;„ Zej d<d=d>ge  !d=d>g¡e"d=d>gƒe#d=d>gƒg¡ej d-d.d/g¡d?d@„ ƒƒZ$ej d<dAd=ge  !dAd=g¡e"dAd=gƒe#dAd=gƒg¡ej d-d.d/g¡dBdC„ ƒƒZ%dDdE„ Z&ejj'dFdG�ej d-d.d/g¡dHdI„ ƒƒZ(ej d-d.d/g¡dJdK„ ƒZ)dLdMgdNgdOfdPdQ„Z*dRdS„ Z+dTdU„ Z,ej dVdLdWg dX¢g dY¢ge#g dZ¢dLd[�fdLdMgd\g d]¢g d^¢ge-j.g d_¢dLdMgd`�fg¡dadb„ ƒZ/dcdd„ Z0dedf„ Z1ej dgg dh¢¡didj„ ƒZ2dkdl„ Z3dmdn„ Z4dodp„ Z5dqdr„ Z6dsdt„ Z7dudv„ Z8dwdx„ Z9dydz„ Z:d{d|„ Z;ej d}d~dd€d�d‚dƒgg¡d„d…„ ƒZ<d†d‡„ Z=dˆd‰„ Z>dŠd‹„ Z?dŒd�„ Z@dŽd�„ ZAd�d‘„ ZBd’d“„ ZCd”d•„ ZDd–d—„ ZEd˜d™„ ZFdšd›„ ZGdœd�„ ZHdždŸ„ ZId d¡„ ZJd¢d£„ ZKd¤d¥„ ZLd¦d§„ ZMej d¨d\e jNfdWe jOfd©e jPfd\dWge jNe jOgfd\d©ge jNe jPgfd©dWge jPe jOgfg¡dªd«„ ƒZQejjRd¬d­„ ƒZSd®d¯„ ZTd°d±„ ZUej d²d.d/g¡d³d´„ ƒZVdµd¶„ ZWd·d¸„ ZXd¹dº„ ZYd»d¼„ ZZd½d¾„ Z[d¿dÀ„ Z\ej dÁd.d/g¡dÂdÃ„ ƒZ]dÄdÅ„ Z^dÆdÇ„ Z_dÈdÉ„ Z`d�S )ÊÚTestPivotTablec              	   C   sL   t g d¢g d¢g d¢tj d¡ d¡tj d¡ d¡tj d¡ d¡dœƒS )N©Úfoor'   r'   r'   Úbarr(   r(   r(   r'   r'   r'   ©Úoner*   r*   Útwor*   r*   r*   r+   r+   r+   r*   )Údullr,   Úshinyr,   r,   r-   r-   r,   r-   r-   r-   é   é   )ÚAÚBÚCÚDÚEÚF)r	   ÚnpÚrandomÚdefault_rngÚstandard_normal)Úselfr   r   r   Údata-   s    ÖÿzTestPivotTable.datac                 C   sâ   ddg}d}t |d|||d�}|j d|||d�}t ||¡ t |d||d� t|ƒdkrn|jjt|ƒks‚J ‚n|jj|d ks‚J ‚t|ƒdkr |jj|ks´J ‚n|jj|d ks´J ‚| 	||g ¡d  
d	¡ ¡ }t ||¡ d S )
Nr0   r1   r2   r3   )ÚvaluesÚindexÚcolumnsÚobserved)r<   r=   r?   r   r   Úmean)r   ÚtmÚassert_frame_equalÚlenr=   ÚnamesÚtupleÚnamer>   ÚgroupbyÚaggÚunstack)r:   r?   r;   r=   r>   ÚtableÚtable2Úexpectedr   r   r   Útest_pivot_table^   s$    
ÿÿzTestPivotTable.test_pivot_tablec                 C   sŽ   t tdƒtdƒg d¢dœƒ}|jddddd	d
�}|j d¡|_|j d¡|_|j d¡|_|j d¡|_|jddddd	|d�}t 	||¡ d S )NZabcdeZfghij©r   r.   r   r   é   ©Úcol1Úcol2Úcol3rQ   rS   rR   Úsumr   )r=   r<   r>   ÚaggfuncÚ
fill_valueÚcategory)r=   r<   r>   rU   rV   r?   )
r	   Úlistr   r=   Úastyper>   rQ   rR   rA   rB   )r:   r?   ÚdfrL   Úresultr   r   r   Ú+test_pivot_table_categorical_observed_equalz   s&    ÿ
ÿú	z:TestPivotTable.test_pivot_table_categorical_observed_equalc                 C   s|   t g d¢g d¢g d¢dœƒ}|jddd�}|jddd�j}t ||¡ |jdd	d
id�}|jdd	d
id�j}t ||¡ d S )N©ÚaÚbÚc©ÚxÚyÚz©r   r.   r   )ÚrowsÚcolsr<   rg   rT   )r>   rU   ©r=   rU   r<   r@   )r	   r   ÚTrA   rB   )r:   rZ   ÚrsZxpr   r   r   Útest_pivot_table_nocols•   s    ÿz&TestPivotTable.test_pivot_table_nocolsc              
   C   s¨   t dddddœdddddœd	d
dddœdddddœdddddœdœƒ}|jddddgdd�}|jdddgddd�}tjg d¢ddgd�}t |j|¡ t |j|¡ d S )Ni`ê  i † iPÃ  i0u  )r   r   r.   r   r0   r1   r2   i[ i] i\ i^ r^   r_   r`   Údi€„ i ¡ i@B )ÚamountÚcustomerÚmonthr   Úquantityrp   ro   rn   r   F)r   ))r0   r^   )r0   r_   )r0   r`   )r0   rl   )r1   r^   )r1   r_   )r1   r`   )r1   rl   )r2   r^   )r2   r_   )r2   r`   )r2   rl   ©rD   )r	   r   r   Úfrom_tuplesrA   Úassert_index_equalr>   r=   )r:   rZ   Zpv_colZpv_indÚmr   r   r   Útest_pivot_table_dropna¡   s(    ûÿ	ÿÿñz&TestPivotTable.test_pivot_table_dropnac                 C   sÀ   t g d¢g d¢dd�}t g d¢g d¢dd�}t||g d¢dœƒ}d	}tjt|d
��$ t|dddgdd�}W d   ƒ n1 s|0    Y  tj||gddgd�}tdg d¢i|d�}t ||¡ d S )N©r^   r^   r_   r_   )r^   r_   rd   T©Ú
categoriesÚordered)r`   rl   r`   rl   )r`   rl   rc   ©r   r.   r   r   )r0   r1   r<   ú1The default value of observed=False is deprecated©Úmatchr<   r0   r1   )r<   r=   r   rq   )ç      ð?ç       @ç      @ç      @©r=   )	r   r	   rA   Úassert_produces_warningÚFutureWarningr   r   r    rB   )r:   Zcat1Úcat2rZ   Úmsgr[   Z	exp_indexrL   r   r   r   Útest_pivot_table_categoricalÆ   s    ÿÿ2z+TestPivotTable.test_pivot_table_categoricalc           	      C   sþ   g d¢}t g d¢g d¢tdƒdœƒ}|d  t|dd�¡|d< d	}tjt|d
��" |jddd|d�}W d   ƒ n1 sx0    Y  tg d¢dd�}| t|dd�¡}tg d¢dd�}t g d¢g d¢g d¢g||d�}|sî|j	t
|ƒd� d¡}t ||¡ d S )N©r^   r_   r`   rl   )	r^   r^   r^   r_   r_   r_   r`   r`   r`   )	r   r.   r   r   r.   r   r   r.   r   é	   ©r0   r1   r2   r0   F©ry   r{   r|   r1   r2   )r=   r>   r<   r   r]   ©rF   re   )ç        r€   ç      @)r~   r�   ç      @)r   ç      @ç       @©r=   r>   ©r>   Úfloat)r	   ÚrangerY   r   rA   rƒ   r„   r   r   Zreindexr   rB   )	r:   r   rx   rZ   r†   r[   Úexpected_columnsÚexpected_indexrL   r   r   r   Ú$test_pivot_table_dropna_categoricalsÖ   s0    ýÿ0
ÿýz3TestPivotTable.test_pivot_table_dropna_categoricalsc                 C   sÌ   t ttjddddgddgdd�g d¢dœƒ}d}tjt|d��  |jd	d
|d�}W d   ƒ n1 sd0    Y  |r„ddg}ddg}ng d¢}g d¢}t d
|ittj	|ddg|d�d	d�d�}t 
||¡ d S )NÚlowÚhighTrw   )r�   r~   r   r€   r�   ©r0   r1   r{   r|   r0   r1   ©r=   r<   r   r   r€   r   r   ©r   r€   r�   )r   r   éÿÿÿÿrŒ   r‚   )r	   r   r6   ÚnanrA   rƒ   r„   r   r   Ú
from_codesrB   )r:   r   rZ   r†   r[   r<   ÚcodesrL   r   r   r   Ú%test_pivot_with_non_observable_dropnaö   s6    ýúÿ.

ÿüþ
z4TestPivotTable.test_pivot_with_non_observable_dropnac                 C   s¼   t tg d¢g d¢dd�tdƒdœƒ}d}tjt|d��  |jd	d
|d�}W d   ƒ n1 s\0    Y  t d
g d¢ittjg d¢g d¢dd�d	d�d�}|s¬|d
  	t
¡|d
< t ||¡ d S )N)r"   r™   rš   r™   rš   )r™   rš   r"   Trw   rO   r›   r{   r|   r0   r1   rœ   r�   )r   r   r.   rŒ   r‚   )r	   r   r•   rA   rƒ   r„   r   r   r    rY   r”   rB   )r:   r   rZ   r†   r[   rL   r   r   r   Ú/test_pivot_with_non_observable_dropna_multi_cat  s0    ýúÿ.
ÿüþ	z>TestPivotTable.test_pivot_with_non_observable_dropna_multi_catc                 C   sŠ   t |ddœƒ}d}tjt|d��  |jdd|d�}W d   ƒ n1 sF0    Y  t ddit| ¡ dd	�d
�}|sz| t¡}t 	||¡ d S )Nr   r›   r{   r|   r0   r1   rœ   r~   rŒ   r‚   )
r	   rA   rƒ   r„   r   r   ÚuniquerY   r”   rB   )r:   r$   r   rZ   r†   r[   rL   r   r   r   Útest_pivot_with_interval_index7  s    .ÿ
z-TestPivotTable.test_pivot_with_interval_indexc              	   C   sÜ   t j g d¢g d¢¡}ttjdddtjd�g d¢t|dd	�jd
d�dœƒ}d}t	j
t|d��$ t|dddddd�}W d   ƒ n1 s†0    Y  |d }tg d¢tt  dd¡t  dd¡dgdd�dtjd�}t	 ||¡ d S )N©r   r   r   r   ©r   r   r.   r.   r   r   rž   ©Údtype©r^   r_   r^   r_   Tr‹   F)Z	ascendingrŠ   r{   r|   r2   r1   r0   rT   ©r=   r>   r<   rU   ÚmarginsÚAll)r   é   é
   r   r.   rŒ   )r=   rF   r©   )r   r   r    r	   r6   ÚarangeZintpr   Zsort_valuesrA   rƒ   r„   r   r   r   ZIntervalÚassert_series_equal)r:   Zordered_catrZ   r†   Z	pivot_tabr[   rL   r   r   r   Ú&test_pivot_with_interval_index_marginsE  s,    ÿýÿ
ÿ$ üz5TestPivotTable.test_pivot_with_interval_index_marginsc                 C   s4   |j d|j|jd�}|j dddd�}t ||¡ d S )Nr3   r’   r0   r2   )r   r0   r2   rA   rB   ©r:   r;   r[   rL   r   r   r   Útest_pass_arraya  s    zTestPivotTable.test_pass_arrayc                 C   s<   |j ddd„ |jd�}|j d|jd dd�}t ||¡ d S )Nr3   c                 S   s   | d S )NrO   r   ©rb   r   r   r   Ú<lambda>g  ó    z3TestPivotTable.test_pass_function.<locals>.<lambda>r’   rO   r2   )r   r2   r=   rA   rB   r³   r   r   r   Útest_pass_functionf  s    z!TestPivotTable.test_pass_functionc                 C   sD   ddg}d}t |||d�}| ||g ¡ d¡ ¡ }t ||¡ d S )Nr0   r1   r2   r’   r@   )r   rG   rH   rI   rA   rB   )r:   r;   r=   r>   rJ   rL   r   r   r   Útest_pivot_table_multiplek  s
    z(TestPivotTable.test_pivot_table_multiplec                 C   sü   t g d¢g d¢g d¢dœƒ}|jd dks.J ‚t|ddgdgd	d
d�}|j}tt d¡gd ttdƒdd�d�}t 	||¡ t g d¢g d¢g d¢dœƒ}|jd dksªJ ‚t|ddgdgd	dd�}|j}tt d¡gd ttdƒdd�d�}t 	||¡ d S )N)ÚcatÚbatrº   r»   rz   rª   )r^   ÚvÚir¼   Úint64r^   r½   r   rT   )r<   r=   r>   rV   rU   r.   ÚabrŒ   r‚   )ç      ø?ç      @ç      @ç      @Úfloat64r@   )
r	   Údtypesr   r   r6   r©   r   rX   rA   r±   )r:   Úfrd   r[   rL   r   r   r   Útest_pivot_dtypesr  s4    ýÿÿ$ýÿÿ$z TestPivotTable.test_pivot_dtypeszcolumns,valuesÚbool1Úfloat1Úfloat2)rÉ   rÊ   rÈ   Úbool2c                 C   sj   t jdt jd�}t||d |dk|dkdœƒ}| ¡ jd||d�}t|jƒ}d	d
„ |D ƒ}||ksfJ ‚d S )NrO   r¨   r   r.   r   )rÉ   rÊ   rÈ   rË   r=   ©r=   r>   r<   c                 S   s   i | ]}|t  d ¡“qS )rÄ   )r6   r©   )Ú.0Úcolr   r   r   Ú
<dictcomp>©  r·   z=TestPivotTable.test_pivot_preserve_dtypes.<locals>.<dictcomp>)r6   r°   rÄ   r	   Úreset_indexr   ÚdictrÅ   )r:   r>   r<   r¼   rZ   Zdf_resr[   rL   r   r   r   Útest_pivot_preserve_dtypes•  s    
ÿÿ
z)TestPivotTable.test_pivot_preserve_dtypesc                 C   sj  t  g d¢¡}tdg d¢i|d�}|j|jj|jjd�}t ddg¡}|j	|j
d  tj¡dd	�}td
dgdtjggtddgtjd�|d�}t ||¡ tg d¢tdddd�dœ|d�}|j|jjtddd�d�}tjdgt jdgdd�gd dgd�}tddgtddgtjd�|d�}t ||¡ |jtdd�tddd�d�}tdgt jdgdd�|d�}t ||¡ d S )N)ú
2011-01-01z
2011-02-01ú
2011-01-02rÓ   rÔ   r0   rN   r‚   r’   )r0   r   )r0   r.   r   )ÚlevelrÁ   r�   r   r.   r¨   rÓ   r3   rO   )ÚfreqÚperiods)r0   ÚdtrØ   ÚME)ÚkeyrÖ   z
2011-01-31zM8[ns]rq   ç      
@ÚYE©rÖ   r€   z
2011-12-31)r   ÚDatetimeIndexr	   r   r=   ro   Údayr   rr   Z
set_levelsÚlevelsrY   r6   Úint32rŸ   r   rA   rB   r   r
   r    )r:   ÚidxrZ   ÚresZexp_columnsÚexpr   r   r   Útest_pivot_no_values¬  sN    ÿÿýþûþÿÿý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 )Nr3   r4   r0   r1   r2   r   )r<   r=   r>   rV   r5   r   ©Úaxis)r=   r>   rV   )r   ÚdroprA   rB   r³   r   r   r   Útest_pivot_multi_valuesÚ  s    ÿÿz&TestPivotTable.test_pivot_multi_valuesc                    s˜   ‡ fdd„}|ddgƒ}|dƒ}|dƒ}t ||gddgdd�}t ||¡ ‡ fdd„}|ddgƒ}|dƒ}|dƒ}t ||gddgdd�}t ||¡ d S )Nc                    s   t ˆ ddgddgd| d�S )Nr3   r4   r0   r1   r2   ©r<   r=   r>   rU   r   ©Úfunc©r;   r   r   r¶   ä  s   ÿz;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>r@   Ústdr   )Úkeysrç   c                    s   t ˆ ddgddgd| dd�S )Nr3   r4   r0   r1   r2   T)r<   r=   r>   rU   r¬   r   rë   rí   r   r   r¶   î  s   ú)r   rA   rB   )r:   r;   rÆ   r[   ZmeansZstdsrL   r   rí   r   Útest_pivot_multi_functionsã  s    z)TestPivotTable.test_pivot_multi_functionsÚmethodTFc                 C   sÊ   t j}tdd|dgg d¢g d¢dœƒ}|r<|jddd	d
�}ntj|ddd	d
�}t||d|gd|||g|d||g|||dggt|dddgdd�tg d¢dd�d�}t ||¡ t |jddd	d
�|j¡ d S )NZR1ZR2ZR4)ÚC1ÚC2ZC3ZC4)r¯   é   é   é   r]   r^   r_   r`   rÌ   rõ   r¯   rô   rö   rŒ   r’   )	r6   rŸ   r	   Úpivotr   r   rA   rB   ri   )r:   rñ   rŸ   rZ   r[   rL   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¦J ‚| ¡ D ]*\}}|j|d |d	 f |d ks®J ‚q®|rð|jd	ddd�}ntj|d	ddd�}t ||j¡ d S )Nz
2014-02-01é   r3   )r×   rÖ   éd   )r^   r`   r^   z
2014-02-02r_   )r   r^   )r   r^   ©r   r_   )r   r_   r`   rÌ   )r	   r   r6   r°   r   Ú	TimestamprŸ   Úlocr÷   Znotnar<   rT   rC   ZiterrowsrA   rB   ri   )r:   rñ   rZ   ÚpvÚ_Úrowr[   r   r   r   Útest_pivot_index_with_nan_dates  s$    þÿ$z.TestPivotTable.test_pivot_index_with_nan_datesc           
      C   s¸  t tj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|› d�d�tj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|› d
�d�tjddd�tjddd�dœƒ}tg d¢ƒ}tjddgd dd|› d
�d�}t ||g¡}tjddgdd|› d�d�}t g d¢g d¢g||d�}|�r@|j	ddd�}	ntj	|ddd�}	t
 |	|¡ t ddgddgg||d d… d�}|�r–|j	dddd�}	ntj	|dddd�}	t
 |	|¡ d S )NéÝ  r   r‰   r   r.   zM8[z, US/Pacific]r¨   éÞ  z, Asia/Tokyo]r   r¾   )Údt1Údt2Údata1Údata2©r  r  r  r  z2014/01/01 09:00z2014/01/02 09:00r  ©rF   r©   z2013/01/01 09:00z2013/01/02 09:00r  ©r   r.   r   r.   ©r   r   r   r   r’   r   r  rÌ   )r	   r   rÞ   r   r6   r°   r   r   r    r÷   rA   rB   )
r:   rñ   ÚunitrZ   Úexp_col1Úexp_col2Úexp_colÚexp_idxrL   rþ   r   r   r   Útest_pivot_with_tz4  sf    ü
ù	ü
ù	ìÿ

ý
ýý
ý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d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-0700z
US/Pacific)Útz)Ú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¶   �  r·   z8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>r  Úminrê   rŒ   z2016-08-12 00:00:00z2016-08-25 00:00:00r’   )r	   r   rü   Ú	set_indexrÐ   r  Úmapr   r   rÞ   rA   rB   )r:   rZ   Zminsr[   rL   r   r   r   Útest_pivot_tz_in_valuest  sR    þþþþþïÿûþÿþûøz&TestPivotTable.test_pivot_tz_in_valuesc              	   C   sv  t t dd¡t dd¡t dd¡t dd¡gt dd¡t dd¡t dd¡t dd¡gtjddd	�tjddd	�d
œƒ}tg d¢ƒ}tjddgd ddd�}t ||g¡}t g d¢g d¢gtjddgddd�|d�}|ræ|j	ddd�}ntj	|ddd�}t
 ||¡ t ddgddggtjddgddd�tjddgddd�d�}|�rT|j	dddd�}ntj	|dddd�}t
 ||¡ d S )Nz
2013-01-01r3   z
2013-01-02z2013-01ÚMz2013-02r   r¾   r¨   )Úp1Úp2r  r  r  r.   r   )rF   rÖ   r
  r  r  r’   r   r   r   r  rÌ   )r	   r   ÚPeriodr6   r°   r   ZPeriodIndexr   r    r÷   rA   rB   )r:   rñ   rZ   r  r  r  rL   rþ   r   r   r   Útest_pivot_periods«  sH    



ü



üòÿýýz!TestPivotTable.test_pivot_periodsc                 C   sŠ   t g d¢t d¡t d¡t d¡t d¡gddœƒ}t dtg d¢dd�tt d¡t d¡d	gd
d�d�}|jdd
ddd�}t ||¡ d S )Nr§   Z2019Q1Z2019Q2r~   )r^   r_   rb   ©r   r.   r­   r^   rŒ   r­   r_   ©r;   r=   r>   rb   T)r=   r>   r<   r¬   )r	   r   r!  r   r   rA   rB   )r:   rZ   rL   r[   r   r   r   Útest_pivot_periods_with_marginsÙ  s"    üøÿýz.TestPivotTable.test_pivot_periods_with_marginsr<   ÚbazÚzooc           	      C   sÄ   t g d¢g d¢g d¢g d¢dœƒ}|r8|jdd|d�}ntj|dd|d�}g d	¢g d
¢g}tddgdd�}tddgg d¢gg d¢g d¢gd dgd�}t |||d�}|d  t¡|d< t ||¡ d S )N©r*   r*   r*   r+   r+   r+   ©r0   r1   r2   r0   r1   r2   ©r   r.   r   r   rO   rù   ©rb   rc   rd   ÚqÚwÚt©r'   r(   r&  r'  r'   r(   rÌ   )r   r.   r   rb   rc   rd   )r   rO   rù   r,  r-  r.  r*   r+   ©r;   rF   r&  r'  rŠ   )r   r   r   r   r   r   )r   r   r.   r   r   r.   ©rà   r¡   rD   r$  )	r	   r÷   r   r   r   rY   ÚobjectrA   rB   ©	r:   r<   rñ   rZ   r[   r;   r=   r>   rL   r   r   r   Ú test_pivot_with_list_like_valuesñ  s(    üÿ	ýz/TestPivotTable.test_pivot_with_list_like_valuesr(   c           	   	   C   s  t g d¢g d¢g d¢g d¢dœƒ}|r8|jdd|d�}ntj|dd|d�}tjd	tjd
gtjdtjdgtjdtjdgd	tjdtjgdtjdtjgdtjdtjgg}tg d¢dd�}tddgddggg d¢g d¢gd dgd�}t |||d�}|d  t¡|d< t	 
||¡ d S )Nr(  r)  r*  r+  r/  r'  r'   rÌ   r0   r   r2   rù   r1   rO   r   r.   r   )r,  r.  r-  rb   rc   rd   r0  r(   r&  r*   r+   r¦   ©r   r   r   r   r1  r$  )r	   r÷   r   r6   rŸ   r   r   rY   r2  rA   rB   r3  r   r   r   Ú%test_pivot_with_list_like_values_nans  s4    üÿ	úýz4TestPivotTable.test_pivot_with_list_like_values_nansc                 C   s`   t g d¢g d¢g d¢dœƒ}d}tjt|d�� |jddd� W d   ƒ n1 sR0    Y  d S )	Nr]   re   rP   z=pivot\(\) missing 1 required keyword-only argument: 'columns'r|   rQ   rS   )r=   r<   ©r	   ÚpytestÚraisesÚ	TypeErrorr÷   )r:   rZ   r†   r   r   r   Ú#test_pivot_columns_none_raise_errorB  s    z2TestPivotTable.test_pivot_columns_none_raise_errorzBMultiIndexed unstack with tuple names fails with KeyError GH#19966©Úreasonc                 C   sæ   t g d¢d�}g d¢g d¢g d¢g d¢g d¢g d¢g}td	d
gddggg d¢g d¢gd�}t|||dd�}|r€|jdddd�}ntj|dddd�}tddgddgd�tddgddgd�tddgddgd�dœ}t|ƒ}t ||¡ d S ) N©r   r   r.   r   r   rO   rí   )r*   r0   r   rb   )r*   r1   r.   rc   )r*   r2   r   rd   )r+   r0   r   r,  )r+   r1   rO   r-  )r+   r2   rù   r.  r(   r&  Úfirstr  r¦   r5  )rà   r¡   r2  )r;   r=   r>   r©   )r(   r?  )r(   r  )r&  r?  rÌ   r   r   r*   r+   r‚   r.   rO   r   rù   rŠ   )r   r   r	   r÷   r   r   rA   rB   )r:   rñ   r=   r;   r>   rZ   r[   rL   r   r   r   Útest_pivot_with_multiindexI  s>    úþýüýz)TestPivotTable.test_pivot_with_multiindexc                 C   s|   t g d¢g d¢g d¢g d¢dœƒ}tjtdd��8 |rH|jdd	d
d� ntj|dd	d
d� W d   ƒ n1 sn0    Y  d S )Nr(  r)  r*  r+  r/  z^\('bar', 'baz'\)$r|   r'  r'   )r(   r&  rÌ   )r	   r8  r9  ÚKeyErrorr÷   r   )r:   rñ   rZ   r   r   r   Útest_pivot_with_tuple_of_valuess  s    üÿz.TestPivotTable.test_pivot_with_tuple_of_valuesr0   r1   r2   r­   c                 C   sÊ   |j |jd d… |f }| |¡|  ¡ }tj||dd� |j|ksHJ ‚| ¡ }|j |df jd d… }	| |¡|  ¡ }
tj|	|
dd� |	j|dfksœJ ‚|j |df|f }||  ¡ }||ksÆJ ‚d S )Nrž   F©Zcheck_namesÚ )	rý   r=   rG   r@   rA   r±   rF   Z
sort_indexZiloc)r:   r[   Z
values_colr;   r=   r>   Úmargins_colZcol_marginsZexpected_col_marginsZindex_marginsZexpected_ix_marginsZgrand_total_marginsZexpected_total_marginsr   r   r   Ú_check_output…  s    	zTestPivotTable._check_outputc                 C   s�   |j dddgdddd�}|  |d|¡ |j dddgddddd	�}| j|d|dd
� |j ddgdddd�}|jjd D ]}|  || ||¡ qtd S )Nr3   r0   r1   r2   Tr@   )r<   r=   r>   r¬   rU   ZTotals)r<   r=   r>   r¬   rU   Úmargins_name)rE  ©r=   r>   r¬   rU   r   )r   rF  r>   rà   )r:   r;   r[   rJ   Ú	value_colr   r   r   Útest_marginsž  s$    ÿúÿzTestPivotTable.test_marginsc                 C   sB  dd„ |j D ƒ|_ t d¡}|r$d}tjt|d��$ |jddgdd	d
� W d   ƒ n1 s\0    Y  |jdd�jddgdd	d
�}|j D ]&}|jd|f }|||  	¡ ksˆJ ‚qˆtjt|d��$ |jddgdd	d
� W d   ƒ n1 sè0    Y  |jdd�jddgdd	d
�}dD ]*}|jd|f }|||  	¡ k�sJ ‚�qd S )Nc                 S   s   g | ]}|d  ‘qS )r.   r   )rÍ   Úkr   r   r   Ú
<listcomp>»  r·   z.TestPivotTable.test_no_col.<locals>.<listcomp>ú&agg function failed [how->mean,dtype->ú-dtype 'str' does not support operation 'mean'r|   ZAAÚBBTr@   )r=   r¬   rU   ÚCCr“   ©r­   rD  )ZDDZEEZFF)
r>   ÚreÚescaper8  r9  r:  r   rè   rý   r@   )r:   r;   Úusing_infer_stringr†   rJ   rI  ZtotalsÚitemr   r   r   Útest_no_col·  s(    
2
ÿ
2
ÿzTestPivotTable.test_no_colz*columns, aggfunc, values, expected_columnsr@   )ç      @rW  çš™™™™™@rX  )r‘   r‘   çš™™™™™@rY  )r(   r­   r'   r­   rŒ   rT   )r‰   é   é   rO   rù   r/   )é   é   é    r/   r/   r[  ))r(   r*   )r(   r+   )r(   r­   )r'   r*   )r'   r+   )r'   r­   rq   c           
      C   sÒ   t g d¢g d¢g d¢g d¢g d¢dœƒ}|dkr€t d¡}|rBd	}tjt|d
��  |j|d|d� W d   ƒ n1 sv0    Y  d|vr”|jdd�}|jdd�j|d|d�}t |tddgƒ|d�}	t	 
||	¡ d S )N©	r'   r'   r'   r'   r'   r(   r(   r(   r(   ©	r*   r*   r*   r+   r+   r*   r*   r+   r+   ©	ÚsmallÚlargerc  rb  rb  rc  rb  rb  rc  ©	r   r.   r.   r   r   r   rO   rù   r®   ©	r.   r   rO   rO   rù   rù   é   r‰   r‰   ©r0   r1   r2   r3   r4   rT   rM  rN  r|   T)r>   r¬   rU   r1   r“   r2   r3   r4   r’   )r	   rR  rS  r8  r9  r:  r   rè   r   rA   rB   )
r:   r>   rU   r<   r–   rT  rZ   r†   r[   rL   r   r   r   Ú%test_margin_with_only_columns_definedÑ  s*    "ñÿ
.ÿz4TestPivotTable.test_margin_with_only_columns_definedc                 C   sÀ   |  ¡ }t t|ƒd ¡ t|ƒd¡ d¡|g d¢< ttddgddgƒƒdg }tj	|d	d
�}t
g d¢g d¢dœ|d�jddd�}|d |d  |d< |jdddgddddd�}t ||¡ d S )Nr   Úi8)r3   r4   r5   r(   r'   r*   r+   rQ  r›   rq   )é   é   r   r‰   é-   )é!   r   é$   é3   éx   ©r,   r-   r‚   r2   r   ræ   r,   r-   r­   r3   r0   r1   TrT   r   ©r<   r=   r>   r¬   rU   rV   )Úcopyr6   r°   rC   r   rY   rX   r   r   rr   r	   Úrename_axisr   rA   rB   )r:   r;   rZ   Úmi_valÚmirL   r[   r   r   r   Útest_margins_dtype  s&    ,ÿþú	z!TestPivotTable.test_margins_dtypec                 C   sŒ   t tddgddgƒƒdg }tj|dd�}tg d¢g d	¢d
œ|d�jddd�}|d |d  |d< |jdddgddtdd�}t 	||¡ d S )Nr(   r'   r*   r+   rQ  r›   rq   )r   r   r.   r   rO   )r.   r   r.   r.   rù   rq  r‚   r2   r   ræ   r,   r-   r­   r3   r0   r1   Tr   rr  )
rX   r   r   rr   r	   rt  r   rC   rA   rB   )r:   r;   ru  rv  rL   r[   r   r   r   Útest_margins_dtype_len-  s"    ÿþú	z%TestPivotTable.test_margins_dtype_lenrg   ))r   r.   ©r^   r_   rû   )r^   r   c                 C   s~   t |d g d¢|d g d¢dg d¢iƒ}|jd|d�}t g d¢gtjg d¢|d	�tdg|d
krbdndd�d�}t ||¡ d S )Nr   re   r   r¼   )r   rO   rù   )r<   r>   )r�   r�   rŽ   ))r   r   )r.   r.   )r   r   rq   ry  Ústrr2  r¨   ©r>   r=   )r	   r   r   rr   r   rA   rB   )r:   rg   Údf2r[   rL   r   r   r   Ú test_pivot_table_multiindex_only@  s    (ýz/TestPivotTable.test_pivot_table_multiindex_onlyc                 C   sf   t dddd�}ttj d¡ d¡tj d¡ d¡|dœƒ}|jddgd	d
�}|jjd  	|¡sbJ ‚d S )Nz
2016-01-01r   zEurope/Amsterdam)r×   r  r.   rŠ   r1   r2   F)r=   r   r   )
r   r	   r6   r7   r8   r9   r   r=   rà   Úequals)r:   ZdtirZ   r[   r   r   r   Útest_pivot_table_retains_tzN  s    ýÿz*TestPivotTable.test_pivot_table_retains_tzc                    sŽ   t j‰ ttddgg d¢ddg‡ fdd„tdƒD ƒd	gƒƒ}t|ƒ}|jd
g d¢dgd�}|jtd�}|jdg d¢dgd�}t	j
||dd� d S )Nr'   r(   rŠ   Úx1Zx2c                    s   g | ]}ˆ t |ƒ ‘qS r   )r   ©rÍ   r½   ©rl   r   r   rL  e  r·   z=TestPivotTable.test_pivot_integer_columns.<locals>.<listcomp>rö   r~   r   )r   r   r   r.   )r<   r=   r>   r“   Ú4)Ú0Ú1Ú3Ú2FrC  )r   r  rX   r   r•   r	   r   Úrenamerz  rA   rB   )r:   r;   rZ   rJ   r|  rK   r   r‚  r   Útest_pivot_integer_columns\  s    ûÿ	z)TestPivotTable.test_pivot_integer_columnsc                 C   s˜   t g d¢d g d¢d dgd dgd  d tj d¡ d¡dœƒ}|jd	d
ddgd�}| g d¢¡d	  ¡ }| d¡ d¡j	ddd�}t
 ||¡ d S )N)r^   r^   r^   r^   r_   r_   r_   r_   r.   )r   r   r   r   r   r   r   r   r'   r   r(   é   )r^   r_   r`   Úvaluer‹  r^   r_   r`   r’   r]   r   Úall)rç   Úhow)r	   r6   r7   r8   r9   r   rG   r@   rI   r   rA   rB   )r:   r;   rJ   ÚgroupedrL   r   r   r   Útest_pivot_no_level_overlapq  s    

üÿ	z*TestPivotTable.test_pivot_no_level_overlapc           
   
   C   sB  d}t  dtfdtfdtfdtfdtfdtfdtfg¡}t jg d	¢dtfdtfgd
�}t j||d
�}t j d¡ 	dt
|ƒ|¡}|d | |d< |d | |d< ttdddƒtdddƒƒ}|t j d¡ 	dt
|ƒ|¡ }|j|d< |j|d< |j|d< t j d¡ dd|¡|d< t|ƒ}|jdddgg d¢dd�}	|	jj�s>J ‚d S )Ni'  r   ÚSymbolÚYearÚMonthZDayÚQuantityZPrice)	)ÚSP500ZADBE)r”  ZNVDA)r”  ZORCL)ÚNDQ100ZAAPL)r•  ZMSFT)r•  ZGOOG)ÚFTSEzDGE.L)r–  zTSCO.L)r–  zGSK.Lr¨   r.   r   iÐ  r   iÚ  rj  é   r�   r   )r   r�  r‘  r@   ©r=   r>   rU   )r6   r©   r2  Úintr”   ÚarrayÚemptyr7   r8   ZintegersrC   r   r   Úyearro   rß   Z	lognormalr	   r   r>   Zis_monotonic_increasing)
r:   Únr©   ZproductsÚitemsZiproductZdrÚdatesrZ   Úpivotedr   r   r   Útest_pivot_columns_lexsortedƒ  sB    ùÿô


üz+TestPivotTable.test_pivot_columns_lexsortedc                 C   sH   dgdgdœ}|  ddg¡ |¡ d¡}|jdd|d�}t ||¡ d S )Nrî   rT   ©r3   r4   r0   r1   r˜  )rG   rH   rI   r   rA   rB   )r:   r;   rÆ   rL   r[   r   r   r   Útest_pivot_complex_aggfunc¶  s    z)TestPivotTable.test_pivot_complex_aggfuncc                 C   sD   |ddg j ddgtdd�}| ¡ }t|d d… ƒ|d ks@J ‚d S )Nr0   r1   T)r=   rU   r¬   rž   )r   rC   ÚtolistrT   )r:   r;   r[   Zresult_listr   r   r   Útest_margins_no_values_no_cols½  s
    
ÿz-TestPivotTable.test_margins_no_values_no_colsc                 C   s8   |g d¢ j ddgdtdd�}|j ¡ g d¢ks4J ‚d S )NrŠ   r0   r1   r2   T©r=   r>   rU   r¬   ©r€   r~   r�   r€   ç      &@©r   rC   r­   r¤  ©r:   r;   r[   r   r   r   Útest_margins_no_values_two_rowsÅ  s    ÿz.TestPivotTable.test_margins_no_values_two_rowsc                 C   s4   |ddg j ddtdd�}|j ¡ g d¢ks0J ‚d S )Nr0   r1   Tr¦  )r�   r�   r¨  r©  rª  r   r   r   Ú&test_margins_no_values_one_row_one_colÍ  s    ÿz5TestPivotTable.test_margins_no_values_one_row_one_colc                 C   sH   g d¢|d< |g d¢ j ddgddgtdd�}|j ¡ g d	¢ksDJ ‚d S )
N)r^   r_   r`   rl   ÚerÆ   ÚgÚhr½   ÚjrK  r3   ©r0   r1   r2   r3   r0   r1   r2   Tr¦  r§  r©  rª  r   r   r   Ú'test_margins_no_values_two_row_two_colsÕ  s
    ÿz6TestPivotTable.test_margins_no_values_two_row_two_colsÚmargin_namer'   r*   iš  Nr^   r_   c              	   C   sæ   d|› d�}t jt|d��* t|dddgdgd|d	� W d   ƒ n1 sJ0    Y  t jt|d��* t|ddgddgd|d	� W d   ƒ n1 s’0    Y  t jt|d��( t|ddgdgd|d	� W d   ƒ n1 sØ0    Y  d S )
NzConflicting name "z3" in margins|margins_name argument must be a stringr|   r3   r0   r1   r2   T)r<   r=   r>   r¬   rG  )r8  r9  Ú
ValueErrorr   )r:   r³  r;   r†   r   r   r   Ú-test_pivot_table_with_margins_set_margin_nameÞ  s:    
ÿú$ú$úz<TestPivotTable.test_pivot_table_with_margins_set_margin_namec                 C   s¬  t d ¡ d ¡ g d¢tdddƒtdddƒtdddƒtdddƒtdddƒtdddƒtdddƒtdddƒgd	œƒ d
¡}t tjg d¢dd� dd¡tjtdddƒgdd�d ¡ d�}d
|j	_
d|j_
t|tdd�dddd�}t ||¡ t|dtdd�dd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dd�}t ||¡ t|dtdd�ddd�}t ||j¡ | ¡ }t|tdd
d�dddd�}t ||¡ t|dtdd
d�ddd�}t ||j¡ d}tjt|d��* t|tdd d�dddd� W d   ƒ n1 �sd0    Y  tjt|d��* t|dtdd d�ddd� W d   ƒ n1 �s®0    Y  | d
¡}t|tdd
d!�dddd�}t ||¡ t|dtdd
d!�ddd�}t ||j¡ d"}tjt|d��* t|tdd d!�dddd� W d   ƒ n1 �sT0    Y  tjt|d��* t|dtdd d!�ddd� W d   ƒ n1 �sž0    Y  d S )#NúA A A A A A A Bú$Carl Mark Carl Carl Joe Joe Joe Carl©r   r   rO   r   rf  r   r‰   r   r  r   r¯   r.   rj  )ÚBranchÚBuyerr“  ÚDater»  )r¯   r]  r   r¾   r¨   r   r—  rÜ   rÝ   zCarl Joe Markr’   rº  r“  rT   ©r=   r>   r<   rU   r‰   r]  r®   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  r6   rš  r   r   rÞ   r=   rF   r>   r   r
   rA   rB   ri   rŸ   rY   rÐ   r8  r9  rA  r´  )r:   Úusing_array_managerrZ   rL   r[   r†   r   r   r   Útest_pivot_timegrouper  s   







øüÿðýûû ÿûûû
û
û
û&
û&	

û
û
û&
ûz%TestPivotTable.test_pivot_timegrouperc                 C   sv  t d ¡ d ¡ g d¢tdddddƒtdd	ddd
ƒtdddddƒtdddddƒtdddddƒtdddddƒtdddddƒtddd
ddƒgtdddddƒtddddd
ƒtdd	d
ddƒtdddddƒtdddddƒtdd	d
ddƒtdddddƒtdddddƒgdœƒ}t|tddd�tddd�dd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d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dd�}t ||¡ t|d$gtddd�tddd�gddd�}t ||j¡ d S )%Nr¶  r·  r¸  r  r/   r   rZ  r   r‰   rO   r¯   rö   r.   rj  r\  r   rô   r®   é   )r¹  rº  r“  r»  ÚPayDayrÙ   r»  r½  rÂ  r“  rT   r¼  r   rù   r—  rÝ   r’   rq   r0   r1   r¹  )r	   r¾  r   r   r
   r6   rš  rŸ   r   r   rÞ   r=   rF   r>   rA   rB   ri   r   rr   )r:   rZ   r[   rL   Ztuplesrâ   r   r   r   Útest_pivot_timegrouper_doubleœ  sæ    øøòÿ

ûðÿí



üù	



üùâ(

ûú&ÿþûûûz,TestPivotTable.test_pivot_timegrouper_doublec                 C   sª  t jg d¢ddd�}t jg d¢dd�}tg d¢||tjd	d
d�ddgd dœƒ}|d d… }tddgƒ}tddgdd�}t ||g¡}tddgddgddgg||d�}t|dgdgdgd�}	t	 
|	|¡ tg d¢ƒ}tg d¢d ƒ}t jddgd  dd!d�}
t |||
g¡}ttjg d"¢g d#¢g d$¢gd
d�||d d … d�}tt g d%¢g d&¢g d'¢g¡||d d … d�}t||gdd(�}t|dgd!gdd)gd*d+gd,�}	t	 
|	|¡ d S )-N©ú2011-07-19 07:00:00ú2011-07-19 08:00:00ú2011-07-19 09:00:00rÅ  rÆ  rÇ  zM8[ns, US/Pacific]r  ©r©   rF   ©ú2013-01-01 15:00:00rÊ  rÊ  ú2013-02-01 15:00:00rË  rË  zM8[ns, Asia/Tokyo]r¨   ©r^   r^   r^   r_   r_   r_   rù   r¾   r   r.   r   ©Úlabelr  r  Úvalue1Úvalue2rÏ  r^   r_   rÎ  rŒ   r�   r€   r~   r�   r   r�   r’   rÌ   )rT   rT   rT   rT   r@   r@   r@   r@   )rÏ  rÏ  rÐ  rÐ  rÊ  rË  r   r  )r   r   r   r.   )r   r   r.   r   )r.   rO   r   r.   )r�   r€   r~   r   )r~   r�   r   r~   )r   r�   r~   r   ræ   rÐ  rT   r@   r¼  )r   rÞ   r	   r6   r°   r   r   r    r   rA   rB   rš  r   )r:   Údates1Údates2rZ   r  r  r  r  rL   r[   Zexp_col3Z	expected1Z	expected2r   r   r   Útest_pivot_datetime_tz  s€    ö÷
ûÿ
ÿ
ýø
õ
ñýÿ
÷ûz%TestPivotTable.test_pivot_datetime_tzc              
   C   s2  t  g d¢¡}t  g d¢¡}tg d¢||tjddd�ddgd	 d
œƒ}t|d|d jjdd�}tddgdd�}tddgddgddgdœ|tg d¢tj	dd�d�}t
 ||¡ t||d jj|d jjdd�}tddgddgddgdœtddgtj	dd�tg d¢tj	dd�d�}t
 ||¡ t||d jjj|d jj|d jjgdd�}tjtjg d¢tj	d�tjddgd	 tj	d�gddgd�}tt g d¢g¡tdgtj	d�|d�}t
 ||¡ t|t g d ¢¡|d jj|d jjgdd�}tt d!d	dtjdtjgtjtjtjd"tjd#gg¡d$d%g|d�}t
 ||¡ d S )&NrÄ  rÉ  rÌ  rù   r¾   r¨   r   r.   r   rÍ  rÎ  r  rÏ  rÌ   r^   r_   rŒ   r�   r€   r~   r�   r   r�   )r®   rf  r‰   rÈ  r’   r  )r®   r®   rf  rf  r‰   r‰   rq   )r�   r€   r~   r�   r   r�   r  )ÚXrÔ  rÔ  rÔ  ÚYrÕ  r   r   rO   rÔ  rÕ  )r   rÞ   r	   r6   r°   r   rØ   r  r   rá   rA   rB   ro   rœ  r<   r   r    rš  rŸ   )r:   rÑ  rÒ  rZ   r[   r  rL   r  r   r   r   Útest_pivot_dtaccessorv  s‚    ÿ
ÿ

ûÿ
ÿýÿýüþûýü*ÿûz$TestPivotTable.test_pivot_dtaccessorc                 C   s¶   t dddd�}tt t|ƒ¡|d�}tt|ƒ|jj|jj	d�}|j
 d¡|_
t |jj	¡}i }|jj ¡ jD ]*}|jj|k}t|j| || d�||< qlt|td�j}t ||¡ d S )	Nú1/1/2000ú
12/31/2004r3   rÝ   r‚   r’   r   r¨   )r   r   r6   r°   rC   r   r	   r=   rœ  Z	dayofyearr>   Ú	droplevelÚasarrayr¤   r<   r”   ri   rA   rB   )r:   Úrngr  r[   ZdoyrL   rc   Úmaskr   r   r   Ú
test_dailyÑ  s    ÿzTestPivotTable.test_dailyc                 C   s¶   t dddd�}tt t|ƒ¡|d�}tt|ƒ|jj|jj	d�}|j
 d¡|_
t |jj	¡}i }|jj ¡ jD ]*}|jj|k}t|j| || d�||< qlt|td�j}t ||¡ d S )	Nr×  rØ  rÙ   rÝ   r‚   r’   r   r¨   )r   r   r6   r°   rC   r   r	   r=   rœ  ro   r>   rÙ  rÚ  r¤   r<   r”   ri   rA   rB   )r:   rÛ  r  r[   ro   rL   rc   rÜ  r   r   r   Útest_monthlyã  s    zTestPivotTable.test_monthlyc                 C   sv   dddœ}t |dgt| ¡ ƒ|d�}t |dg| ¡ |d�}t ||¡ dd„ |D ƒ}t |dg||d�}t ||¡ d S )NrT   r@   r¢  r0   )r=   r<   rU   c                 s   s   | ]
}|V  qd S r   r   )rÍ   r‹  r   r   r   Ú	<genexpr>ÿ  r·   zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>)r   rX   rï   rA   rB   )r:   r;   ZaggsZpivot_values_listZpivot_values_keysZagg_values_genZpivot_values_genr   r   r   Ú%test_pivot_table_with_iterator_valuesò  s    
ÿÿ
ÿz4TestPivotTable.test_pivot_table_with_iterator_valuesc                 C   s˜   d}t g d¢g d¢g d¢dœƒ}|jddd|d	d
gd�}tdd|gdd�}ddd	d|fddd
d|fg}tj|g d¢d�}t |j||d�}t ||¡ d S )NZWeekly)ÚbaconÚcheeserá  râ  )rÁ   rÃ   gš™™™™™	@gffffff
@)rÙ   rÙ   ri   ri   )rU  Úcostrß   rU  rß   Tr@   Úmax)r=   r>   r¬   rG  rU   rá  râ  rŒ   )r@   rã  rÙ   )r@   rã  ri   rã  )rä  rã  rÙ   )rä  rã  ri   )NNrß   rq   r’   )r	   r   r   r   rr   r<   rA   rB   )r:   rG  ZcostsrJ   ÚixZtupsrg   rL   r   r   r   Ú/test_pivot_table_margins_name_with_aggfunc_list  s2    ýÿûúz>TestPivotTable.test_pivot_table_margins_name_with_aggfunc_listc                 C   sŒ   t t d¡t d¡d t d¡d dœƒ}t g d¢g d¢g d¢gƒ}tg d¢d	d
�|_tg d¢dd
�|_|jdd	d|dd�}t ||¡ d S )Nrf  r   r.   ra   ©r~   r   rÀ   ©rO   rù   rW  ©r   r   rÂ   ©r   r   r­   rc   rŒ   rd   rb   T©r   r¬   )	r	   r6   r°   r   r=   r>   r   rA   rB   )r:   r?   rZ   rL   rJ   r   r   r   Útest_categorical_margins#  s    $ÿz'TestPivotTable.test_categorical_marginsc                 C   sÚ   t t d¡t d¡d t d¡d dœƒ}t g d¢g d¢g d¢gƒ}tg d¢d	d
�|_tg d¢dd
�|_|j d¡|_|j d¡|_d}t	j
t|d��$ |jdd	d|dd�}W d   ƒ n1 sÀ0    Y  t	 ||¡ d S )Nrf  r   r.   ra   rç  rè  ré  rê  rc   rŒ   rd   rW   r{   r|   rb   Trë  )r	   r6   r°   r   r=   r>   rc   rY   rd   rA   rƒ   r„   r   rB   )r:   r?   rZ   rL   r†   rJ   r   r   r   Ú!test_categorical_margins_category0  s    $ÿ2z0TestPivotTable.test_categorical_margins_categoryc                 C   sl   t g d¢g d¢g d¢g d¢dœƒ}t|ddd�}t g d	¢g d
¢g d¢dœtg d¢dd�d�}t ||¡ d S )N)r.   r   rù   rf  )r   r   rO   rf  )r   r   r   rù   )rÔ  rÔ  rÕ  rÕ  r±  r3   T)r=   r¬   )r€   r�   rO   )rÁ   g      @rÃ   )r   r�   rÂ   rŠ   )rÔ  rÕ  r­   rŒ   r‚   ©r	   r   r   rA   rB   ©r:   rZ   r[   rL   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š   r0   r1   rw   r   rù   )ÚInÚColÚValrñ  rò  ró  )r=   r>   r<   r?   )ry   rF   r   r€   )r;   r>   rŒ   )r>   r<   r?   rÂ   )r;   r>   r=   )r6   rŸ   r	   r   r•   r   r   ÚCategoricalIndexr   r=   rA   rB   )	r:   r?   ry   râ   rÎ   rZ   r[   Zexpected_colsrL   r   r   r   Útest_pivot_with_categoricalR  s.    ýÿÿþÿz*TestPivotTable.test_pivot_with_categoricalc           	      C   sÞ   t g d¢g d¢g d¢dœƒ}|d  d¡|d< d}tjt|d��$ |jd	dd
|dd�}W d   ƒ n1 sj0    Y  tjg d¢g d¢ddd�}tddgd
d�}t	j
ddgddgddggt	jd�}t |||d�}t ||¡ d S )N)r0   r1   r2   r2   rv   rz   )rò   ró   ÚVrò   rW   r{   r|   rö  ró   Úcount)r=   r>   r   rU   rŠ   F©rx   ry   rF   r^   r_   rŒ   r   r   r.   r¨   r’   )r	   rY   rA   rƒ   r„   r   r   rô  r   r6   rš  r¾   rB   )	r:   r?   rZ   r†   r[   r—   r–   Úexpected_datarL   r   r   r   Útest_categorical_aggfuncu  s$    ÿ
ÿ$ÿ"ÿz'TestPivotTable.test_categorical_aggfuncc           	      C   s¼   t g d¢g d¢g d¢dœƒ}g d¢}|d  d¡j |¡|d< |jddd	|d
d�}tddgd	dd�}tj||ddd�}ddggddggd  }t |||d�}|r¬|jdg }t	 
||¡ d S )N)rú   rp  éÜ   )ÚJanuaryrü  rü  )r  r  r  )ÚSalesr’  r‘  )rü  ÚFebruaryZMarchZAprilÚMayZJuneZJulyZAugustZ	SeptemberZOctoberZNovemberZDecemberr’  rW   rý  r‘  rT   )r<   r=   r>   r?   rU   r  r  r¾   r	  Frø  i@  rp  r   r/   r’   rü  )r	   rY   rº   Zset_categoriesr   r   r   rô  rý   rA   rB   )	r:   r?   rZ   Úmonthsr[   r–   r—   rù  rL   r   r   r   Ú%test_categorical_pivot_index_ordering‹  s4    ýÿûÿÿz4TestPivotTable.test_categorical_pivot_index_orderingc                 C   s(  t g d¢g d¢g d¢dœƒ}|jdddgdd	�}tjg d¢g d¢gddgd
�}t g d¢|dgd�}t ||¡ |jddddd�}t dtjtjgtjdtjgtjtjdggtg d¢dd�tg d¢dd�d�}t ||¡ |jdddgd	�}t dgdgg¡}t g d¢tg d¢dd�|d�}t ||¡ d S )N)r   r   rO   )r2   r3   r4   )r   r   r‰   rP   rQ   rS   rR   rT   rh   rq   r’   r˜  r   r   rO   rŒ   )	r	   r   r   r    rA   rB   r6   rŸ   r   )r:   rZ   r[   rt   rL   r   r   r   Útest_pivot_table_not_series·  s     &ýz*TestPivotTable.test_pivot_table_not_seriesc                 C   sh   d}t dg d¢itdgtd�d�}t|dgtd|d�}tdd	d
|gddd�}t |g d�}t ||¡ d S )Nu   Î”Î¿ÎºÎ¹Î¼Î®r'   re   r¨   r“   T)r=   rU   r¬   rG  r   r.   r   r2  rÈ  r’   )r	   r   r2  r   rC   rA   rB   )r:   ÚgreekÚframerJ   r=   rL   r   r   r   Útest_pivot_margins_name_unicodeÓ  s    ÿz.TestPivotTable.test_pivot_margins_name_unicodec                 C   s  t g d¢g d¢tdƒdœƒ}t|dddd�}td	gd
dggddgddggd dgd�}t dddœdddœdœ|d� d¡}t ||¡ t|ddddgd�}tddgd	gd
dggg d¢g d¢g d¢gg d¢d�}t dddœdddœdddœdddœdœ|d� d¡}t ||¡ d S ) Nr&   r)   r/   rŠ   r0   r1   rT   r˜  r2   r*   r+   r   r   r1  rô   rZ  )r(   r'   r®   rö   ))r2   r*   )r2   r+   r“   r@   r¦   )r   r   r   r   r5  )NNr1   r�   rÛ   r�   g«ªªªªª@))r@   r2   r*   )r@   r2   r+   )rT   r2   r*   )rT   r2   r+   )r	   r•   r   r   rt  rA   rB   )r:   r;   r[   rv  rL   r   r   r   Útest_pivot_string_as_funcÞ  sD    åÿ  ÿþýýüùø	z(TestPivotTable.test_pivot_string_as_funcz
f, f_numpyrî   c                 C   sŽ   |j dd�}t|dd|d�}t|tƒr0d |¡n|}d|› d�}tjt|d	��  t|dd|d�}W d   ƒ n1 st0    Y  t ||¡ d S )
Nr2   r“   r0   r1   r˜  ú|zusing DataFrameGroupBy.[ú]r|   )	rè   r   Ú
isinstancerX   ÚjoinrA   rƒ   r„   rB   )r:   rÆ   Zf_numpyr;   r[   Úopsr†   rL   r   r   r   Útest_pivot_string_func_vs_func  s    .z-TestPivotTable.test_pivot_string_func_vs_funcc              
   C   sÚ   G dd„ dt jƒ}| ¡ �¬}| t d|¡ tt d¡t d¡ddœƒ}d}tjt	|d��P t
jtd	d��" |jd
dddd� W d   ƒ n1 s�0    Y  W d   ƒ n1 s®0    Y  W d   ƒ n1 sÌ0    Y  d S )Nc                       s"   e Zd Zddœ‡ fdd„Z‡  ZS )zSTestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstackerN)Úreturnc                    s   t ƒ j|i |¤Ž tdƒ‚d S )NúDon't compute final result.)ÚsuperÚ__init__Ú	Exception)r:   ÚargsÚkwargs©Ú	__class__r   r   r  7  s    z\TestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)Ú__name__Ú
__module__Ú__qualname__r  Ú__classcell__r   r   r  r   ÚMockUnstacker6  s   r  Ú
_Unstackeri   r   )Úind1Úind2r÷  z$The following operation may generater|   r  r  r  r÷  r¼  )Úreshape_libr  ÚcontextÚsetattrr	   r6   r°   rA   rƒ   r   r8  r9  r  r   )r:   Zmonkeypatchr  rt   rZ   r†   r   r   r   Ú-test_pivot_number_of_levels_larger_than_int322  s    
ÿÿz<TestPivotTable.test_pivot_number_of_levels_larger_than_int32c           
      C   sÂ   t g d¢g d¢g d¢dœƒ}dd„ }dd„ }d	d
„ }t|d|||g|d�}ddtjtjddgddtjtjddgg}tjg d¢ddggd dgd�}t |ddg|d�}	|r²|	jdd�}	t ||	¡ d S )N)ÚappleÚpeachr"  )r   r   r.   )r®   rù   rù   )ÚfruitÚsizeÚtastec                 S   s   dS )Nr   r   rµ   r   r   r   Úret_oneS  s    z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_onec                 S   s   t | ƒS r   )rT   rµ   r   r   r   Úret_sumV  s    z?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumc                 S   s   t jS r   )r6   rŸ   rµ   r   r   r   Úret_noneY  s    z@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_noner$  ©r>   rU   r   r   r   rZ  rù   )r(  r)  r'  r"  r#  rq   r%  r&  r’   r>   ræ   )	r	   r   r6   rŸ   r   Zfrom_productr   rA   rB   )
r:   r   rZ   r'  r(  r)  r[   r;   rÎ   rL   r   r   r   Útest_pivot_table_aggfunc_dropnaI  s*    ýÿÿ(þz.TestPivotTable.test_pivot_table_aggfunc_dropnac                 C   sŒ   t g d¢dtjdgdtjtjgdœƒ}t|dd|d�}d	tjgdtjgg}td
dgdd�}t |ddg|d�}|r||jdd�}t ||¡ d S )N)r*   r+   r*   r   r.   r   )r0   rb   rc   r0   r@   r*  rÁ   r*   r+   rŒ   rb   rc   r’   r>   ræ   )r	   r6   rŸ   r   r   r   rA   rB   )r:   r   rZ   r[   r;   rÎ   rL   r   r   r   Ú&test_pivot_table_aggfunc_scalar_dropnal  s     ÿz5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnar¬   c                 C   sj   t g d¢g d¢g d¢g d¢dœƒ}|jdddtj|d	�}tg dd
�}t tg ddd�|d�}t ||¡ d S )N)r.   r.   r   r   r.   )rO   rù   r®   rf  r‰   )Úpr,  r,  r-  r,  )NNNNN)r0   Úidr2   r3   r0   r3   r.  r«   rŒ   r¾   rÈ  r’   )r	   r   r6   r%  r   rA   rB   )r:   r¬   rZ   r[   Zexp_colsrL   r   r   r   Útest_pivot_table_empty_aggfunc}  s    üÿÿz-TestPivotTable.test_pivot_table_empty_aggfuncc                 C   sh   dd„ }t g d¢g d¢g d¢dœƒ}tjtdd��" |jdd	d
|d� W d   ƒ n1 sZ0    Y  d S )Nc                 S   s
   t  | ¡S r   )r6   r@   )Zarrr   r   r   rH   ‘  s    z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.aggr¦   r5  )r¯   rö   rÁ  é(   )rÔ  rÕ  ÚZZ
notpresentr|   rÔ  rÕ  )rU   )r	   r8  r9  rA  r   )r:   rH   rZ   r   r   r   Ú!test_pivot_table_no_column_raises�  s    z0TestPivotTable.test_pivot_table_no_column_raisesc                 C   sÖ   t g d¢g d¢g d¢g d¢g d¢dœƒ}t|ddgd	d
gdg d¢dœd�}t g d¢¡}tjg d¢d	d
gd�}t g d¢g d¢g d¢g d¢g¡}t |||d�}|d  tj¡|d< |d  tj¡|d< t 	||¡ d S )Nr_  r`  ra  rd  re  rg  r3   r4   r0   r2   r@   )r  rä  r@   r¢  )r<   r=   rU   ))r3   r@   ©r4   rä  )r4   r@   ©r4   r  ))r(   rc  )r(   rb  )r'   rc  )r'   rb  rq   )rW  ç      "@g      @rŽ   )rW  r5  g      !@r‘   )r   r�   rÃ   r�   )g["8ªªª@rŽ   g.UUU@r   r{  r4  r3  )
r	   r   r   rr   r6   rš  rY   r¾   rA   rB   )r:   rZ   rJ   rg   r=   ÚvalsrL   r   r   r   Ú0test_pivot_table_multiindex_columns_doctest_case˜  s@    ñÿüÿþüÿz?TestPivotTable.test_pivot_table_multiindex_columns_doctest_casec                 C   s–   t g d¢g d¢g d¢g d¢dœƒ}|jddgdd	d
dd�}t dtjgdtjgtjdggtddgdd�tjg d¢g d¢gddgd�d�}t ||¡ d S )N)Zd1Zd4Zd3r]   )é   rk  é"   )Ú2018r:  Ú2019)r^   rÎ   Únumrœ  r^   rÎ   rœ  r<  rT   F)r=   r>   r<   rU   Úsortr8  rk  r9  r:  r;  rŒ   rq   r{  )	r	   r   r6   rŸ   r   r   r    rA   rB   rï  r   r   r   Útest_pivot_table_sort_falseÌ  s$    üÿÿÿýz*TestPivotTable.test_pivot_table_sort_falsec                 C   s‚   t dddgtddgdd�dœƒ}|jd	d
ddd�}t ddgddgddggtg d¢d	d�tjddgd d
gd�dd�}t ||¡ d S )Nr0   r   r.   r¯   r/   ÚInt64r¨   )r^   r_   Úsalesr_   r^   TrT   rH  rk  r#  rŒ   ©r@  r0   ©r@  r­   rq   ©r=   r>   r©   )r	   r   r   r   r   rr   rA   rB   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é­   é¶   é/   rm  )Ú	firstnameÚlastnameÚheightÚagerM  rL  rN  rO  F)r=   r<   r=  g      e@g     €G@g     Àf@g     €@@)rG  rE  )rH  rF  rq   r{  )r	   r   r   rr   rA   rB   rï  r   r   r   Ú0test_pivot_table_sort_false_with_multiple_valuesó  s&    üÿÿþýz?TestPivotTable.test_pivot_table_sort_false_with_multiple_valuesc                 C   sŽ   t g d¢g d¢g d¢g d¢gƒ}g d¢|_|jdddd	d
dd�}t g d¢g d¢g d¢gƒ}g d¢|_g d¢|_d|j_d|j_t ||¡ d S )N©r^   rb   r   ©r^   rc   r.   ©r_   rc   r   ©r_   rd   r   )r¯   rö   rÁ  r¯   rö   rÁ  rT   r   T©r=   r>   r<   rU   rV   r¬   ©r   r.   r   r   ©r   r   r   r®   ©r   rO   r   r¯   ©rb   rc   rd   r­   ©r^   r_   r­   )r	   r>   r   r=   rF   rA   rB   rï  r   r   r   Ú1test_pivot_table_with_margins_and_numeric_columns		  s     
ÿ

z@TestPivotTable.test_pivot_table_with_margins_and_numeric_columnsr   c                 C   sh   t ddtddgdd�dœƒ}|jdd	d
d|d�}t dggtdgdd�tdgd	d�dd�}t ||¡ d S )Nr^   r_   rö   r0  r?  r¨   )rb   rc   rO  rb   rc   rO  r@   )r=   r>   r<   rU   r   rÁ  rŒ   ZFloat64rC  )r	   r   r   r   rA   rB   )r:   r   rZ   r[   rL   r   r   r   Útest_pivot_ea_dtype_dropna	  s    
ÿüz)TestPivotTable.test_pivot_ea_dtype_dropnac              
   C   sÔ   t dddgt d¡ddgdœƒ}t d ¡�& |jdd	gd
ddd�}W d   ƒ n1 sV0    Y  t ddgddgddggt tg d¢dd�tt d¡t d¡dgt	d	d�g¡tj
ddgd d
gd�d�}t ||¡ d S )Nr0   r   r.   z
2019-12-31g      $@r/   )r^   r_   r   r@  r_   r   r^   TrT   rH  r¨  g      5@r#  rŒ   rD  rÈ  rA  rB  rq   r’   )r	   r   rü   rA   rƒ   r   r   r    r   r2  rr   rB   rï  r   r   r   Ú!test_pivot_table_datetime_warning)	  s6    üÿÿ$ýþÿ
ÿôz0TestPivotTable.test_pivot_table_datetime_warningc              
   C   sÊ   t g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢dœƒ}t|ddd	gd
gdd�}t ddgddgddgtjdggtddgd
d�tjg d¢ddgd gdd	gd�d�}|rº|d  d¡|d< t 	||¡ d S )Nr_  r`  ra  rd  re  )r0   r1   r2   r3   r4   )Zcol5)Zcol6rù   ©r®   Úsevenr3   r0   r1   r^  rT   rê   r�   r�   r�   rŽ   r~   rc  rb  rŒ   )r(   r(   r'   r'   r*   r+   r.   rq   r{  r¾   )
r	   r   r6   rŸ   r   r   r    rY   rA   rB   )r:   r¿  rZ   r[   rL   r   r   r   Ú)test_pivot_table_with_mixed_nested_tuplesI	  s0    Úÿ4ÿÿýz8TestPivotTable.test_pivot_table_with_mixed_nested_tuplesc                 C   s´   t tdƒtdƒtdƒtdƒdœƒ}tjdd„ tdƒD ƒdd„ tdƒD ƒtdƒgdd�}t dtj¡}t |d	¡ t |ttdƒd
d�|d�}|j	d
gdgdgdgd�}t
 ||¡ d S )Nr¯   rˆ   c                 S   s   g | ]}d ‘qS )Únuniquer   r�  r   r   r   rL  š	  r·   zYTestPivotTable.test_pivot_table_aggfunc_nunique_with_different_values.<locals>.<listcomp>c                 S   s   g | ]}d ‘qS )r`   r   r�  r   r   r   rL  ›	  r·   )NNr_   rq   )r¯   r¯   r~   r^   rŒ   r’   r_   r`   ra  r¼  )r	   r•   r   r    r6   ÚfullrŸ   Zfill_diagonalr   r   rA   rB   )r:   ÚtestZ	columnvalZnparrrL   r[   r   r   r   Ú6test_pivot_table_aggfunc_nunique_with_different_valuesŽ	  s6    üÿ	ýúÿÿÿözETestPivotTable.test_pivot_table_aggfunc_nunique_with_different_values)ar  r  r  r8  Úfixturer;   rM   r\   rk   ru   r‡   r˜   r¢   r£   r¥   r²   r´   r¸   r¹   rÇ   ÚmarkZparametrizerÒ   rå   ré   rð   rø   r  r  r  r"  r%  r6   rš  r   r   r4  r6  r;  Úxfailr@  rB  rF  rJ  rV  r   rr   rh  rw  rx  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  r  r  r  rT   r@   rî   r  Zslowr!  r+  r,  r/  r2  r7  r>  rD  rP  r[  r\  r]  r`  rd  r   r   r   r   r%   ,   s0  
0% ##


ýþ
.	


?7
-

üþ	

üþ	"ÿ&
ù
üþ÷ùùþ
&
3	
% [[#,>úþ

#
	4
 Er%   c                   @   sŽ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
jjeƒ dd�dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) Ú	TestPivotc                 C   s¼   g d¢g d¢g d¢dœ}t |ƒ}|jdddd�}t dd	d
dœdd	d
dœdœƒ}d\|j_|j_t ||¡ |jjdkszJ ‚|jjdksŠJ ‚|jddd�}|jjdks¨J ‚|jjdks¸J ‚d S )N©r0   r1   r2   r2   r1   r0   ©ÚOnerk  rk  ÚTworl  rl  ©r~   r   r€   r€   r   r~   rÌ   r=   r>   r<   r~   r   r€   rŠ   ©rk  rl  r’   ©Nr>   )r	   r÷   r=   rF   r>   rA   rB   rD   )r:   r;   r  r   rL   r   r   r   Ú
test_pivotµ	  s$    ý

þÿzTestPivot.test_pivotc                 C   s^   t g d¢g d¢g d¢dœƒ}tjtdd��  |jddd	d
� W d   ƒ n1 sP0    Y  d S )N)r(   r(   r'   r'   r'   )r*   r+   r*   r*   r+   )r~   r   r€   r€   r�   r]   zduplicate entriesr|   r^   r_   r`   rÌ   )r	   r8  r9  r´  r÷   )r:   r;   r   r   r   Útest_pivot_duplicatesÒ	  s    ýÿzTestPivot.test_pivot_duplicatesc                 C   s>   t g d¢d�}|jdddd�}t g g d�}tj||dd	� d S )
Nr]   r“   r^   r_   r`   rÌ   r’   FrC  )r	   r÷   rA   rB   rï  r   r   r   Útest_pivot_emptyÝ	  s    zTestPivot.test_pivot_emptyc                 C   sV   t ddg|d�}|jdddd�}tdd	gd|d
�}|dkrD| d¡}t |j|¡ d S )N)r0   r…  ÚA1)r1   r‡  ZB2)r;   r©   r   r   r.   rÌ   r0   r1   r	  r2  rz  )r	   r÷   r   rY   rA   rs   r>   )r:   Zany_string_dtyperZ   r[   r–   r   r   r   Útest_pivot_integer_bugã	  s    ÿ
z TestPivot.test_pivot_integer_bugc                 C   sþ   g d¢g d¢g d¢dœ}t |ƒ d¡}|jddd�}t d	d
ddœd	d
ddœdœƒ}d\|j_|j_t ||¡ |jdd�}tj	ddgd dgd�|_d|j_tj||dd� |jjdksºJ ‚|jj
dksÊJ ‚|j d¡|_|jddd�}d|j_t ||¡ d S )Nri  rj  rm  rÌ   r=   r>   r<   ©r>   r<   r~   r   r€   rŠ   rn  r’   r“   )r<   rk  )r<   rl  rq   FrC  ro  r   )r	   r  r÷   r=   rF   r>   rA   rB   r   rr   rD   rÙ  )r:   r;   r  r[   rL   r   r   r   Útest_pivot_index_noneî	  s2    ý

þÿÿzTestPivot.test_pivot_index_nonec              
   C   sÒ   t g d¢g d¢g d¢g d¢g d¢dœƒ}ddg}d	g}|j||d
�}t t g d¢dtjdtjgg d¢tjdtjdgg¡tjddgddgd�tjddgd d	gd�d
�}t ||¡ |ddgksÀJ ‚|d	gksÎJ ‚d S )N)r   r   r   r.   r.   r.   )r   r   r.   r   r   r.   )r   r.   r   r.   r   r.   r*  r>  )Úlev1Úlev2Úlev3Úlev4r<   rw  rx  ry  r’   )r~   r   r�   r~   r€   r   )r�   r�   r�   r€   rŽ   r�   r§   )r   r.   r   r.   rq   )rz  rz  r<   r<   )	r	   r÷   r6   rš  rŸ   r   r    rA   rB   )r:   rZ   r=   r>   r[   rL   r   r   r   Ú0test_pivot_index_list_values_none_immutable_args
  s<    ûÿ	üÿÿþôz:TestPivot.test_pivot_index_list_values_none_immutable_argsc                 C   sJ   t dgddœƒ}tjtdd�� | ¡  W d   ƒ n1 s<0    Y  d S )Nr   ry  z(missing 1 required keyword-only argumentr|   r7  )r:   rZ   r   r   r   Útest_pivot_columns_not_given8
  s    z&TestPivot.test_pivot_columns_not_givenz&TODO(infer_string) None is cast to NaNr<  c                 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   r.   r   ©Nr_   r`   r“   ))r_   r   ©r`   r   r_   r{  r~  rŒ   r‚   r`   ©r>   r=   r<   )r	   r÷   rA   rB   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�}|r‚tj|j	_
t ||¡ d S )Nr   r.   r   r}  r_   r{  )r`   r.   r‚   r`   r  rŒ   r’   )r	   r÷   r>   rD   rA   rB   r   r6   rŸ   r=   rF   )r:   rT  rZ   r[   rL   r   r   r   Útest_pivot_index_is_noneR
  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   r.   r   r}  r_   r`   r  rŒ   r’   ru  r   )r	   r÷   r   rA   rB   rï  r   r   r   Útest_pivot_values_is_nonea
  s    ÿz#TestPivot.test_pivot_values_is_nonec                 C   s>   t dgdddœƒ}|jdd�}|jddd	d
� t ||¡ d S )Nr^   r   r   )r*   r+   ÚthreeT)Údeepr*   r+   rƒ  rÌ   )r	   rs  r÷   rA   rB   )r:   rZ   rL   r   r   r   Ú"test_pivot_not_changing_index_nameo
  s    z,TestPivot.test_pivot_not_changing_index_namec                 C   sB   t g g d¢d�}|jddddd�}tg ddd	�}t |j|¡ d S )
N)r^   r_   r‹  r“   r^   r_   r‹  r÷  r¼  r2  rÈ  )r	   r   r   rA   rs   r>   ©r:   rZ   r÷   rL   r   r   r   Ú.test_pivot_table_empty_dataframe_correct_indexv
  s    z8TestPivot.test_pivot_table_empty_dataframe_correct_indexc                 C   sÊ   t ddddœddddœdd	d
dœgƒ}t |d ¡|d< t d¡�( |jddgdgddd�}W d   ƒ n1 sp0    Y  tjdt 	dd¡fdt 	dd¡fdt 	dd¡fdgddgd�}t 
|j|¡ d S )Nrb   z
2023-01-01r   )r^   Údate_strrm   rc   z
2023-01-02r.   rd   z
2023-01-03r   rˆ  r   Fr^   rm   rT   T)r=   r<   rU   r¬   z2023-01-01 00:00:00z%Y-%m-%d %H:%M:%Sz2023-01-02 00:00:00z2023-01-03 00:00:00rQ  rq   )r	   r   Úto_datetimerA   rƒ   r   r   rr   r   Ústrptimers   r=   r†  r   r   r   Ú0test_pivot_table_handles_explicit_datetime_types~
  s(    


ýÿÿ$üù	z:TestPivot.test_pivot_table_handles_explicit_datetime_typesc                 C   s~   t g d¢g d¢g d¢g d¢gƒ}|jdddddd	d
�}t g d¢g d¢g d¢gtg d¢dd�tg d¢dd�d�}t ||¡ d S )NrQ  rR  rS  rT  r   r   r.   rT   TrU  rV  rW  rX  rY  rŒ   rZ  r{  rî  rï  r   r   r   Ú6test_pivot_table_with_margins_and_numeric_column_names™
  s     ÿýz@TestPivot.test_pivot_table_with_margins_and_numeric_column_namesN)r  r  r  rp  rq  rr  rt  rv  r{  r|  r8  rf  rg  r   r€  r�  r‚  r…  r‡  r‹  rŒ  r   r   r   r   rh  ´	  s"   $&ÿ
rh  )'r   r   r   Ú	itertoolsr   rR  Únumpyr6   r8  Zpandas._configr   Zpandas.errorsr   Zpandasr   r   r	   r
   r   r   r   r   r   Zpandas._testingZ_testingrA   Zpandas.api.typesr   Zpandas.core.reshaper   r  Zpandas.core.reshape.pivotr   re  r   r•   r$   r%   rh  r   r   r   r   Ú<module>   sJ   (

,
                   