o
    �¨ÊhÛ‡  ã                   @   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   úW/var/www/html/env/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   sn  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 ]t}| dg¡}tddddd|jjd�}t dddœ|d�}| dt	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   Ú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Údf_originalÚdf_reorderedr   Úexp_dtiÚexpectedÚresult1Ú	df_sortedÚresult2Úresult3r   r   r    Útest_groupby_with_timegrouperL   sP   úýÿúþ


 â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Ú6MErD   r   )r   rE   r   rF   rG   r&   r   Ú
group_keysÚ
isinstancer(   r   ÚgroupsÚdictr'   )rR   r\   r   Úgrg   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   r^   r   r   Fr`   zCarl Joe Mark)r   r   r   é   r0   r1   z!The default value of numeric_onlyÚYErD   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$   rw   ©r%   r7   ©Úcolumnsr;   )r   rE   r   rG   rF   r&   r   rN   rO   rP   Úreset_indexÚpytestÚraisesÚKeyErrorÚ
ValueErrorÚcopyr;   r   ÚMonthEndr   Úshiftr%   )rR   rS   rX   r   rV   ÚmsgÚresultr   r   r    Ú test_timegrouper_with_reg_groups£   s<  øüÿðýýÿ

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

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

öÿýÿýÿ˜z,TestGroupBy.test_timegrouper_with_reg_groupsr%   )ÚDÚMErl   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   r@   é'   r   r   r‘   é-   é"   r   r/   )ÚdateÚuser_idÚ
whole_costÚcost1r—   r˜   r™   r   )Ú	min_countrA   rD   )r   r   Úto_datetimerG   r&   rM   rN   ÚdropnaÚreorder_levelsrQ   rH   r7   r   rO   Úassert_series_equal)rR   r%   r   rV   rW   rY   r   r   r    Ú%test_timegrouper_with_reg_groups_freqX  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   rp   )ú
2013-09-30ú
2013-10-31ú
2013-12-31r‰   r   rs   ))r?   r¡   )ÚCarlr¢   )r?   r£   r1   rD   )r   rE   r   rF   rJ   r&   r   Úzipr	   Ú	get_grouprO   rP   rG   )rR   rS   rT   Úexpected_listÚdt_listr   ÚgroupedÚtrV   Ú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²   )rN   )r   rN   ©Úxr   r   r    Úsumfunc_seriesÝ  s   zMTestGroupBy.test_timegrouper_apply_return_type_series.<locals>.sumfunc_seriesú7DataFrameGroupBy.apply operated on the grouping columnsrt   ©r$   r‰   rs   Trb   )r   r‚   r   rœ   rO   Úassert_produces_warningÚDeprecationWarningr&   r   ÚapplyrP   r}   )rR   r   Údf_dtrµ   r…   rV   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²   rN   r³   r   r   r    Úsumfunc_valueò  s   
zKTestGroupBy.test_timegrouper_apply_return_type_value.<locals>.sumfunc_valuer¶   rt   r·   r‰   rs   Trb   )r   r‚   r   rœ   rO   r¸   r¹   r&   r   rº   rŸ   r}   )rR   r   r»   r¾   r…   rV   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   rK   Úaranger&   rg   rf   ÚnextÚiterÚkeysr   )rR   rÂ   Úindr   r©   rg   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>   rn   r]   r   )r   r   r   rp   r   ©ÚAÚBr:   ©rw   )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%   rC   ÚABr{   )r
   r   r&   rg   rO   Úassert_dict_equalr¦   Úlocr   rC   ÚlistrP   )
rR   r;   r   r†   ÚdatesrV   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>   rA   rB   r   r   r   )Úlabelr   Úvalue1Úvalue2r   c                 S   s   t | dd�S )Nú
US/Pacific©Útz)r	   )Údr   r   r    rÈ   2  ó    zBTestGroupBy.test_groupby_groups_datetimeindex_tz.<locals>.<lambda>©rß   rß   rà   rà   rá   rá   rç   )ré   r7   rã   r­   rä   rÓ   ©r   r   r   rp   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   rn   ©r   rp   r>   r   rÒ   )r   rK   rÉ   rº   r   r   r   Úfrom_arraysr&   rN   rO   rP   ©	rR   rÚ   r   Úexp_idx1Úexp_idx2Úexp_idxrV   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   rK   Ú
datetime64r&   Úfirstr	   )rR   r   r†   r   r   r    Ú&test_frame_datetime64_handling_groupby_  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)re   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   rC   )rÿ   r   r  )r   r   r   ©r;   r7   )r   Úranger&   r—   rº   r   r	   rI   rO   rŸ   r¦   r   rœ   r«   r  )rR   r   r†   rV   ré   Ú
res_valuesÚ
exp_valuesr   r   r    Útest_groupby_multi_timezoneh  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 )ÚhrD   )r   ÚPeriod)rÔ   rê   r   r   r    Ú
<listcomp>¦  s    z;TestGroupBy.test_groupby_groups_periods.<locals>.<listcomp>r>   rA   rB   r   r   r   )rä   Úperiodrå   ræ   rì   r  r  rz   rã   r­   rä   rÓ   rí   rî   rï   rå   ræ   rð   rD   rñ   r:   rò   ró   rô   r   rÒ   )r   rK   rÉ   r   ÚPeriodIndexr   r   rõ   r&   rN   rO   rP   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   rH   Ú
issubclassrC   ÚtyperK   rü   r&   rý   )rR   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	   rK   rÉ   r&   rº   rH   r  rO   rŸ   )rR   r   rV   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   rO   rŸ   ©rR   r   r†   rV   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   rK   ÚrandomÚdefault_rngÚintegersr
   r&   r  rO   rŸ   )rR   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)rR   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   rO   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   rK   Únanr   r   rœ   r«   Únotnar&   rO   rP   r  r  rý   Úlast)rR   Ú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_freqrO   rŸ   )rR   ÚtestÚgrouperr†   rV   r   r   r    Ú%test_nunique_with_timegrouper_and_nat9  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ÚbeijingrE  )z2017-08-09 13:32:23z2017-08-11 23:23:15z2017-08-11 22:23:15zdatetime64[ns]rB   r)  )Úlocationr"  r²   r"  rˆ   rD   )r   r   rG   r   r&   r/  rO   rP   )rR   Ú
data_framerC  r©   r†   rV   r   r   r    Ú!test_scalar_call_versus_list_callL  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Æ   rN   r   r7   rO   rŸ   )rR   rÂ   r;   Úperiod_seriesr†   rV   r   r   r    Útest_grouper_period_index`  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 )Nrv   )r'   r³   r   r   r    rÈ   v  rë   zRTestGroupBy.test_groupby_apply_timegrouper_with_nat_dict_returns.<locals>.<lambda>r   ú
2013-09-01ú
2013-10-01r"   ©r%   r7   r9   rv   )r   r   r   r   r   r   r   r  )rº   ÚobjÚ_valuesr9   r
   r   rõ   r'   r   rO   rŸ   )	rR   r-   r,   Úresr   r9   ÚdtiÚmirV   r   r   r    Ú4test_groupby_apply_timegrouper_with_nat_dict_returnsn  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'   rJ   rK   r4  r³   r   r   r    rÈ   †  s    zTTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returns.<locals>.<lambda>r   rO  rP  r"   rQ  r   r   r  )rº   rR  rS  r9   r
   r   rK   r4  rA  rO   rŸ   )rR   r-   r,   rT  r   r9   rU  rV   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¶   rt   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£   )rC   r7   )é$   r>   r>   r   r   )r   r   r   r   r   r   rÓ   rð   )r   r&   ÚngroupsÚ_selected_objÚ	_get_axisÚaxisÚnlevelsrO   r¸   r¹   rº   r   r	   rC   r   rP   )	rR   r!   r   r+   r,   r…   rT  rU  rV   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½   ©rK   Únanmean©Úvaluesr;   r   r   r    rÈ   ¹  ó   
 zITestGroupBy.test_groupby_agg_numba_timegrouper_with_nat.<locals>.<lambda>)ÚengineÚmeanc                 S   rb  r½   rc  re  r   r   r    rÈ   À  rg  )r~   ÚimportorskipÚ	aggregaterO   rŸ   rP   )rR   r-   r,   r†   rV   Ú	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Úparametrizerj   r‡   r    r®   r¼   r¿   rÎ   rÝ   rû   rþ   r
  r  r  r  r  r(  r.  r0  r;  rD  rI  rN  rW  rX  r`  Ú
single_cpurn  r   r   r   r    r.   K   s@    6
  6
:B?	2=		
"r.   )Ú__doc__r   r   ÚnumpyrK   r~   r+  Úpandasr   r   r   r   r   r   r	   r
   r   Úpandas._testingÚ_testingrO   Úpandas.core.groupby.grouperr   Úpandas.core.groupby.opsr   Úfixturer!   r-   r.   r   r   r   r    Ú<module>   s    (


