o
    Û­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/CropPilot/venv/lib/python3.10/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r7|jjt|ƒks6J ‚n
|jj|d ksAJ ‚t|ƒdkrP|jj|ksOJ ‚n
|jj|d ksZJ ‚| 	||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 )NÚabcdeÚfghij©r   r.   r   r   é   ©Úcol1Úcol2Úcol3rS   rU   rT   Úsumr   )r=   r<   r>   ÚaggfuncÚ
fill_valueÚcategory)r=   r<   r>   rW   rX   r?   )
r	   Úlistr   r=   Úastyper>   rS   rT   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<   ri   rV   )r>   rW   ©r=   rW   r<   r@   )r	   r   ÚTrA   rB   )r:   r\   ÚrsÚ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`   ra   rb   Údi€„ i ¡ i@B )ÚamountÚcustomerÚmonthr   Úquantityrs   rr   rq   r   F)r   ))r0   r`   )r0   ra   )r0   rb   )r0   ro   )r1   r`   )r1   ra   )r1   rb   )r1   ro   )r2   r`   )r2   ra   )r2   rb   )r2   ro   ©rD   )r	   r   r   Úfrom_tuplesrA   Úassert_index_equalr>   r=   )r:   r\   Úpv_colÚ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>w   Y  tj||gddgd�}tdg d¢i|d�}t ||¡ d S )N©r`   r`   ra   ra   )r`   ra   rf   T©Ú
categoriesÚordered)rb   ro   rb   ro   )rb   ro   re   ©r   r.   r   r   )r0   r1   r<   ú1The default value of observed=False is deprecated©Úmatchr<   r0   r1   )r<   r=   r   rt   )ç      ð?ç       @ç      @ç      @©r=   )	r   r	   rA   Úassert_produces_warningÚFutureWarningr   r   r    rB   )r:   Úcat1Úcat2r\   Úmsgr]   Ú	exp_indexrL   r   r   r   Útest_pivot_table_categoricalÆ   s   ÿÿÿz+TestPivotTable.test_pivot_table_categoricalc           	      C   sþ   g d¢}t g d¢g d¢tdƒdœƒ}|d  t|dd�¡|d< d	}tjt|d
�� |jddd|d�}W d   ƒ n1 s<w   Y  tg d¢dd�}| t|dd�¡}tg d¢dd�}t g d¢g d¢g d¢g||d�}|sw|j	t
|ƒd� d¡}t ||¡ d S )N©r`   ra   rb   ro   )	r`   r`   r`   ra   ra   ra   rb   rb   rb   )	r   r.   r   r   r.   r   r   r.   r   é	   ©r0   r1   r2   r0   F©r~   r€   r�   r1   r2   )r=   r>   r<   r   r_   ©rF   rg   )ç        r…   ç      @)rƒ   r†   ç      @)r„   ç      @ç       @©r=   r>   ©r>   Úfloat)r	   Úranger[   r   rA   rˆ   r‰   r   r   Úreindexr   rB   )	r:   r   r}   r\   rŒ   r]   Úexpected_columnsÚexpected_indexrL   r   r   r   Ú$test_pivot_table_dropna_categoricalsÖ   s2   ýÿÿ
ÿý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 s2w   Y  |rBd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ÚhighTr|   )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   r\   rŒ   r]   r<   ÚcodesrL   r   r   r   Ú%test_pivot_with_non_observable_dropnaö   s8   ýúÿÿ

ÿüþ
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.w   Y  t d
g d¢ittjg d¢g d¢dd�d	d�d�}|sV|d
  	t
¡|d
< t ||¡ d S )N)r"   r¡   r¢   r¡   r¢   )r¡   r¢   r"   Tr|   rQ   r£   r€   r�   r0   r1   r¤   r¥   )r   r   r.   r“   r‡   )r	   r   rœ   rA   rˆ   r‰   r   r   r¨   r[   r›   rB   )r:   r   r\   rŒ   r]   rL   r   r   r   Ú/test_pivot_with_non_observable_dropna_multi_cat  s2   ýúÿÿ
ÿüþ	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 s#w   Y  t ddit| ¡ dd	�d
�}|s=| t¡}t 	||¡ d S )Nr   r£   r€   r�   r0   r1   r¤   rƒ   r“   r‡   )
r	   rA   rˆ   r‰   r   r   Úuniquer[   r›   rB   )r:   r$   r   r\   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 sCw   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`   ra   r`   ra   Tr’   F)Ú	ascendingr‘   r€   r�   r2   r1   r0   rV   ©r=   r>   r<   rW   ÚmarginsÚAll)r   é   é
   r   r.   r“   )r=   rF   r±   )r   r   r    r	   r6   ÚarangeÚintpr   Úsort_valuesrA   rˆ   r‰   r   r   r   ÚIntervalÚassert_series_equal)r:   Úordered_catr\   rŒ   Ú	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 )NrQ   r   ©rd   r   r   r   Ú<lambda>g  s    z3TestPivotTable.test_pass_function.<locals>.<lambda>r™   rQ   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sUJ ‚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È   r   r²   )r`   ÚvÚirÉ   Úint64r`   rÊ   r   rV   )r<   r=   r>   rX   rW   r.   Úabr“   r‡   )ç      ø?ç      @ç      @ç      @Úfloat64r@   )
r	   Údtypesr   r   r6   r±   r   rZ   rA   r½   )r:   Úfrf   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s3J ‚d S )NrQ   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>©  ó    z=TestPivotTable.test_pivot_preserve_dtypes.<locals>.<dictcomp>)r6   r¹   rÑ   r	   Úreset_indexr   ÚdictrÒ   )r:   r>   r<   rÉ   r\   Ú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   rP   r‡   r™   )r0   r   )r0   r.   r   )ÚlevelrÎ   r†   r„   r.   r°   râ   r3   rQ   )ÚfreqÚperiods)r0   Údtrç   ÚME)Úkeyrå   z
2011-01-31zM8[ns]rt   ç      
@ÚYE©rå   r…   z
2011-12-31)r   ÚDatetimeIndexr	   r   r=   rr   Údayr   ru   Ú
set_levelsÚlevelsr[   r6   Úint32r§   r   rA   rB   r   r
   r    )r:   Úidxr\   ÚresÚ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>   rX   r5   r   ©Úaxis)r=   r>   rX   )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>   rW   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>   rW   rµ   r   rü   rþ   r   r   rÄ   î  s    ú)r   rA   rB   )r:   r;   rÓ   r]   ÚmeansÚ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 )NÚR1ÚR2ÚR4)ÚC1ÚC2ÚC3ÚC4)r¸   é   é   é   r_   r`   ra   rb   rÙ   r  r¸   r  r  r“   r™   )	r6   r§   r	   Úpivotr   r   rA   rB   rk   )r:   r  r§   r\   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< |r=|jdd	dd�}n	tj|dd	dd�}| 	¡ j
 ¡ t|ƒksSJ ‚| ¡ D ]\}}|j|d |d	 f |d kslJ ‚qW|rx|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`   rb   r`   z
2014-02-02ra   )r   r`   )r   r`   ©r   ra   )r   ra   rb   rÙ   )r	   r   r6   r¹   r   Ú	Timestampr§   Úlocr  Únotnar<   rV   rC   ÚiterrowsrA   rB   rk   )r:   r  r\   Ú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  Úunitr\   Ú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 )NÚ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Ä   �  s    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:   r\   Úminsr]   rL   r   r   r   Útest_pivot_tz_in_valuest  sR   þþþþþïÿûþÿþûøz&TestPivotTable.test_pivot_tz_in_valuesc              	   C   st  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�}|rs|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-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   ÚPeriodIndexr   r    r  rA   rB   )r:   r  r\   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¯   Ú2019Q1Ú2019Q2rƒ   )r`   ra   rd   ©r   r.   r¶   r`   r“   r¶   ra   ©r;   r=   r>   rd   T)r=   r>   r<   rµ   )r	   r   r=  r   r   rA   rB   )r:   r\   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œƒ}|r|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   rQ   r  ©rd   re   rf   ÚqÚwÚt©r'   r(   rE  rF  r'   r(   rÙ   )r   r.   r   rd   re   rf   )r   rQ   r  rK  rL  rM  r*   r+   ©r;   rF   rE  rF  r‘   )r   r   r   r   r   r   )r   r   r.   r   r   r.   ©rð   r©   rD   rC  )	r	   r  r   r   r   r[   ÚobjectrA   rB   ©	r:   r<   r  r\   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œƒ}|r|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 )NrG  rH  rI  rJ  rN  rF  r'   rÙ   r0   r   r2   r  r1   rQ   r   r.   r   )rK  rM  rL  rd   re   rf   rO  r(   rE  r*   r+   r®   ©r   r   r   r   rP  rC  )r	   r  r   r6   r§   r   r   r[   rQ  rA   rB   rR  r   r   r   Ú%test_pivot_with_list_like_values_nans  s4   üÿ	úýz4TestPivotTable.test_pivot_with_list_like_values_nansc                 C   sb   t g d¢g d¢g d¢dœƒ}d}tjt|d�� |jddd� W d   ƒ d S 1 s*w   Y  d S )	Nr_   rg   rR   z=pivot\(\) missing 1 required keyword-only argument: 'columns'r�   rS   rU   )r=   r<   ©r	   ÚpytestÚraisesÚ	TypeErrorr  )r:   r\   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   rQ   rþ   )r*   r0   r   rd   )r*   r1   r.   re   )r*   r2   r   rf   )r+   r0   r   rK  )r+   r1   rQ   rL  )r+   r2   r  rM  r(   rE  Úfirstr2  r®   rT  )rð   r©   rQ  )r;   r=   r>   r±   )r(   r^  )r(   r2  )rE  r^  rÙ   r   r   r*   r+   r‡   r.   rQ   r   r  r‘   )r   r   r	   r  r   r   rA   rB   )r:   r  r=   r;   r>   r\   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��% |r$|jdd	d
d� ntj|dd	d
d� W d   ƒ d S W d   ƒ d S 1 s@w   Y  d S )NrG  rH  rI  rJ  rN  z^\('bar', 'baz'\)$r�   rF  r'   )r(   rE  rÙ   )r	   rW  rX  ÚKeyErrorr  r   )r:   r  r\   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s$J ‚| ¡ }|j |df jd d… }	| |¡|  ¡ }
tj|	|
dd� |	j|dfksNJ ‚|j |df|f }||  ¡ }||kscJ ‚d S )Nr¦   F©Úcheck_namesÚ )	r  r=   rG   r@   rA   r½   rF   Ú
sort_indexÚiloc)r:   r]   Ú
values_colr;   r=   r>   Úmargins_colÚcol_marginsÚexpected_col_marginsÚindex_marginsÚexpected_ix_marginsÚgrand_total_marginsÚ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 ]}|  || ||¡ q:d S )Nr3   r0   r1   r2   Tr@   )r<   r=   r>   rµ   rW   ÚTotals)r<   r=   r>   rµ   rW   Úmargins_name)rh  ©r=   r>   rµ   rW   r   )r   ro  r>   rð   )r:   r;   r]   rJ   Ú	value_colr   r   r   Útest_marginsž  s&   ÿúÿÿzTestPivotTable.test_marginsc                 C   s>  dd„ |j D ƒ|_ t d¡}|rd}tjt|d�� |jddgdd	d
� W d   ƒ n1 s.w   Y  |jdd�jddgdd	d
�}|j D ]}|jd|f }|||  	¡ ksWJ ‚qDtjt|d�� |jddgdd	d
� W d   ƒ n1 stw   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>»  s    z.TestPivotTable.test_no_col.<locals>.<listcomp>ú&agg function failed [how->mean,dtype->ú-dtype 'str' does not support operation 'mean'r�   ÚAAÚBBTr@   )r=   rµ   rW   ÚCCrš   ©r¶   rd  )ÚDDÚEEÚFF)
r>   ÚreÚescaperW  rX  rY  r   rù   r  r@   )r:   r;   Úusing_infer_stringrŒ   rJ   rs  ÚtotalsÚitemr   r   r   Útest_no_col·  s.   
ÿ
ÿ
ÿ
ÿþzTestPivotTable.test_no_colz*columns, aggfunc, values, expected_columnsr@   )ç      @r†  çš™™™™™@r‡  )r˜   r˜   çš™™™™™@rˆ  )r(   r¶   r'   r¶   r“   rV   )r�   é   é   rQ   r  r/   )é   é   é    r/   r/   rŠ  ))r(   r*   )r(   r+   )r(   r¶   )r'   r*   )r'   r+   )r'   r¶   rt   c           
      C   sÒ   t g d¢g d¢g d¢g d¢g d¢dœƒ}|dkr@t d¡}|r!d	}tjt|d
�� |j|d|d� W d   ƒ n1 s;w   Y  d|vrJ|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Úlarger’  r‘  r‘  r’  r‘  r‘  r’  ©	r   r.   r.   r   r   r   rQ   r  r·   ©	r.   r   rQ   rQ   r  r  é   r�   r�   ©r0   r1   r2   r3   r4   rV   rw  rx  r�   T)r>   rµ   rW   r1   rš   r2   r3   r4   r™   )r	   r€  r�  rW  rX  rY  r   rù   r   rA   rB   )
r:   r>   rW   r<   rž   r‚  r\   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+   r|  r£   rt   )é   é   r   r�   é-   )é!   r   é$   é3   éx   ©r,   r-   r‡   r2   r   r÷   r,   r-   r¶   r3   r0   r1   TrV   r   ©r<   r=   r>   rµ   rW   rX   )Úcopyr6   r¹   rC   r   r[   rZ   r   r   ru   r	   Úrename_axisr   rA   rB   )r:   r;   r\   Ú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+   r|  r£   rt   )r   r   r.   r   rQ   )r.   r   r.   r.   r  r   r‡   r2   r   r÷   r,   r-   r¶   r3   r0   r1   Tr   r¡  )
rZ   r   r   ru   r	   r£  r   rC   rA   rB   )r:   r;   r¤  r¥  rL   r]   r   r   r   Útest_margins_dtype_len-  s"   ÿþú	z%TestPivotTable.test_margins_dtype_lenri   ))r   r.   ©r`   ra   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r1dndd�d�}t ||¡ d S )Nr   rg   r   rÉ   )r   rQ   r  )r<   r>   )r†   r—   r•   ))r   r   )r.   r.   )r   r   rt   r¨  ÚstrrQ  r°   ©r>   r=   )r	   r   r   ru   r   rA   rB   )r:   ri   Ú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  	|¡s1J ‚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:   Údtir\   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‘   Úx1Úx2c                    s   g | ]}ˆ t |ƒ ‘qS r   )r   ©rÚ   rÊ   ©ro   r   r   rv  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Ú2Frb  )r   r5  rZ   r   rœ   r	   r   Úrenamer©  rA   rB   )r:   r;   r\   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`   ra   ra   ra   ra   r.   )r   r   r   r   r   r   r   r   r'   r   r(   é   )r`   ra   rb   Úvaluer¼  r`   ra   rb   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   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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ÚMonthÚDayÚQuantityÚPrice)	)ÚSP500ÚADBE)rÇ  ÚNVDA)rÇ  ÚORCL)ÚNDQ100ÚAAPL)rË  ÚMSFT)rË  ÚGOOG)ÚFTSEzDGE.L)rÏ  zTSCO.L)rÏ  zGSK.Lr°   r.   r   iÐ  r   iÚ  r™  é   r†   r„   )r   rÁ  rÂ  r@   ©r=   r>   rW   )r6   r±   rQ  Úintr›   ÚarrayÚemptyr7   r8   ÚintegersrC   r   r   Úyearrr   rî   Ú	lognormalr	   r   r>   Úis_monotonic_increasing)
r:   Únr±   ÚproductsÚitemsÚiproductÚdrÚdatesr\   Ú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ÿ   rV   ©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=   rW   rµ   r¦   )r   rC   ÚtolistrV   )r:   r;   r]   Ú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sJ ‚d S )Nr‘   r0   r1   r2   T©r=   r>   rW   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sJ ‚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s"J ‚d S )
N)r`   ra   rb   ro   ÚerÓ   ÚgÚhrÊ   Újru  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`   ra   c              	   C   sè   d|› d�}t jt|d�� t|dddgdgd|d	� W d   ƒ n1 s%w   Y  t jt|d�� t|ddgddgd|d	� W d   ƒ n1 sIw   Y  t jt|d�� t|ddgdgd|d	� W d   ƒ d S 1 smw   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µ   rq  )rW  rX  Ú
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 �s1w   Y  tjt|d�� t|dtdd d�ddd� W d   ƒ n	1 �sVw   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 �s©w   Y  tjt|d�� t|dtdd d!�ddd� W d   ƒ d S 1 �sÏw   Y  d S )#NúA A A A A A A Bú$Carl Mark Carl Carl Joe Joe Joe Carl©r   r   rQ   r   r•  r   r�   r   r  r   r¸   r.   r™  )ÚBranchÚBuyerrÅ  ÚDaterû  )r¸   rŒ  r   rË   r°   r   rÐ  rë   rì   zCarl Joe Markr™   rú  rÅ  rV   ©r=   r>   r<   rW   r�   rŒ  r·   Ú6MSÚCarl©rå   ré   z#'The grouper name foo is not found'r�   r'   )rå   rä   zThe level foo is not valid)r	   Úsplitr   r6  r6   rÓ  r   r   rí   r=   rF   r>   r   r
   rA   rB   rk   r§   r[   rÞ   rW  rX  r`  rô  )r:   Úusing_array_managerr\   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   r‰  r   r�   rQ   r¸   r  r.   r™  r‹  r   r  r·   é   )rù  rú  rÅ  rû  ÚPayDayrè   rû  rÿ  r  rÅ  rV   rü  r   r  rÐ  rì   r™   rt   r0   r1   rù  )r	   r   r   r   r
   r6   rÓ  r§   r   r   rí   r=   rF   r>   rA   rB   rk   r   ru   )r:   r\   r]   rL   Ú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`   ra   ra   ra   r  rË   r   r.   r   ©Úlabelr  r  Úvalue1Úvalue2r  r`   ra   r  r“   r”   r…   rƒ   r†   r„   r—   r™   rÙ   )rV   rV   rV   rV   r@   r@   r@   r@   )r  r  r  r  r  r  r   r  )r   r   r   r.   )r   r   r.   r   )r.   rQ   r   r.   )r”   r…   rƒ   r„   )rƒ   r†   r„   rƒ   )r„   r—   rƒ   r„   r÷   r  rV   r@   rü  )r   rí   r	   r6   r¹   r   r   r    r   rA   rB   rÓ  r   )r:   Údates1Údates2r\   r*  r'  r(  r)  rL   r]   Úexp_col3Ú	expected1Ú	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`   ra   r“   r”   r…   rƒ   r†   r„   r—   )r·   r•  r�   r  r™   r  )r·   r·   r•  r•  r�   r�   rt   )r”   r…   rƒ   r†   r„   r—   r  )ÚXr  r  r  ÚYr  r   r   rQ   r  r  )r   rí   r	   r6   r¹   r   rç   r0  r   rñ   rA   rB   rr   rÖ  r<   r   r    rÓ  r§   )r:   r  r  r\   r]   r*  rL   r)  r   r   r   Útest_pivot_dtaccessorv  s‚   ÿ
ÿ

ûÿ
ÿýÿýüþûýü*ÿûz$TestPivotTable.test_pivot_dtaccessorc                 C   ó¶   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�||< q6t|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Ö  Ú	dayofyearr>   Ú	droplevelÚasarrayr¬   r<   r›   rk   rA   rB   )r:   Úrngr/  r]   ÚdoyrL   re   Úmaskr   r   r   Ú
test_dailyÑ  s   ÿzTestPivotTable.test_dailyc                 C   r  )	Nr  r  rè   rì   r‡   r™   r   r°   )r   r   r6   r¹   rC   r   r	   r=   rÖ  rr   r>   r!  r"  r¬   r<   r›   rk   rA   rB   )r:   r#  r/  r]   rr   rL   re   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 )NrV   r@   rá  r0   )r=   r<   rW   c                 s   s   � | ]}|V  qd S r   r   )rÚ   r¼  r   r   r   Ú	<genexpr>ÿ  s   € zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>)r   rZ   r   rA   rB   )r:   r;   ÚaggsÚpivot_values_listÚpivot_values_keysÚagg_values_genÚ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 )NÚWeekly)ÚbaconÚcheeser0  r1  )rÎ   rÐ   gš™™™™™	@gffffff
@)rè   rè   rk   rk   )r„  Úcostrî   r„  rî   Tr@   Úmax)r=   r>   rµ   rq  rW   r0  r1  r“   )r@   r2  rè   )r@   r2  rk   r2  )r3  r2  rè   )r3  r2  rk   )NNrî   rt   r™   )r	   r   r   r   ru   r<   rA   rB   )r:   rq  ÚcostsrJ   ÚixÚtupsri   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 )Nr•  r   r.   rc   ©rƒ   r„   rÍ   ©rQ   r  r†  ©r   r   rÏ   ©r   r   r¶   re   r“   rf   rd   T©r   rµ   )	r	   r6   r¹   r   r=   r>   r   rA   rB   )r:   r?   r\   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`w   Y  t	 ||¡ d S )Nr•  r   r.   rc   r8  r9  r:  r;  re   r“   rf   rY   r€   r�   rd   Tr<  )r	   r6   r¹   r   r=   r>   re   r[   rf   rA   rˆ   r‰   r   rB   )r:   r?   r\   rL   rŒ   rJ   r   r   r   Ú!test_categorical_margins_category0  s   $ÿÿz0TestPivotTable.test_categorical_margins_categoryc                 C   sl   t g d¢g d¢g d¢g d¢dœƒ}t|ddd�}t g d	¢g d
¢g d¢dœtg d¢dd�d�}t ||¡ d S )N)r.   r   r  r•  )r   r   rQ   r•  )r   r   r   r  )r  r  r  r  rñ  r3   T)r=   rµ   )r…   r–   rQ   )rÎ   g      @rÐ   )r„   r—   rÏ   r‘   )r  r  r¶   r“   r‡   ©r	   r   r   rA   rB   ©r:   r\   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   r|   r   r  )ÚInÚColÚValrB  rC  rD  )r=   r>   r<   r?   )r~   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?   r~   rò   rÛ   r\   r]   Ú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 s5w   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   r{   r   )r  r	  ÚVr  rY   r€   r�   rH  r	  Úcount)r=   r>   r   rW   r‘   F©r}   r~   rF   r`   ra   r“   r   r   r.   r°   r™   )r	   r[   rA   rˆ   r‰   r   r   rE  r   r6   rÓ  rË   rB   )	r:   r?   r\   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�}|rV|jdg }t	 
||¡ d S )N)r  rŸ  éÜ   )ÚJanuaryrN  rN  )r  r  r  )ÚSalesrÃ  rÂ  )rN  ÚFebruaryÚMarchÚAprilÚMayÚJuneÚJulyÚAugustÚ	SeptemberÚOctoberÚNovemberÚDecemberrÃ  rY   rO  rÂ  rV   )r<   r=   r>   r?   rW   r  r  rË   r#  FrJ  i@  rŸ  r   r/   r™   rN  )r	   r[   rÇ   Úset_categoriesr   r   r   rE  r  rA   rB   )	r:   r?   r\   Úmonthsr]   rž   rŸ   rK  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   rQ   )r2   r3   r4   )r   r   r�   rR   rS   rU   rT   rV   rj   rt   r™   rÑ  r   r   rQ   r“   )	r	   r   r   r    rA   rB   r6   r§   r   )r:   r\   r]   ry   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'   rg   r°   rš   T)r=   rW   rµ   rq  r   r.   r   rQ  r  r™   )r	   r   rQ  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   rV   rÑ  r2   r*   r+   r   r   rP  r  r‰  )r(   r'   r·   r  ))r2   r*   )r2   r+   rš   r@   r®   )r   r   r   r   rT  )NNr1   r—   rê   r–   g«ªªªªª@))r@   r2   r*   )r@   r2   r+   )rV   r2   r*   )rV   r2   r+   )r	   rœ   r   r   r£  rA   rB   )r:   r;   r]   r¥  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ƒrd |¡n|}d|› d�}tjt|d	�� t|dd|d�}W d   ƒ n1 s:w   Y  t ||¡ d S )
Nr2   rš   r0   r1   rÑ  ú|zusing DataFrameGroupBy.[ú]r�   )	rù   r   Ú
isinstancerZ   ÚjoinrA   rˆ   r‰   rB   )r:   rÓ   Ú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��( t
jtd	d�� |jd
dddd� W d   ƒ n1 sHw   Y  W d   ƒ n1 sWw   Y  W d   ƒ d S W d   ƒ d S 1 sow   Y  d S )Nc                       s   e Zd Zd‡ fdd„Z‡  ZS )zSTestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstackerÚreturnNc                    s   t ƒ j|i |¤Ž tdƒ‚)NúDon't compute final result.)ÚsuperÚ__init__Ú	Exception)r:   ÚargsÚkwargs©Ú	__class__r   r   rm  7  s   z\TestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)rj  N)Ú__name__Ú
__module__Ú__qualname__rm  Ú__classcell__r   r   rq  r   ÚMockUnstacker6  s    rw  Ú
_Unstackeri   r   )Úind1Úind2rI  z$The following operation may generater�   rk  ry  rz  rI  rü  )Úreshape_librx  ÚcontextÚsetattrr	   r6   r¹   rA   rˆ   r   rW  rX  rn  r   )r:   Úmonkeypatchrw  ry   r\   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�}	|rY|	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   )rV   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>   rW   r   r   r   r‰  r  )r†  r‡  r…  r€  r�  rt   rƒ  r„  r™   r>   r÷   )	r	   r   r6   r§   r   Úfrom_productr   rA   rB   )
r:   r   r\   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   rd   re   r0   r@   rˆ  rÎ   r*   r+   r“   rd   re   r™   r>   r÷   )r	   r6   r§   r   r   r   rA   rB   )r:   r   r\   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.   )rQ   r  r·   r•  r�   )ÚprK  rK  rŒ  rK  )NNNNN)r0   Úidr2   r3   r0   r3   r�  r´   r“   rË   r  r™   )r	   r   r6   rƒ  r   rA   rB   )r:   rµ   r\   r]   Úexp_colsrL   r   r   r   Útest_pivot_table_empty_aggfunc}  s   üÿÿz-TestPivotTable.test_pivot_table_empty_aggfuncc                 C   sj   dd„ }t g d¢g d¢g d¢dœƒ}tjtdd�� |jdd	d
|d� W d   ƒ d S 1 s.w   Y  d S )Nc                 S   s
   t  | ¡S r   )r6   r@   )Úarrr   r   r   rH   ‘  s   
z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.aggr®   rT  )r¸   r  r  é(   )r  r  ÚZÚ
notpresentr�   r  r  )rW   )r	   rW  rX  r`  r   )r:   rH   r\   r   r   r   Ú!test_pivot_table_no_column_raises�  s
   "ÿz0TestPivotTable.test_pivot_table_no_column_raisesc                 C   sÖ   t g d¢g d¢g d¢g d¢g d¢dœƒ}t|ddgd	d
g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�  r�  r“  r”  r–  r3   r4   r0   r2   r@   )r5  r3  r@   rá  )r<   r=   rW   ))r3   r@   ©r4   r3  )r4   r@   ©r4   r5  ))r(   r’  )r(   r‘  )r'   r’  )r'   r‘  rt   )r†  ç      "@g      @r•   )r†  r—  g      !@r˜   )r„   r—   rÐ   r†   )g["8ªªª@r•   g.UUU@r„   rª  r–  r•  )
r	   r   r   ru   r6   rÓ  r[   rË   rA   rB   )r:   r\   rJ   ri   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)Úd1Úd4Úd3r_   )é   rš  é"   )Ú2018rŸ  Ú2019)r`   rÛ   ÚnumrÖ  r`   rÛ   rÖ  r¡  rV   F)r=   r>   r<   rW   Úsortr�  rš  rž  rŸ  r   r“   rt   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`   ra   Úsalesra   r`   TrV   rr  rš  rB  r“   ©r¥  r0   ©r¥  r¶   rt   ©r=   r>   r±   )r	   r   r   r   r   ru   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é­   é¶   é/   rœ  )Ú	firstnameÚlastnameÚheightÚager²  r±  r³  r´  F)r=   r<   r¢  g      e@g     €G@g     Àf@g     €@@)r¬  rª  )r­  r«  rt   rª  )r	   r   r   ru   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`   rd   r   ©r`   re   r.   ©ra   re   r   ©ra   rf   r   )r¸   r  r  r¸   r  r  rV   r   T©r=   r>   r<   rW   rX   rµ   ©r   r.   r   r   ©r   r   r   r·   ©r   rQ   r   r¸   ©rd   re   rf   r¶   ©r`   ra   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`   ra   r  r‘  r¤  r°   )rd   re   r´  rd   re   r´  r@   )r=   r>   r<   rW   r   r  r“   ÚFloat64r¨  )r	   r   r   r   rA   rB   )r:   r   r\   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 s+w   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`   ra   r   r¥  ra   r   r`   TrV   rr  rè  g      5@rB  r“   rd  r  r¦  r§  rt   r™   )r	   r   r  rA   rˆ   r   r   r    r   rQ  ru   rB   r@  r   r   r   Ú!test_pivot_table_datetime_warning)	  s8   üÿÿÿýþÿ
ÿô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�  r�  r“  r”  )r0   r1   r2   r3   r4   )Úcol5)Úcol6r  ©r·   Úsevenr3   r0   r1   rÆ  rV   rû   r†   r—   r–   r•   rƒ   r’  r‘  r“   )r(   r(   r'   r'   r*   r+   r.   rt   rª  rË   )
r	   r   r6   r§   r   r   r    r[   rA   rB   )r:   r  r\   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   ó   g | ]}d ‘qS )Únuniquer   r²  r   r   r   rv  š	  ó    zYTestPivotTable.test_pivot_table_aggfunc_nunique_with_different_values.<locals>.<listcomp>c                 S   rÉ  )rb   r   r²  r   r   r   rv  ›	  rË  )NNra   rt   )r¸   r¸   rƒ   r`   r“   r™   ra   rb   rÊ  rü  )r	   rœ   r   r    r6   Úfullr§   Úfill_diagonalr   r   rA   rB   )r:   ÚtestÚ	columnvalÚnparrrL   r]   r   r   r   Ú6test_pivot_table_aggfunc_nunique_with_different_valuesŽ	  s6   üÿ	ýúÿÿÿözETestPivotTable.test_pivot_table_aggfunc_nunique_with_different_values)ars  rt  ru  rW  Úfixturer;   rM   r^   rn   rz   rŽ   r    rª   r«   r­   rÀ   rÂ   rÅ   rÆ   rÔ   ÚmarkÚparametrizerá   rö   rú   r  r  r  r+  r9  r?  rD  r6   rÓ  r   r   rS  rU  rZ  Úxfailr_  ra  ro  rt  r…  r   ru   r—  r¦  r§  r¬  r¯  rº  rÀ  rà  râ  rå  rë  rì  rò  rõ  r  r  r  r  r&  r'  r.  r7  r=  r>  rA  rG  rL  r]  r^  ra  rb  rV   r@   rÿ   ri  Úslowr  rŠ  r‹  r�  r”  r™  r£  r©  rµ  rÀ  rÂ  rÃ  rÈ  rÑ  r   r   r   r   r%   ,   s2   
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s=J ‚|jjdksEJ ‚|jddd�}|jjdksTJ ‚|jjdks\J ‚d S )N©r0   r1   r2   r2   r1   r0   ©ÚOnerÚ  rÚ  ÚTworÛ  rÛ  ©rƒ   r„   r…   r…   r„   rƒ   rÙ   r=   r>   r<   rƒ   r„   r…   r‘   ©rÚ  rÛ  r™   ©Nr>   )r	   r  r=   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   ƒ d S 1 s)w   Y  d S )N)r(   r(   r'   r'   r'   )r*   r+   r*   r*   r+   )rƒ   r„   r…   r…   r†   r_   zduplicate entriesr�   r`   ra   rb   rÙ   )r	   rW  rX  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`   ra   rb   rÙ   r™   Frb  )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r"| d¡}t |j|¡ d S )N)r0   r¶  ÚA1)r1   r¸  ÚB2)r;   r±   r   r   r.   rÙ   r0   r1   r#  rQ  r©  )r	   r  r   r[   rA   rv   r>   )r:   Úany_string_dtyper\   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seJ ‚|j d¡|_|jddd�}d|j_t ||¡ d S )NrØ  rÙ  rÜ  rÙ   r=   r>   r<   ©r>   r<   rƒ   r„   r…   r‘   rÝ  r™   rš   )r<   rÚ  )r<   rÛ  rt   Frb  rÞ  r   )r	   r6  r  r=   rF   r>   rA   rB   r   ru   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sgJ ‚d S )N)r   r   r   r.   r.   r.   )r   r   r.   r   r   r.   )r   r.   r   r.   r   r.   rI  r]  )Úlev1Úlev2Úlev3Úlev4r<   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<   r<   )	r	   r  r6   rÓ  r§   r   r    rA   rB   )r:   r\   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   sL   t dgddœƒ}tjtdd�� | ¡  W d   ƒ d S 1 sw   Y  d S )Nr   r¨  z(missing 1 required keyword-only argumentr�   rV  )r:   r\   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   ©Nra   rb   rš   ))ra   r   ©rb   r   ra   rª  rï  r“   r‡   rb   ©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�}|rAtj|j	_
t ||¡ d S )Nr   r.   r   rî  ra   rª  )rb   r.   r‡   rb   rð  r“   r™   )r	   r  r>   rD   rA   rB   r   r6   r§   r=   rF   )r:   r‚  r\   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î  ra   rb   rð  r“   r™   ræ  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	   r¢  r  rA   rB   )r:   r\   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`   ra   r¼  rš   r`   ra   r¼  rI  rü  rQ  r  )r	   r   r   rA   rv   r>   ©r:   r\   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 s8w   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 )Nrd   z
2023-01-01r   )r`   Údate_strrp   re   z
2023-01-02r.   rf   z
2023-01-03r   rù  r   Fr`   rp   rV   T)r=   r<   rW   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:00r|  rt   )r	   r   Úto_datetimerA   rˆ   r   r   ru   r   Ústrptimerv   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 )Nr¶  r·  r¸  r¹  r   r   r.   rV   Trº  r»  r¼  r½  r¾  r“   r¿  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)rs  rt  ru  rß  rà  rá  rå  rç  rì  rí  rW  rÓ  rÕ  r   rñ  rò  ró  rö  rø  rü  rý  r   r   r   r   r×  ´	  s$    $&ÿ
r×  )'r   r   r   Ú	itertoolsr   r€  Únumpyr6   rW  Úpandas._configr   Úpandas.errorsr   Úpandasr   r   r	   r
   r   r   r   r   r   Úpandas._testingÚ_testingrA   Úpandas.api.typesr   Úpandas.core.reshaper   r{  Úpandas.core.reshape.pivotr   rÒ  r   rœ   r$   r%   r×  r   r   r   r   Ú<module>   sL    (

,
                   