o
    Û­jTˆ  ã                   @   s®   d Z ddlmZmZ ddlZddlZddlZddlZddlm	Z	m
Z
mZmZmZmZmZmZ ddlmZ ddlmZ ddlmZ ejdd„ ƒZejd	d
„ ƒZG dd„ dƒZdS )z5
test with the TimeGrouper / grouping with datetimes
é    )ÚdatetimeÚ	timedeltaN)Ú	DataFrameÚDatetimeIndexÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚ
date_rangeÚoffsets)ÚGrouper)Ú
BinGrouperc                  C   s`   t g d¢tdddddƒtdddddƒtdddd	dƒtddd
ddƒtjtdddddƒgdœƒ} | S )z­
    DataFrame used by groupby_with_truncated_bingrouper, made into
    a separate fixture for easier reuse in
    test_groupby_apply_timegrouper_with_nat_apply_squeeze
    ©é   é   é   é   é	   r   éÝ  r   r   é   r   r   é
   é   r   é   é   )ÚQuantityÚDate)r   r	   ÚpdÚNaT)Údf© r   úb/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_timegrouper.pyÚframe_for_truncated_bingrouper   s   úþÿr!   c                 C   s:   | }t ddd�}| |¡}t|jjƒt|jjƒksJ ‚|S )a.  
    GroupBy object such that gb._grouper is a BinGrouper and
    len(gb._grouper.result_index) < len(gb._grouper.group_keys_seq)

    Aggregations on this groupby should have

        dti = date_range("2013-09-01", "2013-10-01", freq="5D", name="Date")

    As either the index or an index level.
    r   Ú5D©ÚkeyÚfreq)r   ÚgroupbyÚlenÚ_grouperÚresult_indexÚgroup_keys_seq)r!   r   ÚtdgÚgbr   r   r    Ú!groupby_with_truncated_bingrouper4   s
   
r-   c                   @   s  e Zd Zdd„ Zej dddg¡dd„ ƒZdd	„ Zej d
g d¢¡dd„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zejj d:d;„ ƒZ!d<S )=ÚTestGroupByc                 C   sˆ  t d ¡ g d¢tdddddƒtdddddƒtdd	dd
dƒtdd	dd	dƒtdddddƒtdddddƒgdœƒ}|jdd�}||fD ]�}| dg¡}tddddd|jjd�}t |rYdndddœ|d�}| dt	i¡}|rq| ddi¡}d|j
d< d|j
d < d!|j
d"< tjg d#¢d$d%�|j
g d&¢df< | d¡ ¡ }t ||¡ | ¡ }| tdd'�¡ ¡ }	t |	|¡ | tdd'�¡ ¡ }
t |
|¡ q@d S )(NzCarl Carl Carl Carl Joe Carlr   r   r   r   r   r   r   r   r   r   é   r   r   ©ÚBuyerr   r   r   ©Úbyr   Ú20130901Ú20131205r"   Úleft)r%   ÚnameÚ	inclusiveÚunitÚ )r1   r   ©Úindexr1   ÚstrÚCarlCarlCarl)r   r   ÚCarlCarl)é   r   ÚJoe)r   r   )é   r@   r   Úint64©Údtype)r   r@   r   ©r%   )r   Úsplitr   Úsort_valuesÚ	set_indexr
   r<   r9   ÚastypeÚobjectÚilocÚnpÚarrayÚresampleÚsumÚtmÚassert_frame_equalÚ
sort_indexr&   r   )ÚselfÚusing_infer_stringÚdf_originalÚdf_reorderedr   Úexp_dtiÚexpectedÚresult1Ú	df_sortedÚresult2Úresult3r   r   r    Útest_groupby_with_timegrouperL   sT   úýÿúþ


 àz)TestGroupBy.test_groupby_with_timegrouperÚshould_sortTFc                 C   sä   t d ¡ d ¡ g d¢tdddddƒtdddddƒtdd	dd
dƒtdd	dd	dƒtdddddƒtdddddƒgdœƒ}|rB|jddd�}|jddd�}| tdd�¡}|jsVJ ‚t|j	t
ƒs^J ‚|j}t|tƒshJ ‚t|ƒdkspJ ‚d S )NzA A A A A BzCarl Mark Carl Joe Joe Carl)r   r   r   é   r   r   r   r   r   r   r   r   r   r   r/   r   ©ÚBranchr1   r   r   r   F©r3   Ú	ascendingr   ©ÚdropÚ6MErF   r   )r   rG   r   rH   rI   r&   r   Ú
group_keysÚ
isinstancer(   r   ÚgroupsÚdictr'   )rT   r_   r   Úgrj   r   r   r    Ú%test_groupby_with_timegrouper_methods„   s,   úüÿ
z1TestGroupBy.test_groupby_with_timegrouper_methodsc                 C   sX  t d ¡ d ¡ g d¢tdddddƒtdddddƒtdd	dd
dƒtdd	dd	dƒtdd	dd
dƒtdd	dd	dƒtdddddƒtdddddƒgdœƒ d¡}|jddd�}||fD ]}t d ¡ g d¢tdddddƒtdddddƒtdddddƒgdœƒ ddg¡}d}| tdd�dg¡jdd�}t 	||¡ t d ¡ g d¢tdddddƒtdddddƒtdddddƒtdddddƒgdœƒ ddg¡}| td d�dg¡jdd�}t 	||¡ qUt d ¡ d ¡ g d¢tdd	dddƒtdd	dddƒtdd	dd
dƒtdd	dd	dƒtdd	dd
dƒtdd	dd	dƒtdd	dddƒtdd	dddƒgdœƒ d¡}|jddd�}||fD �]þ}t d! ¡ g d"¢tdd	dddƒtdd	dddƒtdd	dddƒtdd	dddƒtdd	dddƒgdœƒ ddg¡}| td#d�dg¡jdd�}t 	||¡ | td$d�dg¡jdd�}t d ¡ g d¢tdd	dddƒtdd	dddƒtdd	dddƒgdœƒ ddg¡}t 	||¡ | 
¡ }| td$dd%�dg¡jdd�}t 	||¡ tjtd&d'�� | td$d(d%�dg¡ ¡  W d   ƒ n	1 �sèw   Y  | d¡}| td$dd)�dg¡jdd�}t 	||¡ | td$dd)�dg¡jdd�}t 	||¡ tjtd*d'�� | td$d(d)�dg¡ ¡  W d   ƒ n	1 �s<w   Y  | ¡ }|jt d¡ |d< | td$dd%�dg¡jdd�}t d ¡ g d¢tdd+d,ddƒtdd+d,ddƒtdd+d,ddƒgdœƒ ddg¡}t 	||¡ d-}tjt|d'�� | td$ddd.�dg¡ ¡  W d   ƒ n	1 �s­w   Y  t dggdgttdd	dddƒgt ¡ dd/�d0�}| td$d�¡jdd�}t 	||¡ | td$d�g¡jdd�}t 	||¡ |j d¡|_|jjt ¡ k�sJ ‚| td$dd%�¡jdd�}t 	||¡ | td$dd%�g¡jdd�}t 	||¡ �q*d S )1NzA A A A A A A Bz$Carl Mark Carl Carl Joe Joe Joe Carl)r   r   r   r   r`   r   r   r   r   r   r   r   r   r   r   r   r/   r   ra   r   r   Frc   zCarl Joe Mark)r   r   r   é   r0   r1   z!The default value of numeric_onlyÚYErF   T)Únumeric_onlyzCarl Mark Carl Joe)r   r   r   r   é   Ú6MSzCarl Joe Mark Carl Joe)r@   r`   r   é   r   Ú1DÚ1ME©r%   r$   z#'The grouper name foo is not found'©ÚmatchÚfoo)r%   ÚlevelzThe level foo is not validé   é   z2The Grouper cannot specify both a key and a level!)r%   r$   rz   ©r%   r7   ©Úcolumnsr<   )r   rG   r   rI   rH   r&   r   rP   rQ   rR   Úreset_indexÚpytestÚraisesÚKeyErrorÚ
ValueErrorÚcopyr<   r   ÚMonthEndr   Úshiftr%   )rT   rV   r[   r   rY   ÚmsgÚresultr   r   r    Ú test_timegrouper_with_reg_groups¥   s<  øüÿðýýÿ

öüýÿ
õøüÿðûýÿ
ôýýÿ

öÿÿ
ÿÿÿÿýýÿ

öÿýÿýÿ˜z,TestGroupBy.test_timegrouper_with_reg_groupsr%   )ÚDÚMEro   zQE-APRc                 C   sÀ   t t g d¢¡g d¢g d¢g d¢dœƒ d¡}| d¡d  |¡jd	d
� ¡  ddg¡ 	¡  
d¡}d|_| 	¡  t|d�dg¡d  ¡ }t ||¡ | t|d�dg¡d  ¡ }t ||¡ d S )N)Ú20121002Ú20121007Ú20130130Ú20130202Ú20130305r�   Ú20121207r�   r�   r‘   r�   r‘   )r   r   r   r   r   r   r   r   r   r   r   r   )iþ  il  i  i  éÉ   io  éZ   i8  ég  i-  r•   i!  )r/   é   r   rB   é'   r   r   r”   é-   é"   r   r/   )ÚdateÚuser_idÚ
whole_costÚcost1rš   r›   rœ   r   )Ú	min_countrC   rF   )r   r   Úto_datetimerI   r&   rO   rP   ÚdropnaÚreorder_levelsrS   rJ   r7   r   rQ   Úassert_series_equal)rT   r%   r   rY   rZ   r\   r   r   r    Ú%test_timegrouper_with_reg_groups_freqZ  s4   ÿàÿ#Ý&þ
ù	ÿz1TestGroupBy.test_timegrouper_with_reg_groups_freqc                 C   s  t d ¡ g d¢tdddddƒtdddddƒtdd	dd
dƒtdd	dd	dƒtdddddƒtdddddƒgdœƒ}|jdd�}|jg d¢ |jddg |jdg g}g d¢}||fD ]$}| tddd�¡}t||ƒD ]\}}t|ƒ}	| 	|	¡}
t
 |
|¡ qgqW|jdg |jdg |jdg g}g d¢}||fD ]*}| dtddd�g¡}t||ƒD ]\\}}}t|ƒ}	| 	||	f¡}
t
 |
|¡ q§q•| d¡}|jdd�}|jg d¢ |jddg |jdg g}||fD ]#}| tdd�¡}t||ƒD ]\}}t|ƒ}	| 	|	¡}
t
 |
|¡ qñqâd S )NzCarl Joe Joe Carl Joe Carlr   r   r   r   r   r   r   r   r   r   r/   r   r   r0   r   r2   )r   r   r   rs   )ú
2013-09-30ú
2013-10-31ú
2013-12-31rŒ   r   rv   ))rA   r¤   )ÚCarlr¥   )rA   r¦   r1   rF   )r   rG   r   rH   rL   r&   r   Úzipr	   Ú	get_grouprQ   rR   rI   )rT   rV   rW   Úexpected_listÚdt_listr   ÚgroupedÚtrY   Údtr‰   Úg_listÚbr   r   r    Útest_timegrouper_get_group•  sf   úýÿ
ý
ý


ýý

ý
ýþz&TestGroupBy.test_timegrouper_get_groupc                 C   sê   t ddgddgdœƒ}| ¡ }t |d ¡|d< dd„ }d	}tjt|d
�� | tdd�¡ 	|¡}W d   ƒ n1 s;w   Y  d	}tjt|d
�� | tddd�¡ 	|¡}W d   ƒ n1 s`w   Y  t 
|jdd�|jdd�¡ d S )Nú
10/10/2000ú
11/10/2000r   r   ©rš   Úvaluerš   c                 S   s   t | d  ¡ gdƒS )Nrµ   )rP   )r   rP   ©Úxr   r   r    Úsumfunc_seriesß  s   zMTestGroupBy.test_timegrouper_apply_return_type_series.<locals>.sumfunc_seriesú7DataFrameGroupBy.apply operated on the grouping columnsrw   ©r$   rŒ   rv   Tre   )r   r…   r   rŸ   rQ   Úassert_produces_warningÚFutureWarningr&   r   ÚapplyrR   r€   )rT   r   Údf_dtr¸   rˆ   rY   r‰   r   r   r    Ú)test_timegrouper_apply_return_type_series×  s   ÿÿÿz5TestGroupBy.test_timegrouper_apply_return_type_seriesc                 C   sæ   t ddgddgdœƒ}| ¡ }t |d ¡|d< dd„ }d	}tjt|d
�� | tdd�¡ 	|¡}W d   ƒ n1 s;w   Y  tjt|d
�� | tddd�¡ 	|¡}W d   ƒ n1 s^w   Y  t 
|jdd�|jdd�¡ d S )Nr²   r³   r   r   r´   rš   c                 S   s
   | j  ¡ S ©N)rµ   rP   r¶   r   r   r    Úsumfunc_valueô  s   
zKTestGroupBy.test_timegrouper_apply_return_type_value.<locals>.sumfunc_valuer¹   rw   rº   rŒ   rv   Tre   )r   r…   r   rŸ   rQ   r»   r¼   r&   r   r½   r¢   r€   )rT   r   r¾   rÁ   rˆ   rY   r‰   r   r   r    Ú(test_timegrouper_apply_return_type_valueì  s   ÿÿÿz4TestGroupBy.test_timegrouper_apply_return_type_valuec                 C   sb   d}t dd|d�}tt |¡t |¡dœ|d�}| dd„ ¡}|j}ttt| 	¡ ƒƒt
ƒs/J ‚d S )	Niè  z2012/1/1Ú5min)Ústartr%   Úperiods)ÚhighÚlowr;   c                 S   s   t | j| j| jƒS rÀ   )r   ÚyearÚmonthÚdayr¶   r   r   r    Ú<lambda>  s    z?TestGroupBy.test_groupby_groups_datetimeindex.<locals>.<lambda>)r
   r   rM   Úaranger&   rj   ri   ÚnextÚiterÚkeysr   )rT   rÅ   Úindr   r¬   rj   r   r   r    Ú!test_groupby_groups_datetimeindex   s   ÿz-TestGroupBy.test_groupby_groups_datetimeindexc           
      C   sÌ   t dddd�}tg d¢g d¢dœ|d�}|jdd	�j}g d
¢}dd„ |D ƒ}t ||¡ |jdd	�}|D ]/}| |¡}|j|df |j|df gg}t|gdd|j	d�}	t|t
dƒ|	d�}t ||¡ q4d S )Nz
2015/01/01r   rš   )rÅ   r7   )r   r@   rq   r`   r   )r   r   r   rs   r   ©ÚAÚBr;   ©rz   )z
2015-01-05z
2015-01-04z
2015-01-03z
2015-01-02z
2015-01-01c                 S   s    i | ]}t |ƒt|gd d�“qS )rš   ©r7   )r	   r   )Ú.0rš   r   r   r    Ú
<dictcomp>  s    ÿzBTestGroupBy.test_groupby_groups_datetimeindex2.<locals>.<dictcomp>rÓ   rÔ   r‹   )r7   r%   rE   ÚABr~   )r
   r   r&   rj   rQ   Úassert_dict_equalr©   Úlocr   rE   ÚlistrR   )
rT   r<   r   r‰   ÚdatesrY   r¬   rš   ÚdataÚexpected_indexr   r   r    Ú"test_groupby_groups_datetimeindex2  s$   ÿ
ÿùz.TestGroupBy.test_groupby_groups_datetimeindex2c           	      C   s4  g d¢}t g d¢|tjddd�ddgd d	œƒ}|d
  dd„ ¡|d
< tg d¢dd
d�}tddgd dd�}t ||g¡}t g d¢g d¢dœ|ddgd�}| d
dg¡ 	¡ }t
 ||¡ t|dd�}t tjddd�g d¢dœ|d�}tg d¢dd�}t g d¢g d ¢dœ|ddgd�}|jd!d"� 	¡ }t
 ||¡ d S )#N©ú2011-07-19 07:00:00ú2011-07-19 08:00:00ú2011-07-19 09:00:00râ   rã   rä   ©Úaræ   ræ   r°   r°   r°   r@   rC   rD   r   r   r   )Úlabelr   Úvalue1Úvalue2r   c                 S   s   t | dd�S )Nú
US/Pacific©Útz)r	   )Údr   r   r    rË   4  ó    zBTestGroupBy.test_groupby_groups_datetimeindex_tz.<locals>.<lambda>©râ   râ   rã   rã   rä   rä   rê   )rì   r7   ræ   r°   rç   rÖ   ©r   r   r   rs   r   r   ©r   r   r   r   r   r   ©rè   ré   rè   ré   ©r<   r   z
Asia/Tokyorë   ©r   r   r   r   r   r   r;   ©râ   rã   rä   ©r   r   rq   ©r   rs   r@   r   rÕ   )r   rM   rÌ   r½   r   r   r   Úfrom_arraysr&   rP   rQ   rR   ©	rT   rÝ   r   Úexp_idx1Úexp_idx2Úexp_idxrY   r‰   Údidxr   r   r    Ú$test_groupby_groups_datetimeindex_tz"  sN   
üÿöýþþýz0TestGroupBy.test_groupby_groups_datetimeindex_tzc                 C   sR   t dt d¡fdt d¡fgddgd�}| d¡ ¡ }|d d tdƒks'J ‚d S )Nr   z
2012-07-03z
2012-07-04ræ   rš   )r   )r   rM   Ú
datetime64r&   Úfirstr	   )rT   r   r‰   r   r   r    Ú&test_frame_datetime64_handling_groupbya  s   þz2TestGroupBy.test_frame_datetime64_handling_groupbyc              	   C   sâ   t tdƒg d¢g d¢dœƒ}|jddd�j dd	„ ¡}ttd
dd�tddd�tddd�tddd�tddd�gdtd�}t 	||¡ d}| d¡j 
|¡}t |¡j |¡}tg d¢g d¢dd�}t |¡j |¡}t 	||¡ d S )Nr   )ú2000-01-28 16:47:00ú2000-01-29 16:48:00z2000-01-30 16:49:00ú2000-01-31 16:50:00z2000-01-01 16:50:00)úAmerica/Chicagor  úAmerica/Los_Angelesr  úAmerica/New_York)rµ   rš   rì   rì   F)rh   c                 S   s   t  | ¡j | j¡S rÀ   )r   rŸ   r®   Útz_localizer7   r¶   r   r   r    rË   �  s    z9TestGroupBy.test_groupby_multi_timezone.<locals>.<lambda>z2000-01-28 16:47:00-0600r  rë   z2000-01-29 16:48:00-0600z2000-01-30 16:49:00-0800r  z2000-01-31 16:50:00-0600z2000-01-01 16:50:00-0500r  rš   )r7   rE   )r  r  r  )r   r   r   ©r<   r7   )r   Úranger&   rš   r½   r   r	   rK   rQ   r¢   r©   r   rŸ   r®   r  )rT   r   r‰   rY   rì   Ú
res_valuesÚ
exp_valuesr   r   r    Útest_groupby_multi_timezonej  s<   ÷ÿÿ




û÷ýz'TestGroupBy.test_groupby_multi_timezonec           	      C   s.  g d¢}t g d¢dd„ |D ƒtjddd�dd	gd
 dœƒ}tjg d¢ddd�}tddgd
 dd�}t ||g¡}t g d¢g d¢dœ|ddgd�}| ddg¡ 	¡ }t
 ||¡ tj|dd�}t tjddd�g d¢dœ|d�}tjg d¢dd�}t g d¢g d¢dœ|ddgd�}|jd d!� 	¡ }t
 ||¡ d S )"Nrá   rå   c                 S   s   g | ]	}t j|d d�‘qS )ÚhrF   )r   ÚPeriod)r×   rí   r   r   r    Ú
<listcomp>¨  s    z;TestGroupBy.test_groupby_groups_periods.<locals>.<listcomp>r@   rC   rD   r   r   r   )rç   Úperiodrè   ré   rï   r  r  r}   ræ   r°   rç   rÖ   rð   rñ   rò   rè   ré   ró   rF   rô   r;   rõ   rö   r÷   r   rÕ   )r   rM   rÌ   r   ÚPeriodIndexr   r   rø   r&   rP   rQ   rR   rù   r   r   r    Útest_groupby_groups_periodsœ  sL   
üÿ	öýþþýz'TestGroupBy.test_groupby_groups_periodsc                 C   s’   t ddgƒ}|d  d¡|d< t|d jjtjƒsJ ‚|jdd� ¡ }|d j}t|jtjƒs1J ‚|d jdd� ¡ }|j}t|jtjƒsGJ ‚d S )N)r   ì     ö|>cþ )r   r  r   zM8[ns]r   rÕ   )	r   rJ   Ú
issubclassrE   ÚtyperM   rÿ   r&   r   )rT   r   r‰   Úgot_dtr   r   r    Útest_groupby_first_datetime64Ù  s   
z)TestGroupBy.test_groupby_first_datetime64c                 C   sX   t tdƒt d¡dœƒ}| d¡d  dd„ ¡ d¡}| d¡d  ¡ }t 	||¡ d S )NÚ20130101r   rÒ   rÓ   c                 S   s   |   ¡ S rÀ   )Úmaxr¶   r   r   r    rË   ì  s    z9TestGroupBy.test_groupby_max_datetime64.<locals>.<lambda>zM8[s])
r   r	   rM   rÌ   r&   r½   rJ   r  rQ   r¢   )rT   r   rY   r‰   r   r   r    Útest_groupby_max_datetime64ç  s   z'TestGroupBy.test_groupby_max_datetime64c                 C   sV   t tdƒtdƒgd dœƒ}| d¡d  d¡}ttdƒgd dd�}t ||¡ d S )Nr   z	2000-01-1rÒ   rÓ   rÔ   ÚminrÖ   )r   r
  r	   r&   Ú	transformr   rQ   r¢   ©rT   r   r‰   rY   r   r   r    Útest_groupby_datetime64_32_bitð  s   z*TestGroupBy.test_groupby_datetime64_32_bitc                 C   sb   t tj d¡jdddd�tddddd	�d
œƒ}| d¡ ¡ d }| d¡d  ¡ }t 	||¡ d S )Nr   r   r   é<   )Úsizez01/01/2000 00:00ÚsÚUTC)rÅ   r%   rì   )ÚfactorÚtimer$  r%  )
r   rM   ÚrandomÚdefault_rngÚintegersr
   r&   r  rQ   r¢   )rT   r   Údf1Údf2r   r   r    Ú$test_groupby_with_timezone_selectionù  s   þÿz0TestGroupBy.test_groupby_with_timezone_selectionc                 C   sn   t dgt tj¡gdœƒ}|d d jtjksJ ‚t dg d¢iƒ}t tj¡|d< |d d jtjks5J ‚d S )Nr   )ræ   r°   r°   r   ræ   ©r   r   r   )r   r   ÚnowÚpytzÚutcÚtzinfo)rT   r   r   r   r    Útest_timezone_info  s
   zTestGroupBy.test_timezone_infoc                 C   s^   t g d¢d tdddd�dœƒ}| d¡j ¡ }tg d	¢tg d¢dd
�dd�}t ||¡ d S )Nr,  r   r-  r@   r  )rÅ   r%   )ræ   rÝ   ræ   )r   r   r   rÖ   rÝ   r	  )	r   r
   r&   rÝ   Úcountr   r   rQ   r¢   r  r   r   r    Útest_datetime_count  s   ÿzTestGroupBy.test_datetime_countc                 C   sÈ   t tjdddtjgtjtdd�tdd�tdd�tjgdœƒ}t |j¡|_d	|d
< ||j ¡  }| d
¡}| d
¡}t	 
| ¡ | ¡ ¡ t	 
| ¡ | ¡ ¡ t	 
| ¡ | ¡ ¡ t	 
| ¡ | ¡ ¡ d S )Nz2015-07-24 10:10z2015-07-25 11:11z2015-07-23 12:12r   )Údaysr   r   )r®   ÚtdrÓ   Úgroup)r   rM   Únanr   r   rŸ   r®   Únotnar&   rQ   rR   r  r  r   Úlast)rT   Údf_testÚdf_refÚgrouped_testÚgrouped_refr   r   r    Ú$test_first_last_max_min_on_time_data  s0   ûûøÿ

z0TestGroupBy.test_first_last_max_min_on_time_datac                 C   sz   t tdƒtjtdƒgg d¢dœƒ}tddd�}| |¡d  ¡ }||j ¡   |¡d  ¡ }|j	 
d ¡|_	t ||¡ d S )	Nz2016-06-28 09:35:35z2016-06-28 16:46:28)Ú1Ú2Ú3)r%  rÞ   r%  r  r#   rÞ   )r   r	   r   r   r   r&   Únuniquer%  Únotnullr<   Ú
_with_freqrQ   r¢   )rT   ÚtestÚgrouperr‰   rY   r   r   r    Ú%test_nunique_with_timegrouper_and_nat;  s   ýúÿz1TestGroupBy.test_nunique_with_timegrouper_and_natc                 C   sn   g d¢t g d¢dd�g d¢dœ}t|ƒ d¡}tdd	�}| |¡}| ¡ }| |g¡}| ¡ }t ||¡ d S )
N)ÚshanghaiÚbeijingrH  )z2017-08-09 13:32:23z2017-08-11 23:23:15z2017-08-11 22:23:15zdatetime64[ns]rD   r,  )Úlocationr%  rµ   r%  r‹   rF   )r   r   rI   r   r&   r2  rQ   rR   )rT   Ú
data_framerF  r¬   r‰   rY   r   r   r    Ú!test_scalar_call_versus_list_callN  s   þú

z-TestGroupBy.test_scalar_call_versus_list_callc                 C   sl   d}t jd|ddd�}tt|ƒ|d�}| |jj¡ ¡ }tt|ƒttd|d ƒ|j	d�d�}t
 ||¡ d S )	Nr   z2018-01ÚMÚMonth)rÄ   rÅ   r%   r7   r;   r   rÖ   )r   Úperiod_ranger   r
  r&   r<   rÉ   rP   r   r7   rQ   r¢   )rT   rÅ   r<   Úperiod_seriesr‰   rY   r   r   r    Útest_grouper_period_indexb  s   ÿÿz%TestGroupBy.test_grouper_period_indexc           	      C   st   |}|d   dd„ ¡}|j}|d jj}tdddd|d�}t |d	gt|ƒ g¡}tg d
¢|dd�}t	 
||¡ d S )Nr   c                 S   s   dt | ƒiS )Nry   )r'   r¶   r   r   r    rË   x  rî   zRTestGroupBy.test_groupby_apply_timegrouper_with_nat_dict_returns.<locals>.<lambda>r   ú
2013-09-01ú
2013-10-01r"   ©r%   r7   r9   ry   )r   r   r   r   r   r   r   r	  )r½   ÚobjÚ_valuesr9   r
   r   rø   r'   r   rQ   r¢   )	rT   r-   r,   Úresr   r9   ÚdtiÚmirY   r   r   r    Ú4test_groupby_apply_timegrouper_with_nat_dict_returnsp  s   z@TestGroupBy.test_groupby_apply_timegrouper_with_nat_dict_returnsc                 C   sv   |}|d   dd„ ¡}|j}|d jj}tdddd|d�}td	tjtjtjtjtjd
g| d ¡dd�}t	 
||¡ d S )Nr   c                 S   s   t | ƒr	| jd S tjS )Nr   )r'   rL   rM   r7  r¶   r   r   r    rË   ˆ  s    zTTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returns.<locals>.<lambda>r   rR  rS  r"   rT  r   r   r	  )r½   rU  rV  r9   r
   r   rM   r7  rD  rQ   r¢   )rT   r-   r,   rW  r   r9   rX  rY   r   r   r    Ú6test_groupby_apply_timegrouper_with_nat_scalar_returns�  s   ýzBTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returnsc           	      C   sÊ   |}t ddd�}| |¡}|jdksJ ‚|j |j¡jdks J ‚d}tjt	|d�� | 
dd„ ¡}W d   ƒ n1 s;w   Y  ttd	ƒg|d jdd
�}tg d¢g|tg d¢dd�d�}t ||¡ d S )Nr   Ú100YEr#   r   r¹   rw   c                 S   s   | d d S )Nr   r   r   r¶   r   r   r    rË   §  rî   zSTestGroupBy.test_groupby_apply_timegrouper_with_nat_apply_squeeze.<locals>.<lambda>r¦   )rE   r7   )é$   r@   r@   r   r   )r   r   r   r   r   r   rÖ   ró   )r   r&   ÚngroupsÚ_selected_objÚ	_get_axisÚaxisÚnlevelsrQ   r»   r¼   r½   r   r	   rE   r   rR   )	rT   r!   r   r+   r,   rˆ   rW  rX  rY   r   r   r    Ú5test_groupby_apply_timegrouper_with_nat_apply_squeeze•  s    
ÿýzATestGroupBy.test_groupby_apply_timegrouper_with_nat_apply_squeezec                 C   sv   t  d¡ |}|d jdd„ dd�}|d  d¡}t ||¡ |dg jdd„ dd�}|dg  d¡}t ||¡ d S )NÚnumbar   c                 S   ó
   t  | ¡S rÀ   ©rM   Únanmean©Úvaluesr<   r   r   r    rË   »  ó   
 zITestGroupBy.test_groupby_agg_numba_timegrouper_with_nat.<locals>.<lambda>)ÚengineÚmeanc                 S   re  rÀ   rf  rh  r   r   r    rË   Â  rj  )r�   ÚimportorskipÚ	aggregaterQ   r¢   rR   )rT   r-   r,   r‰   rY   Ú	result_dfÚexpected_dfr   r   r    Ú+test_groupby_agg_numba_timegrouper_with_nat±  s   
ÿ
ÿz7TestGroupBy.test_groupby_agg_numba_timegrouper_with_natN)"Ú__name__Ú
__module__Ú__qualname__r^   r�   ÚmarkÚparametrizerm   rŠ   r£   r±   r¿   rÂ   rÑ   rà   rþ   r  r  r  r  r  r  r+  r1  r3  r>  rG  rL  rQ  rZ  r[  rc  Ú
single_cpurq  r   r   r   r    r.   K   s@    8
  6
:B?	2=		
"r.   )Ú__doc__r   r   ÚnumpyrM   r�   r.  Úpandasr   r   r   r   r   r   r	   r
   r   Úpandas._testingÚ_testingrQ   Úpandas.core.groupby.grouperr   Úpandas.core.groupby.opsr   Úfixturer!   r-   r.   r   r   r   r    Ú<module>   s    (


