U
    `»{j~:  ã                   @   s„  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 ej ddddgddggdd	gdd
gddgdœfdddgdejgddggddd	gddd
gdddgdœfg¡dd„ ƒZej ddddgddggdd	gdd
gddgdœfdddgdejgddgejdggddd	dgddd
dgddddgdœfg¡dd„ ƒZej ddddgd	dgd
dgddgdœfdddejgd	ddgd
ddgdddgdœfg¡dd„ ƒZej dddddejgejddgddgd�fddddejgejdddgddejgd�fg¡d d!„ ƒZej d"dejd#d$gddgd%d&�fdejd#d$d'gddejgd%d&�fg¡d(d)„ ƒZej d*d+¡d,d-„ ƒZej d.e d d/¡ed0ƒejjd1d2gd3d4gd5�g¡d6d7„ ƒZej ddddgddggdd	gdd
gddgdœfdddgdejgddggddd	gddd
gdddgdœfg¡d8d9„ ƒZejjej d:e d;¡e d<¡fe d=¡e d>¡fe d;¡e d<¡fg¡ej d?dd@dgfdd@ddAgfg¡dBdC„ ƒƒƒZ ej dDej!ddddejgdEdEdFdGgdHœdId dJd d giddejgdKdL�ej!ddddejgdEdEdFdGgdHœdId dJd giddMdL�ej!dddddNgdEdEdFdGgdHœdId dJd d giddOdL�ej!dddddNgdEdEdFdGgdHœdId dJd d giddPdL�g¡dQdR„ ƒZ"ej dSddgddgg¡ej dTdgddgg¡ej dUddg¡dVdW„ ƒƒƒZ#dXdY„ Z$dZd[„ Z%ej d\d]ejdJd]gdfd]ejdJd]gd^fd]ejdJd]gd_fd]ejdJd]gd`fd]ejdJd]gdafd]ejdJd]gdbfd]ejdJd]gdcfd]ejdJd]gddfd]ejdJd]gdefd]ejdJd]gdffd]ejdJd]gdefd]ejdJd]gdgfdhddidhgdjfdhej&didhgdkfej!dhej&didhgdlejj'edmdn�do�dpe (dq¡drdpgdsfejdtdudv�ej)ejdwdudv�ejdtdudv�gdfej* +d]ejdJd]g¡dfg¡ej dxddg¡dydz„ ƒƒZ,ej dxddg¡ej d{e-dg¡d|d}„ ƒƒZ.dS )~é    N)Úpa_version_under1p01)Úna_value_for_dtypezdropna, tuples, outputsTÚAÚBg      *@ç…ëQ¸Î^@g     À^@ç      ð?©ÚcÚdÚeFçš™™™™™(@ç      m@g      (@c           	      C   s®   dddddgd|dddgdddddgddddd	gg}t j|d
ddddgd�}|jd
dg| d� ¡ }t jj|tdƒd�}| s�|jddtj	gdd�}t j||d�}t
 ||¡ d S )Nr   r   é   r   r   r   é{   é   r   ÚaÚbr	   r
   r   ©Úcolumns©ÚdropnaÚab©Únames©Úlevel©Úindex©ÚpdÚ	DataFrameÚgroupbyÚsumÚ
MultiIndexÚfrom_tuplesÚlistÚ
set_levelsÚnpÚnanÚtmÚassert_frame_equal)	r   ÚtuplesÚoutputsÚnulls_fixtureÚdf_listÚdfÚgroupedÚmiÚexpected© r3   úg/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/groupby/test_groupby_dropna.pyÚ:test_groupby_dropna_multi_index_dataframe_nan_in_one_group   s    ür5   gš™™™™™*@g     @m@c           
   	   C   sÂ   dddddgd|dddgdddddg|dddd	gd|ddd	gg}t j|d
ddddgd�}|jd
dg| d� ¡ }t jj|tdƒd�}| s¤| ddtj	gddtj	gg¡}t j||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-   Únulls_fixture2r.   r/   r0   r1   r2   r3   r3   r4   Ú;test_groupby_dropna_multi_index_dataframe_nan_in_two_groups7   s    ûr7   zdropna, idx, outputs)r   r	   r
   c                 C   s~   ddddgd dddgddddgdddd	gg}t j|d
dddgd�}|jd
| d� ¡ }t j|t j|dd
d�d�}t ||¡ d S )Nr   r   r   r   r   r   r   r   r   r   r   r	   r
   r   r   Úobject)ÚdtypeÚnamer   )r   r    r!   r"   ÚIndexr)   r*   )r   Úidxr,   r.   r/   r0   r2   r3   r3   r4   Ú*test_groupby_dropna_normal_index_dataframec   s    



ür=   zdropna, idx, expectedr   r   é   r   c                 C   s8   t jddddg|d�}|jd| d� ¡ }t ||¡ d S )Nr   é   r>   r   r   )r   r   )r   ÚSeriesr!   r"   r)   Úassert_series_equal)r   r<   r2   ÚserÚresultr3   r3   r4   Ú test_groupby_dropna_series_level‚   s    rD   zdropna, expectedg     @j@ç     àu@ú	Max Speed©r   r:   ç      4@c                 C   sL   t jddddgddddgdd�}|jd	d
d	tjg| d� ¡ }t ||¡ d S )Ng     `x@rE   g      >@rH   ZFalconZParrotrF   rG   r   r   r   )r   r@   r!   r'   r(   Zmeanr)   rA   )r   r2   rB   rC   r3   r3   r4   Útest_groupby_dropna_series_by”   s    

ýrI   r   )FTc                 C   sB   t  dddd gdddd gdœ¡}|jd| d�}|jj| ks>t‚d S )Nr   r   r?   r>   ©r   r   r   r   )r   r    r!   Zgrouperr   ÚAssertionError)r   r/   Úgbr3   r3   r4   Útest_grouper_dropna_propagation©   s     rM   r   é   Úabcd)r   r?   )ÚRr   ÚnumÚcolr   c                 C   sÌ   dddd| rt jndgi}tjdddd gdddd gdœ|d�}|jd| d	�}| t¡}tj||d�}t ||¡ |dg  t¡}tj||d�}t ||¡ |d  t¡}tj	|d |dd
�}t 
||¡ d S )Nr   r?   r   r   r>   rJ   r   r   r   rG   )r'   r(   r   r    r!   Z	transformÚlenr)   r*   r@   rA   )r   r   Zexpected_datar/   rL   rC   r2   r3   r3   r4   Ú+test_groupby_dataframe_slice_then_transform±   s    
$
rT   c           	      C   s¼   dddddgdd dddgdddddgddddd	gg}t j|d
ddddgd�}ttddœ}|jd
dg| d� |¡}t jj|tdƒd�}| sž|j	ddt
jgdd�}t j||d�}t ||¡ d S )Nr   r   r   r   r   r   r   r   r   r   r   r	   r
   r   r   Úminr   r   r   r   r   r   )r   r    r"   Úmaxr!   Úaggr#   r$   r%   r&   r'   r(   r)   r*   )	r   r+   r,   r.   r/   Zagg_dictr0   r1   r2   r3   r3   r4   Ú-test_groupby_dropna_multi_index_dataframe_aggÍ   s    ürX   zdatetime1, datetime2z
2020-01-01z
2020-02-01z-2 daysz-1 dayszdropna, valuesr   é   c           
   	   C   s†   t  ddddddg||||||gdœ¡}| r6||g}n||tjg}|jd| d	� d
ti¡}t jd
|it j|dd�d�}	t 	||	¡ d S )Nr   r?   r>   rN   é   rY   )ÚvaluesÚdtr\   r   r[   )r:   r   )
r   r    r'   r(   r!   rW   r"   r;   r)   r*   )
r   r[   Z	datetime1Z	datetime2Zunique_nulls_fixtureZunique_nulls_fixture2r/   Zindexesr0   r2   r3   r3   r4   Ú&test_groupby_dropna_datetime_like_data÷   s"    úþÿ
r]   z#dropna, data, selected_data, levelsé
   é   é   )Úgroupsr[   r[   r   Zdropna_false_has_nan)ÚidZdropna_true_has_nanr	   Zdropna_false_no_nanZdropna_true_no_nanc           
      C   s„   t  |¡}|jd| d�}| dd„ ¡}tt|d |d ƒƒ}t jj|dd gd�}| sf|rf|j|dd�}t j||d�}	t	 
||	¡ d S )	Nra   r   c                 S   s   t  dtt| ƒƒi¡S )Nr[   )r   r    ÚrangerS   )Úgrpr3   r3   r4   Ú<lambda>F  ó    z@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>r[   r   r   r   )r   r    r!   ÚapplyÚtupleÚzipr#   r$   r&   r)   r*   )
r   ÚdataZselected_dataZlevelsr/   rL   rC   Z	mi_tuplesr1   r2   r3   r3   r4   Ú.test_groupby_apply_with_dropna_for_multi_index  s    &
rk   Úinput_indexÚkeysÚseriesc                 C   sœ   t  dtjgddgddgdœ¡}| |¡}|r8|d }n | ddgkrX|dgkrX|dg }| d k	rj| | ¡}|j|dd	�}|r„|d }| ¡ }t ||¡ d S )
Nr   r?   r>   )r   r   r	   r	   r   r   Fr   )	r   r    r'   r(   Ú	set_indexr!   r"   r)   Úassert_equal)rl   rm   rn   Úobjr2   rL   rC   r3   r3   r4   Ú)test_groupby_dropna_with_multiindex_inputS  s$    ýÿ



rr   c               	   C   sæ   dt jddt jgdddddgdœ} t | ¡}|jd	d
d�}|j}t j}dt jddg|d�dt jdg|d�t jt jddg|d�i}t| 	¡ | 	¡ ƒD ]\}}t
 ||¡ q’t  t| ¡ ƒd ¡sÂt‚t| ¡ ƒdd… ddgksât‚d S )NÚg1Úg2r   r   r?   r>   rN   )Úgroupr   ru   Fr   ©r9   )r'   r(   r   r    r!   ÚindicesZintpÚarrayri   r[   r)   Zassert_numpy_array_equalÚisnanr%   rm   rK   )rj   r/   r0   rC   r9   r2   Zresult_valuesZexpected_valuesr3   r3   r4   Útest_groupby_nan_includedq  s     "
   ýrz   c                  C   sV   t jtjddggdddgd�} |  ddg¡} | jddgdd� ¡ }| }t ||¡ d S )	Nr   r   r   r   r	   r   Fr   )	r   r    r'   r(   ro   r!   Úfirstr)   r*   )r/   rC   r2   r3   r3   r4   Ú&test_groupby_drop_nan_with_multi_indexƒ  s
    r|   zvalues, dtyper?   ZUInt8ZInt8ZUInt16ZInt16ZUInt32ZInt32ZUInt64ZInt64ZFloat32ZFloat64ÚyÚxÚcategoryÚstringzstring[pyarrow]zpyarrow is not installed)Úreason)Zmarksz
2016-01-01ÚNaTz
2017-01-01zdatetime64[ns]z
2012-02-01ÚD)Úfreqz
2012-01-01Útest_seriesc           
   	   C   sÜ   t j| |d�}t  |ddddgdœ¡}|jdddd	�}|rB|d
 }d }t| t jjƒrXt}d}tj	||d��4 | 
¡ }t jd
dddgi|d d…  d¡d�}	W 5 Q R X |r°|	d
 }	|	j ¡ rÌ|	j ddg¡|	_t ||	¡ d S )Nrv   r   r?   r>   rN   )Úkeyr   r†   F©r   Úsortr   z@passing a SparseArray to pd.Index will store that array directly)ÚmatchrZ   éÿÿÿÿr   r}   r~   )r   r@   r    r!   Ú
isinstanceÚarraysÚSparseArrayÚFutureWarningr)   Zassert_produces_warningr"   Úrenamer   Zis_categoricalZreorder_categoriesrp   )
r[   r9   r…   r†   r/   rL   ÚwarnÚmsgrC   r2   r3   r3   r4   Útest_no_sort_keep_naŒ  s"    +0
r’   r9   c                 C   s˜   t  dddgi¡}t j||g|d�}|r0|d n|}|j|d| d�}| ¡ }	t  t|jƒg¡}
t jddgi|
d�}|rˆt 	|	|d ¡ nt 
|	|¡ d S )	Nr   r   r?   rv   Fr‡   r>   r   )r   r    r@   r!   r"   r;   r   r9   r)   rA   r*   )rˆ   r9   r-   r6   r…   r/   ra   rq   rL   rC   r   r2   r3   r3   r4   Útest_null_is_null_for_dtypeÍ  s    r“   )/Únumpyr'   ZpytestZpandas.compat.pyarrowr   Zpandas.core.dtypes.missingr   Zpandasr   Zpandas._testingZ_testingr)   ÚmarkZparametrizer(   r5   r7   r=   r@   rD   rI   rM   Z
RangeIndexr%   r#   Zfrom_productrT   rX   Zarm_slowÚ	TimestampZ	TimedeltaZPeriodr]   Úparamrk   rr   rz   r|   ZNAZskipifZ
datetime64r‚   rŒ   r�   r’   r8   r“   r3   r3   r3   r4   Ú<module>   st  ýýýúþ
ý


ýýúþ
 
ýýþþ
$ýþþ
þþþ



ýþ
ýýýúþ
ýþ"
ûûúúéþ#
	 ÿýþüù	Ýþ(