o
    i=                     @   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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.d/ Zejd0d1d2d3 Zejd4ed d5ed6ejjd7d8gd9d: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d@dA ZejjejdBedCedDfedEedFfedCedDfgejdGddHd#gfdg dIfgdJdK Z ejdLej!dd!d!d"ejgg dMdNdOg dPid!d"ejgdQdRej!dd!d!d"ejgg dMdNdOg dSiddTdRej!dg dUg dMdNdOg dPiddVdRej!dg dUg dMdNdOg dPiddWdRgdXdY Z"ejdZd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_d` Z$dadb Z%ejdce&ddejdeddfdgdhdidjdkdldmdndmdodpdqej!drejj'edsdtdudvdwdxgejdyddgdzd{ Z(ejdyddgejdee)dgd|d} Z*dS )~    N)pa_version_under1p01)na_value_for_dtypez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:   c/var/www/edux/Edux_v2/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   r2   r3   r4   nulls_fixture2r5   r6   r7   r8   r9   r:   r:   r;   ;test_groupby_dropna_multi_index_dataframe_nan_in_two_groups7   s   r>   zdropna, idx, outputs)r   r   r   )r   r   r   )r   r   r   )r	   r   r   c                 C   sj   g dg dg dg dg}t j|g dd}|jd| d }t j|t j|d	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   objectdtypenamer#   )r&   r'   r(   r)   Indexr0   r1   )r   idxr3   r5   r6   r7   r9   r:   r:   r;   *test_groupby_dropna_normal_index_dataframec   s   rE   zdropna, idx, expectedr   r      r#   )rF   rF   rF   c                 C   s4   t jg d|d}|jd| d }t|| d S )N)r      rF   rF   r#   r   )r"   r   )r&   Seriesr(   r)   r0   assert_series_equal)r   rD   r9   serresultr:   r:   r;    test_groupby_dropna_series_level   s   rL   zdropna, expected     @j@     u@	Max Speedr$   rB   )rM   rN         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@rN   g      >@rQ   )FalconrR   ParrotrS   rO   rP   r   r   r   )r&   rH   r(   r.   r/   meanr0   rI   )r   r9   rJ   rK   r:   r:   r;   test_groupby_dropna_series_by   s   rU   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   rG   rF   Nr   r   r   r   )r&   r'   r(   grouperr   )r   r6   gbr:   r:   r;   test_grouper_dropna_propagation   s   r[   r$      abcd)r   rG   )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   rG   r   rV   rW   rX   r#   r   r   rP   )r.   r/   r&   r'   r(   	transformlenr0   r1   rH   rI   )r   r$   expected_datar6   rZ   rK   r9   r:   r:   r;   +test_groupby_dataframe_slice_then_transform   s   

rd   )r   r   r   )r	   r   r	   c           	      C   s   g dg dg dg dg}t j|g d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   Nr   r   r   r   r   r   r   minr
   r   r   r   r   r   r   r   r!   r#   )r&   r'   r)   maxr(   aggr*   r+   r,   r-   r.   r/   r0   r1   )	r   r2   r3   r5   r6   agg_dictr7   r8   r9   r:   r:   r;   -test_groupby_dropna_multi_index_dataframe_agg   s   ri   zdatetime1, datetime2z
2020-01-01z
2020-02-01z-2 daysz-1 dayszdropna, valuesr   )r   rF      c           
   	   C   s~   t g d||||||gd}| r||g}n||tjg}|jd| ddti}t jd|it j|ddd}	t	||	 d S )N)r   rG   rF   r\      rj   )valuesdtrm   r   rl   rB   r#   )
r&   r'   r.   r/   r(   rg   r)   rC   r0   r1   )
r   rl   	datetime1	datetime2unique_nulls_fixtureunique_nulls_fixture2r6   indexesr7   r9   r:   r:   r;   &test_groupby_dropna_datetime_like_data   s"   
rt   z#dropna, data, selected_data, levels)
   ru         )groupsrl   rl   )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d }tt|d |d }t jj|dd gd}| s3|r3|j|dd}t j||d}	t	
||	 d S )	Nrx   r   c                 S   s   t dtt| iS )Nrl   )r&   r'   rangerb   )grpr:   r:   r;   <lambda>F  s    z@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>rl   r   r!   r#   )r&   r'   r(   applytuplezipr*   r+   r-   r0   r1   )
r   dataselected_datalevelsr6   rZ   rK   	mi_tuplesr8   r9   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   rG   rF   r   r   r   r   r   r   Fr   )	r&   r'   r.   r/   	set_indexr(   r)   r0   assert_equal)r   r   r   objr9   rZ   rK   r:   r:   r;   )test_groupby_dropna_with_multiindex_inputS  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   rG   rF   r\   )groupr   r   Fr   r   rG   rA   rF   r   r\   )r.   r/   r&   r'   r(   indicesintparrayr   rl   r0   assert_numpy_array_equalisnanr,   r   )r   r6   r7   rK   rA   r9   result_valuesexpected_valuesr:   r:   r;   test_groupby_nan_includedq  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.   r/   r   r(   firstr0   r1   )r6   rK   r9   r:   r:   r;   &test_groupby_drop_nan_with_multi_index  s
   r   sequence_indexQ   rA   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kr#d|v r#d}| jtjj|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}|rf|d }| }i }	t|D ]\}
}|	|d|
 |	|< qp|dkrtjfdd|	D tfdd|D dd}n-t|tr|drt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| }t|| d S )$N c                    s(   g | ]}d ddd d|  d  qS )xyz)r   r   rG   rF   r:   .0k)r   r:   r;   
<listcomp>  s   ( z(test_no_sort_keep_na.<locals>.<listcomp>r\   r   r   z2dropna=False not correct for categorical, GH#48645r   )r   r   r   r   )r   r   r   )r   r   z
2016-01-01z
2017-01-01r   rG   c                       g | ]} | qS r:   r:   r   labeluniquesr:   r;   r         r   )r   r   rG   rF   )keyr   r   Fr   sortr   r   c                    r   r:   r:   )r   r   r   r:   r;   r     r   c                    s$   i | ]}t  | s | d qS )r   )r&   isnullr   r   r:   r;   
<dictcomp>  s   $ z(test_no_sort_keep_na.<locals>.<dictcomp>rn   Sparsec                    r   r:   r:   r   r   r:   r;   r     r   c                    r   r:   r:   r   r   r:   r;   r     r   r@   )r$   rB   rA   )joinr~   node
add_markerpytestmarkxfailr&   NAr.   r/   r'   rH   r(   r)   	enumerategetCategoricalIndexr,   
isinstancestr
startswithrC   r   rl   to_framer0   r   )requestr   rA   r   sequencemsgr6   rZ   rK   summedrD   r   r$   r9   r:   )r   r   r;   test_no_sort_keep_na  sL   #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   rG   r   Fr   rF   r#   )r&   r'   rH   r(   r)   rC   r   rA   r0   rI   r1   )r   rA   r4   r=   r   r6   rx   r   rZ   rK   r$   r9   r:   r:   r;   test_null_is_null_for_dtype  s   r   )+numpyr.   r   pandas.compat.pyarrowr   pandas.core.dtypes.missingr   pandasr&   pandas._testing_testingr0   r   parametrizer/   r<   r>   rE   rH   rL   rU   r[   
RangeIndexr,   r*   from_productrd   ri   arm_slow	Timestamp	TimedeltaPeriodrt   paramr   r   r   r   r~   skipifr   r?   r   r:   r:   r:   r;   <module>   sd   

 

$






 





#
9