o
    Û­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 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g d¢g d¢g d¢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g d¢g d¢g d¢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g d¢g d¢g d¢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g d&¢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g d.¢d"d#ejgd,d-�fg¡d/d0„ ƒZej d1d2¡d3d4„ ƒZej d5e d d6¡ed7ƒejjd8d9gd:d;gd<�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gg d¢g d?¢g d@¢dœfg¡dAdB„ ƒZejjej dCe dD¡e dE¡fe  dF¡e  dG¡fe !dD¡e !dE¡fg¡ej dHddId$gfdg dJ¢fg¡dKdL„ ƒƒƒZ"ej dMej#dd"d"d#ejgg dN¢dOœdPg dQ¢id"d#ejgdRdS�ej#dd"d"d#ejgg dN¢dOœdPg dT¢iddUdS�ej#dg dV¢g dN¢dOœdPg dQ¢iddWdS�ej#dg dV¢g dN¢dOœdPg dQ¢iddXdS�g¡dYdZ„ ƒZ$ej d[dd"gd"d#gg¡ej d\d"gd"d#gg¡ej d]ddg¡d^d_„ ƒƒƒZ%d`da„ Z&dbdc„ Z'ej dde(deƒ¡ej dfddgdhdidjdkdldmdndodndpdqdrej#dsejj)edtdu�dv�dwdxdyg¡ej dzddg¡d{d|„ ƒƒƒZ*ej dzddg¡ej dfe+dg¡d}d~„ ƒƒZ,ej dg d€¢¡d�d‚„ ƒZ-dƒd„„ Z.ej d…d†d‡g¡dˆd‰„ ƒZ/dŠd‹„ Z0dŒd�„ Z1dS )Žé    N)Úpa_version_under10p1)Úna_value_for_dtype)Úget_groupby_method_argszdropna, tuples, outputsTÚAÚBç      *@ç…ëQ¸Î^@ç     À^@ç      ð?©ÚcÚdÚeF)r   çš™™™™™(@r   )r   ç      m@r	   )r   ç      (@r
   c           	      C   s–   g d¢d|dddgg d¢g d¢g}t j|g 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 )N©r   r   é   r   r   r   r   r   r   ©r   r   r   é{   é   ©r   r   r   r   r
   ©ÚaÚbr   r   r   ©Úcolumnsr   r   ©ÚdropnaÚab©Únamesr   ©Ú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© r;   úe/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_groupby_dropna.pyÚ:test_groupby_dropna_multi_index_dataframe_nan_in_one_group   s   ür=   r   )r   gš™™™™™*@r   r
   )r   g     @m@r	   r
   )r   r   r
   r
   c           
   	   C   s°   g d¢d|dddgg d¢|dddd	gd|ddd	gg}t j|g d
¢d�}|jddg| d� ¡ }t jj|tdƒd�}| sI| 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   r3   r4   r5   Únulls_fixture2r6   r7   r8   r9   r:   r;   r;   r<   Ú;test_groupby_dropna_multi_index_dataframe_nan_in_two_groups8   s   ûr?   zdropna, idx, outputs)r   r   r   )r   r   r   )r	   r   r   )r
   r   r   c                 C   sh   g d¢g d¢g d¢g d¢g}t j|g d¢d�}|jd| d� ¡ }t j|t j|dd	�d
�}t ||¡ d S )N)r   r   r   r   )Nr   r   r   )r   r   r   r   )r   r   r   r
   )r   r   r   r   r   r   r   ©Únamer$   )r'   r(   r)   r*   ÚIndexr1   r2   )r   Úidxr4   r6   r7   r8   r:   r;   r;   r<   Ú*test_groupby_dropna_normal_index_dataframed   s   ürD   zdropna, idx, expectedr   r   é   r$   )rE   rE   rE   c                 C   s4   t jg d¢|d�}|jd| d� ¡ }t ||¡ d S )N)r   é   rE   rE   r$   r   )r#   r   )r'   ÚSeriesr)   r*   r1   Úassert_series_equal)r   rC   r:   ÚserÚresultr;   r;   r<   Ú test_groupby_dropna_series_levelƒ   s   rK   zdropna, expectedç     @j@ç     àu@ú	Max Speed©r%   rA   )rL   rM   ç      4@c                 C   sD   t jg d¢g d¢dd�}|jdddtjg| d� ¡ }t ||¡ d S )N)g     `x@rM   g      >@rP   )ÚFalconrQ   ÚParrotrR   rN   rO   r   r   r   )r'   rG   r)   r/   r0   Úmeanr1   rH   )r   r:   rI   rJ   r;   r;   r<   Útest_groupby_dropna_series_by•   s   ýrT   r   )FTc                 C   s:   t  g d¢g d¢dœ¡}|jd| d�}|jj| ksJ ‚d S )N©r   r   r   N©r   rF   rE   N©r   r   r   r   )r'   r(   r)   Ú_grouperr   )r   r7   Úgbr;   r;   r<   Útest_grouper_dropna_propagationª   s   rZ   r%   é   Úabcd)r   rF   )ÚRr   ÚnumÚcolr    c                 C   sÄ   dddd| r	t jndgi}tjg d¢g d¢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   rF   r   rU   rV   rW   r$   r   r   rO   )r/   r0   r'   r(   r)   Ú	transformÚlenr1   r2   rG   rH   )r   r%   Úexpected_datar7   rY   rJ   r:   r;   r;   r<   Ú+test_groupby_dataframe_slice_then_transform²   s   

rc   )r   r   r	   )r
   r   r
   c           	      C   sž   g d¢g d¢g d¢g d¢g}t j|g d¢d�}dd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   Nr   r   r   r   r   r   r   r*   ÚmaxÚminr   r   r   r   r   r    r   r   r"   r$   )r'   r(   r)   Úaggr+   r,   r-   r.   r/   r0   r1   r2   )	r   r3   r4   r6   r7   Úagg_dictr8   r9   r:   r;   r;   r<   Ú-test_groupby_dropna_multi_index_dataframe_aggÎ   s   ürh   zdatetime1, datetime2z
2020-01-01z
2020-02-01z-2 daysz-1 dayszdropna, valuesr   )r   rE   é   c           
   	   C   s~   t  g d¢||||||gdœ¡}| r||g}n||tjg}|jd| d� ddi¡}t jd|it j|dd�d�}	t ||	¡ d S )	N)r   rF   rE   r[   é   ri   )ÚvaluesÚdtrl   r   rk   r*   r@   r$   )	r'   r(   r/   r0   r)   rf   rB   r1   r2   )
r   rk   Ú	datetime1Ú	datetime2Úunique_nulls_fixtureÚunique_nulls_fixture2r7   Úindexesr8   r:   r;   r;   r<   Ú&test_groupby_dropna_datetime_like_dataø   s"   úþÿ
rr   z#dropna, data, selected_data, levels)é
   rs   é   é   )Úgroupsrk   rk   )r   r   r   r   Údropna_false_has_nan)Úid)r   r   r   Údropna_true_has_nan)r   r   r   r   Údropna_false_no_nanÚdropna_true_no_nanc                 C   s¶   t  |¡}|jd| d�}d}tjt|d�� | dd„ ¡}W d   ƒ n1 s'w   Y  tt|d |d ƒƒ}t j	j
|dd gd�}	| sL|rL|	j|dd	�}	t j||	d
�}
t ||
¡ d S )Nrv   r   z7DataFrameGroupBy.apply operated on the grouping columns©Úmatchc                 S   s   t  dtt| ƒƒi¡S )Nrk   )r'   r(   Úrangera   )Úgrpr;   r;   r<   Ú<lambda>I  s    z@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>rk   r    r"   r$   )r'   r(   r)   r1   Úassert_produces_warningÚFutureWarningÚapplyÚtupleÚzipr+   r,   r.   r2   )r   ÚdataÚselected_dataÚlevelsr7   rY   ÚmsgrJ   Ú	mi_tuplesr9   r:   r;   r;   r<   Ú.test_groupby_apply_with_dropna_for_multi_index  s   
&ÿr‹   Úinput_indexÚkeysÚseriesc                 C   sœ   t  dtjgddgddgdœ¡}| |¡}|r|d }n| ddgkr,|dgkr,|dg }| d ur5| | ¡}|j|dd	�}|rB|d }| ¡ }t ||¡ d S )
Nr   rF   rE   ©r   r   r   r   r   r   Fr   )	r'   r(   r/   r0   Ú	set_indexr)   r*   r1   Úassert_equal)rŒ   r�   rŽ   Úobjr:   rY   rJ   r;   r;   r<   Ú)test_groupby_dropna_with_multiindex_inputV  s$   ýÿ



r“   c               	   C   sà   dt jddt jgg d¢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
 ||¡ qFt  t| ¡ ƒd	 ¡s^J ‚t| ¡ ƒdd	… ddgksnJ ‚d S )NÚg1Úg2)r   r   rF   rE   r[   )Úgroupr   r–   Fr   r   rF   ©ÚdtyperE   r   r[   )r/   r0   r'   r(   r)   ÚindicesÚintpÚarrayr…   rk   r1   Úassert_numpy_array_equalÚisnanr-   r�   )r†   r7   r8   rJ   r˜   r:   Úresult_valuesÚexpected_valuesr;   r;   r<   Útest_groupby_nan_includedt  s   
ý$r    c                  C   sT   t jtjddggg d¢d�} |  ddg¡} | jddgdd� ¡ }| }t ||¡ d S )	Nr   r   r�   r   r   r   Fr   )	r'   r(   r/   r0   r�   r)   Úfirstr1   r2   )r7   rJ   r:   r;   r;   r<   Ú&test_groupby_drop_nan_with_multi_index†  s
   r¢   Úsequence_indexéQ   r˜   ÚUInt8ÚInt8ÚUInt16ÚInt16ÚUInt32ÚInt32ÚUInt64ÚInt64ÚFloat32ÚFloat64ÚcategoryÚstringústring[pyarrow]zpyarrow is not installed)Úreason)Úmarksúdatetime64[ns]ú	period[d]zSparse[float]Útest_seriesc                    sÄ  d  ‡ fdd„tdƒD ƒ¡}|dv rddtjdœ‰n|d	v r&d
dtjdœ‰nddtjdœ‰t tj‡fdd„|D ƒ|d�g d¢dœ¡}|jddd|dd�}|rS|d }| 	¡ }i }t
|ƒD ]\}	}
| |
d¡|	 ||
< q]|dkr„tj‡fdd„|D ƒ|d jjdd�}n-t|tƒr¢| d¡r¢tjtj‡fdd„|D ƒ|d�dd�}ntj‡fdd„|D ƒ|dd�}tj| ¡ |dd d�}|sÂ| ¡ }|sÚ| ¡ }|d urÚ| d¡rÚ|d  |¡|d< t ||¡ d S )NÚ c                    s(   g | ]}d dddœˆ d|  d  ‘qS )ÚxÚyÚz)r   r   rF   rE   r;   )Ú.0Úk)r£   r;   r<   Ú
<listcomp>´  s   ( z(test_no_sort_keep_na.<locals>.<listcomp>r[   )r°   r±   r¸   r¹   )r¸   r¹   rº   )r´   rµ   z
2016-01-01z
2017-01-01r   rF   c                    ó   g | ]}ˆ | ‘qS r;   r;   ©r»   Úlabel©Úuniquesr;   r<   r½   Á  ó    r—   )r   r   rF   rE   )Úkeyr   rÄ   F)r   ÚsortÚas_indexÚobservedr   r   r¯   c                    r¾   r;   r;   ©r»   r   rÁ   r;   r<   r½   Ñ  rÃ   r@   ÚSparsec                    r¾   r;   r;   r¿   rÁ   r;   r<   r½   ×  rÃ   c                    r¾   r;   r;   r¿   rÁ   r;   r<   r½   Ú  rÃ   )r˜   rA   )r%   rA   r˜   )Újoinr~   r'   ÚNAr/   r0   r(   rG   r)   r*   Ú	enumerateÚgetÚCategoricalIndexÚcatÚ
categoriesÚ
isinstanceÚstrÚ
startswithrB   r›   rk   Úto_frameÚreset_indexÚastyper1   r‘   )r£   r˜   r¶   rÆ   Úsequencer7   rY   rJ   ÚsummedrC   rÀ   r%   r:   r;   )r£   rÂ   r<   Útest_no_sort_keep_na�  sN   #ÿþÿ
ýÿrÙ   c                 C   sš   t  dddgi¡}t j||g|d�}|r|d n|}|j|d| d�}| ¡ }	t  t|jƒg¡}
t jddgi|
d�}|rEt 	|	|d ¡ d S t 
|	|¡ d S )	Nr   r   rF   r—   F)r   rÅ   rE   r$   )r'   r(   rG   r)   r*   rB   r   r˜   r1   rH   r2   )rÅ   r˜   r5   r>   r¶   r7   rv   r’   rY   rJ   r%   r:   r;   r;   r<   Útest_null_is_null_for_dtypeæ  s   rÚ   Ú
index_kind)r~   ÚsingleÚmultic                 C   sF  t  t j d¡jg d¢dd�d ¡}t tj|g d¢d�tdƒdœ¡}| 	¡ }tj|g d	¢d� 
d
¡|d< |dkr<dg}n0|dkrNdg}| d¡}| d¡}nddg}|d |d< | ddg¡}|d |d< | ddg¡}t| |ƒ}	t| |ƒ}
| dkr�|dkr�|	d j|d�f}	|
d j|d�f}
|j|d|||d�}|sÁ| dv rÁtjtdd�� t|| ƒ|	Ž  W d   ƒ d S 1 sºw   Y  d S |j|||dd�}t|| ƒ|
Ž  ¡ }|d j d
g¡|d< |dkrí|d j d
g¡|d< |�r|dkrü| ddg¡}n!| d¡}n|dk�r| dk�r|jdd�}|dk�r|jdd�}| dv �rQ|dk�rQ|d j ¡ }|dk�rFdd„ |D ƒ}tj|g d¢d�|d< ndd„ |D ƒ}||d< | dk�rh|jddid�}|�rh|d  d ¡}|�su|dk�su| dk�rxd }nt}d }tj||d�� t|| ƒ|	Ž }W d   ƒ n	1 �s–w   Y  t ||¡ d S )!NrF   ©r   rF   Né   ©Úsize©r   rF   rE   ©rÐ   rt   ©r¸   r¹   )r   rF   rE   r[   r[   r¸   r~   rÜ   Úx2Úcorrwithr   r   F©r   rÇ   rÅ   rÆ   )ÚidxminÚidxmaxz(empty group due to unobserved categoriesr|   T)rÇ   rÅ   rÆ   rÝ   rá   )ré   rè   r¹   c                 S   s   g | ]}|d krt jn|‘qS )r[   ©r/   r0   rÈ   r;   r;   r<   r½   6  s    z-test_categorical_reducers.<locals>.<listcomp>c                 S   s$   g | ]}|d krt jt jfn|‘qS ))r[   r[   rê   rÈ   r;   r;   r<   r½   9  s   $ z*A grouping .* was excluded from the result)r/   ÚappendÚrandomÚdefault_rngÚchoicer'   r(   ÚCategoricalr~   ÚcopyÚfillnar�   r   Údropr)   ÚpytestÚraisesÚ
ValueErrorÚgetattrrÕ   rÏ   Úremove_categoriesrk   ÚtolistÚrenamer‚   r1   r�   r‘   )Úreduction_funcrÇ   rÅ   rÆ   rÛ   rk   r7   Ú	df_filledr�   ÚargsÚargs_filledÚ	gb_keepnaÚ	gb_filledr:   Úwarnr‰   rJ   r;   r;   r<   Útest_categorical_reducersù  s„   "ÿ



ÿÿ
ýü


ÿr  c                 C   sN  |dkrd}|   tjj|dd�¡ t tj d¡jg d¢dd�d ¡}t	 
t	j|g d	¢d
�tdƒdœ¡}t||ƒ}||d  ¡  d }	|dkrOttt|	ƒƒƒ}
n;|dkrƒ|rm|rb|d jdd�d }n|d jdd�d }n|jd |	jd … d  ¡ }t|	ƒ|g }
nt|	|ƒ|Ž }
t	 
d|
i¡}|jdd|||d�}|jdd||d�}d}|dkrÉtjt|d�� t|dƒ|Ž }W d   ƒ n1 sÃw   Y  nt||ƒ|Ž }t||ƒ|Ž }t||d  ¡  j ¡ |j ¡ ƒD ]\}}|jdkr÷||j|< qè||j|df< qè|dk�r||d  ¡ | |¡@   d7  < |dv�r|  d¡}t !||¡ d S )Nrñ   zBGH#49651 fillna may incorrectly reorders results when dropna=FalseF)r²   ÚstrictrF   rÞ   rß   rà   râ   rã   rt   rä   r¸   r¹   ÚcumcountÚngroupr   r   r   rç   T)r   rÇ   rÅ   zLThe default fill_method='ffill' in DataFrameGroupBy.pct_change is deprecatedÚ
pct_changer|   )ÚrankÚdiffr  ÚshiftÚint64)"Úapplymarkerró   ÚmarkÚxfailr/   rë   rì   rí   rî   r'   r(   rï   r~   r   Úisnullr-   ra   ÚnuniqueÚilocr%   rö   r)   r1   r�   r‚   r…   rø   rk   ÚravelÚndimÚnotnullÚgerÖ   r‘   )ÚrequestÚtransformation_funcrÇ   rÅ   rÆ   r‰   rk   r7   rü   Únull_group_valuesÚnull_group_dataÚna_groupÚnull_group_resultrþ   Ú	gb_dropnarJ   r:   r  Úvaluer;   r;   r<   Útest_categorical_transformersM  sV   "ÿ

ÿÿ€ÿ

"

r  ÚmethodÚheadÚtailc           
      C   sê   t j d¡ g d¢d¡}t tj|g d¢d�tt|ƒƒdœ¡}|j	dd|||d	�}t
|| ƒƒ }| d
kr:|d d d… }|dk|dk ¡ dk@ |dk|dk ¡ dk@ B |d k|d k ¡ dk@ B }| d
kri|d d d… }|| }	t ||	¡ d S )NrF   rÞ   ru   râ   rã   rä   r¸   Frç   r  éÿÿÿÿr   rj   )r/   rì   rí   rî   r'   r(   rï   r~   ra   r)   rö   Úcumsumr1   r2   )
r  rÇ   rÅ   rÆ   rk   r7   rY   rJ   Úmaskr:   r;   r;   r<   Útest_categorical_head_tail‰  s$   ÿÿýÿr#  c                  C   st   t j d¡ g d¢d¡} t tj| g d¢d�tt| ƒƒdœ¡}|j	dddd	�}| 
d
d„ ¡}| ¡ }t ||¡ d S )NrF   rÞ   ru   râ   rã   rä   r¸   F©r   rÇ   c                 S   ó   |   ¡ S ©N©r*   ©r¸   r;   r;   r<   r€   ª  ó    z&test_categorical_agg.<locals>.<lambda>)r/   rì   rí   rî   r'   r(   rï   r~   ra   r)   rf   r*   r1   r2   ©rk   r7   rY   rJ   r:   r;   r;   r<   Útest_categorical_agg£  s   ÿr+  c                  C   sv   t j d¡ g d¢d¡} t tj| g d¢d�tt| ƒƒdœ¡}|j	dddd	�}| 
d
d„ ¡}| 
d¡}t ||¡ d S )NrF   rÞ   ru   râ   rã   rä   r¸   Fr$  c                 S   r%  r&  r'  r(  r;   r;   r<   r€   ¶  r)  z,test_categorical_transform.<locals>.<lambda>r*   )r/   rì   rí   rî   r'   r(   rï   r~   ra   r)   r`   r1   r2   r*  r;   r;   r<   Útest_categorical_transform¯  s   ÿ
r,  )2Únumpyr/   ró   Úpandas.compat.pyarrowr   Úpandas.core.dtypes.missingr   Úpandasr'   Úpandas._testingÚ_testingr1   Úpandas.tests.groupbyr   r  Úparametrizer0   r=   r?   rD   rG   rK   rT   rZ   Ú
RangeIndexr-   r+   Úfrom_productrc   rh   Úarm_slowÚ	TimestampÚ	TimedeltaÚPeriodrr   Úparamr‹   r“   r    r¢   r~   ÚskipifrÙ   ÚobjectrÚ   r  r  r#  r+  r,  r;   r;   r;   r<   Ú<module>   st   ýýýúþ
ýýýúþ
 
ýýþþ
$ýþþ
þþþ



ýþ
ýýýúþ
ýþ 

û
û
ú
úéþ
#
ÿþéþ8
S<
