U
    >vf                     @   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 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Seriesc                  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-vdrwu74i/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}|dg  }tdddgdd}t ddd
dgi|d}t	
|| |dg  }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   r   nameindex)r   Z_consolidate_inplacelenZ_mgrblocksr   r   r   r   tmassert_frame_equalr   )Zusing_array_managerdfgbr   eiexpectedr   r   r   $test_max_min_object_multiple_columns    s$    
r,   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_nans?   s     
  
r6   c                  C   s   t dtg} tjddgtjd}| |}|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   dtyper	   Z	min_countTZcheck_exactr
   )r   r   r2   arrayZint64r   r   r&   r4   r   r3   )serkeyr)   r   r+   r   r   r   test_max_inatQ   s    
r>   c                  C   sn   t dtdtd g} | ddddg}|jdd}t tjtjtd d}|jtj|_t	j
||dd d S )Nr   r	   r
   r9   )r   r	   r
   Tr:   )r   r   r   r   r2   r3   r#   astypeint_r&   r4   )r<   r)   r   r+   r   r   r   test_max_inat_not_all_nae   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!   )	r/   period_ranger   getattrr   r   r   r&   r4   rB   groupsrF   r(   r   idxr+   r   r   r   $test_groupby_aggregate_period_columns   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"   )r/   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	
|| 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}t	
|| d S )Nr   r   Zabcdr   )r=   Zcol1Zcol2r=   r   r   r   r	   )r   listr2   r3   r?   objectr   r   	set_indexr&   r'   range)r(   r   r+   r   r   r   #test_aggregate_numeric_object_dtype   s8    rT   )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   categoryr7   i  r   r   r   r   r    r"   )r   catZ
as_orderedr   r   Zaggr   r?   r8   r&   r'   )rB   Zdsr(   r   r+   r   r   r   %test_aggregate_categorical_lost_index   s    rX   r8   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 )NrY   l   .D3 rZ   r   g      @r	   r   )idtsr\   r[   r
   r9   )r#   r8   d   )r   r?   r   r   ilocrR   r&   r'   r   r/   NAr#   )r8   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<    
 
r`   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   )
categoriesr7   rV   r   )r8   r!   r   ZUInt64r"   	   )r   r   )r/   ZCategoricalr   r;   r2   ZarangeZuint64r   r   ZCategoricalIndexr8   r_   r&   r'   r   r^   )rW   r(   r)   resrM   r+   r   r   r   (test_min_max_nullable_uint64_empty_group   s     
 
re   )Znumpyr2   ZpytestZpandas._libs.tslibsr   Zpandasr/   r   r   r   Zpandas._testingZ_testingr&   r   r,   r6   r>   rA   markZparametrizerN   rO   rT   strrX   r`   re   r   r   r   r   <module>   s(   


/