U
    sVc                     @   s   d dl Zd dlZd dlmZ d dlZd dlmZmZm	Z	 d dl
mZ d dlmZ dd Zdd Zd	d
 Zdd Zdd Zejdddgdd Zejdddgdd Zdd ZejdddgedddZejdddddd gd!d" Zd#d$ ZdS )%    N)iNaT)	DataFrameIndexSeries)
Int64Indexc                  C   s   t ddddgddddgddg d} | d	 }d
|ks@t| d	jdd}d
|ks^t| d	 }d
|ksxt| d	jdd}d
|kstd S )N                  Zmama)nniissr   r   FZnumeric_only)r   groupbymaxAssertionErrormin)Zaaresult r   E/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/groupby/test_min_max.pytest_max_min_non_numeric   s    &r   c              	   C   s  t dddddgdddddgddd	d
dgd}|  | sNt|jjdksNt|d}tjt	dd |j
dd}W 5 Q R X tdddgdd}t ddd
dgi|d}t|| tjt	dd |jdd}W 5 Q R X tdddgdd}t ddd	dgi|d}t|| d S )Nr	   r
   r   ZfoobarFabcde)ABCr   zDropping invalid)matchr   namer!   index)r   Z_consolidate_inplacelenZ_mgrblocksr   r   tmZassert_produces_warningFutureWarningr   r   assert_frame_equalr   )Zusing_array_managerdfgbr   eiexpectedr   r   r   $test_max_min_object_multiple_columns!   s(    
r0   c                  C   s   t jtdddgddjj} ttjdtjgdddg| d}|jdd	d
d 	 d }t jtddgddddjj}t
|| |dd 	 }d|j_t
|| d S )Nz
2019-05-09z%Y-%m-%d)format1r   r	   )r   r   r   r   F)Zas_indexr   r#   )pdZto_datetimer   dtdater   npnanr   r   r)   assert_series_equalr&   r$   )datesr,   r   r/   r   r   r   test_min_date_with_nansB   s     
  
r:   c                  C   s   t dtg} | ddg}|jdd}t dditjd}tj||dd |jdd}t dtitjd}tj||dd |jdd}t dtj	i}tj||dd d S )Nr	   r
   Z	min_countdtypeTZcheck_exactr   )
r   r   r   r   r6   Zint64r)   r8   r   r7   Zserr-   r   r/   r   r   r   test_max_inatT   s    r@   c                  C   s^   t dtdtd g} | ddddg}|jdd}t tjtjtd d}tj||dd d S )Nr	   r
   r   r;   )r	   r
   r   Tr>   )r   r   r   r   r6   r7   r)   r8   r?   r   r   r   test_max_inat_not_all_nag   s
    rA   funcr   r   c                 C   sj   ddg}t jdddd}t||d}t|dd |  }tddgdd	}t||dd
}t|| d S )Nr	   r
   2020Yperiodsfreqr   r   r   r   r#   )r&   r$   )	r3   period_ranger   getattrr   r   r   r)   r8   rB   groupsrF   r,   r   idxr/   r   r   r   $test_groupby_aggregate_period_columnt   s    rN   c                 C   sh   ddg}t jdddd}t||d}t|d|  }tddgdd}td	|i|d
}t|| d S )Nr	   r
   rC   rD   rE   rH   r   r#   r   r%   )r3   rI   r   rJ   r   r   r)   r+   rK   r   r   r   #test_groupby_aggregate_period_frame   s    rO   c                  C   s   t ddddgtdtjgd dt} | d }t ddgddgtjtjgdd}t	
|| t ddddgtdtddt} | d }t ddgddgd	d
gdd}t	
|| d S )Nr   r    Zabcdr   )keyZcol1Zcol2rP   r   r   r   r
   )r   listr6   r7   astypeobjectr   r   	set_indexr)   r+   range)r,   r   r/   r   r   r   #test_aggregate_numeric_object_dtype   s0    rV   )rB   c                 C   sx   t dgddj }tdg|d}|dd| i}tddgitdgddd	}|d |j|d< t	
|| d S )
Nr   categoryr<   i  r   r    r   r    r#   r%   )r   catZ
as_orderedr   r   Zaggr   rR   r=   r)   r+   )rB   Zdsr,   r   r/   r   r   r   %test_aggregate_categorical_lost_index   s    rZ   r=   Int64ZInt32ZFloat64ZFloat32booleanc                 C   s  | dkrd}n| dkrd}nd}t ddg||d gd}|d	 | |d	< |d
}| }|jd d d
}t|| | }|jdd  d
}t|| |jdd}t d	t	j
gi|j| d}	t||	 |jdd}
t|
|	 t dddg|t	j
|d gd}|d	 | |d	< |d
}| }t|| | }t|| |jdd}t||	 |jdd}t||	 d S )Nr[   l   .D3 r\   r   g      @r
   r	   )idtsr^   r]   r   r;   )r&   r=   d   )r   rR   r   r   ilocrT   r)   r+   r   r3   NAr&   )r=   r^   r,   r-   r   r/   Zres_maxZexpected_maxZresult2Z	expected2Zres_max2Zdf2Zgb2Zresult3Zres_max3Zresult4Zres_max4r   r   r   test_groupby_min_max_nullable   s<    
 
rb   c                  C   s   t jdgd ddgd} t| t tjdtjdd}|d}| }t j	ddg| j
dd}td	t jdt jgd
di|d}t|| | }d|jd< t|| d S )Nr   
   r	   )
categoriesr<   rX   r   )r=   r$   r    ZUInt64r%   	   )r   r   )r3   ZCategoricalr   arrayr6   ZarangeZuint64r   r   ZCategoricalIndexr=   ra   r)   r+   r   r`   )rY   r,   r-   resrM   r/   r   r   r   (test_min_max_nullable_uint64_empty_group   s     
 
rh   )Znumpyr6   ZpytestZpandas._libs.tslibsr   Zpandasr3   r   r   r   Zpandas._testingZ_testingr)   Zpandas.core.apir   r   r0   r:   r@   rA   markZparametrizerN   rO   rV   strrZ   rb   rh   r   r   r   r   <module>   s*   !


/