a
    é´«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   úd/var/www/html/laksyashrimp/venv/lib/python3.9/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s6J ‚|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Ú_grouperZresult_indexZ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 |r´dndddœ|d�}| dt	i¡}|rä| 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   Z20130901Z20131205r"   Úleft)r%   ÚnameZ	inclusiveÚunitÚ )r/   r   ©Úindexr/   ÚstrZCarlCarlCarl)r   r   ZCarlCarl)é   r   ÚJoe)r   r   )é   r9   r   Úint64©Údtype)r   r9   r   ©r%   )r   Úsplitr   Úsort_valuesÚ	set_indexr
   r7   r4   ÚastypeÚobjectÚilocÚnpÚarrayÚresampleÚsumÚtmÚassert_frame_equalÚ
sort_indexr&   r   )ÚselfZusing_infer_stringÚdf_originalÚdf_reorderedr   Zexp_dtiÚexpectedÚresult1Ú	df_sortedÚresult2Zresult3r   r   r    Útest_groupby_with_timegrouperL   sR    úýÿúþ


 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œƒ}|r„|jddd�}|jddd�}| tdd�¡}|js¬J ‚t|j	t
ƒs¼J ‚|j}t|tƒsÐJ ‚t|ƒdksàJ ‚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   ©ZBranchr/   r   r   r   F©r1   Z	ascendingr   ©ZdropZ6MEr?   r   )r   r@   r   rA   rB   r&   r   Ú
group_keysÚ
isinstancer(   r   ÚgroupsÚdictr'   )rM   rU   r   Úgr\   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 	||¡ qª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ƒ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Ð0    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 �sx0    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 �sZ0    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 	||¡ �qTd S )1NzA A A A A A A Bz$Carl Mark Carl Carl Joe Joe Joe Carl)r   r   r   r   rV   r   r   r   r   r   r   r   r   r   r   r   r-   r   rW   r   r   FrX   zCarl Joe Mark)r   r   r   é   r.   r/   z!The default value of numeric_onlyÚYEr?   T)Znumeric_onlyzCarl Mark Carl Joe)r   r   r   r   é   Z6MSzCarl Joe Mark Carl Joe)r9   rV   r   é   r   Z1DZ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$   rh   ©r%   r3   ©Úcolumnsr7   )r   r@   r   rB   rA   r&   r   rI   rJ   rK   Úreset_indexÚpytestZraisesÚKeyErrorÚ
ValueErrorÚcopyr7   r   ZMonthEndr   Úshiftr%   )rM   rN   rR   r   rP   ÚmsgÚresultr   r   r    Ú test_timegrouper_with_reg_groups¥   s2   øüÿðýýÿ
öüýÿõøüÿðûýÿôýýÿ
öÿ:
ÿÿ:ÿýýÿ
öÿ(ÿýÿz,TestGroupBy.test_timegrouper_with_reg_groupsr%   )ÚDÚMEra   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)Ú20121002Z20121007Ú20130130Ú20130202Ú20130305ry   Z20121207rz   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_costZcost1r„   r…   r†   r   )Z	min_countr<   r?   )r   r   Úto_datetimerB   r&   rH   rI   ZdropnaZreorder_levelsrL   rC   r3   r   rJ   Úassert_series_equal)rM   r%   r   rP   rQ   rS   r   r   r    Ú%test_timegrouper_with_reg_groups_freqZ  s6    ÿàÿ#Ý&ÿþ
üúÿ	ÿ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 ]H}| tddd�¡}t||ƒD ]&\}}t|ƒ}	| 	|	¡}
t
 |
|¡ qÎq®|jdg |jdg |jdg g}g d¢}||fD ]X}| dtddd�g¡}t||ƒD ]0\\}}}t|ƒ}	| 	||	f¡}
t
 |
|¡ �qN�q*| d¡}|jdd�}|jg d¢ |jddg |jdg g}||fD ]J}| 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   r.   r   r0   )r   r   r   rc   )ú
2013-09-30ú
2013-10-31ú
2013-12-31rx   r   rd   ))r:   rŠ   )ZCarlr‹   )r:   rŒ   r/   r?   )r   r@   r   rA   rE   r&   r   Úzipr	   Ú	get_grouprJ   rK   rB   )rM   rN   rO   Úexpected_listZdt_listr   ÚgroupedÚtrP   Údtru   Zg_listÚbr   r   r    Útest_timegrouper_get_group•  s^    úýÿ
ý



ý

ý
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 sv0    Y  d	}tjt|d
��( | tddd�¡ 	|¡}W d   ƒ n1 sÀ0    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˜   )rI   )r   rI   ©Úxr   r   r    Úsumfunc_seriesß  s    zMTestGroupBy.test_timegrouper_apply_return_type_series.<locals>.sumfunc_seriesú7DataFrameGroupBy.apply operated on the grouping columnsre   ©r$   rx   rd   TrY   )r   rr   r   r‡   rJ   Úassert_produces_warningÚFutureWarningr&   r   ÚapplyrK   rn   )rM   r   Údf_dtr›   rt   rP   ru   r   r   r    Ú)test_timegrouper_apply_return_type_series×  s    46ÿ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 sv0    Y  tjt|d
��( | tddd�¡ 	|¡}W d   ƒ n1 s¼0    Y  t 
|jdd�|jdd�¡ d S )Nr•   r–   r   r   r—   r„   c                 S   s
   | j  ¡ S ©N)r˜   rI   r™   r   r   r    Úsumfunc_valueô  s    zKTestGroupBy.test_timegrouper_apply_return_type_value.<locals>.sumfunc_valuerœ   re   r�   rx   rd   TrY   )r   rr   r   r‡   rJ   rž   rŸ   r&   r   r    rˆ   rn   )rM   r   r¡   r¤   rt   rP   ru   r   r   r    Ú(test_timegrouper_apply_return_type_valueì  s    46ÿ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/1Z5min)Ústartr%   Úperiods)ÚhighÚlowr6   c                 S   s   t | j| j| jƒS r£   )r   ÚyearÚmonthÚdayr™   r   r   r    Ú<lambda>  ó    z?TestGroupBy.test_groupby_groups_datetimeindex.<locals>.<lambda>)r
   r   rF   Úaranger&   r\   r[   ÚnextÚiterÚkeysr   )rM   r§   Úindr   r�   r\   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 ||¡ qhd S )Nz
2015/01/01r   r„   )r§   r3   )r   r9   rb   rV   r   )r   r   r   rc   r   ©ÚAÚBr6   ©rh   )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„   ©r3   )r	   r   )Ú.0r„   r   r   r    Ú
<dictcomp>  s   zBTestGroupBy.test_groupby_groups_datetimeindex2.<locals>.<dictcomp>r¶   r·   rw   )r3   r%   r>   ZABrl   )r
   r   r&   r\   rJ   Zassert_dict_equalrŽ   Úlocr   r>   ÚlistrK   )
rM   r7   r   ru   ÚdatesrP   r�   r„   ÚdataZ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“   r9   r<   r=   r   r   r   )Úlabelr   Úvalue1Úvalue2r   c                 S   s   t | dd�S )Nú
US/Pacific©Útz)r	   )Údr   r   r    r­   4  r®   zBTestGroupBy.test_groupby_groups_datetimeindex_tz.<locals>.<lambda>©rÂ   rÂ   rÃ   rÃ   rÄ   rÄ   rÊ   )rÌ   r3   rÆ   r“   rÇ   r¹   ©r   r   r   rc   r   r   ©r   r   r   r   r   r   ©rÈ   rÉ   rÈ   rÉ   ©r7   rm   z
Asia/TokyorË   ©r   r   r   r   r   r   r6   ©rÂ   rÃ   rÄ   ©r   r   rb   ©r   rc   r9   r   r¸   )r   rF   r¯   r    r   r   r   Úfrom_arraysr&   rI   rJ   rK   ©	rM   r¾   r   Zexp_idx1Zexp_idx2Zexp_idxrP   ru   Z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sNJ ‚d S )Nr   z
2012-07-03z
2012-07-04rÆ   r„   )rm   )r   rF   Ú
datetime64r&   Úfirstr	   )rM   r   ru   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)rZ   c                 S   s   t  | ¡j | j¡S r£   )r   r‡   r’   Útz_localizer3   r™   r   r   r    r­   �  r®   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„   )r3   r>   )rÝ   rÞ   rß   )r   r   r   ©r7   r3   )r   Úranger&   r„   r    r   r	   rD   rJ   rˆ   rŽ   r   r‡   r’   rã   )rM   r   ru   rP   rÌ   Z
res_valuesZ
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 )Úhr?   )r   ZPeriod)rº   rÍ   r   r   r    Ú
<listcomp>¨  r®   z;TestGroupBy.test_groupby_groups_periods.<locals>.<listcomp>r9   r<   r=   r   r   r   )rÇ   ÚperiodrÈ   rÉ   rÎ   rç   ré   rk   rÆ   r“   rÇ   r¹   rÏ   rÐ   rÑ   rÈ   rÉ   rÒ   r?   rÓ   r6   rÔ   rÕ   rÖ   r   r¸   )r   rF   r¯   r   ZPeriodIndexr   r   r×   r&   rI   rJ   rK   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ƒs6J ‚|jdd� ¡ }|d j}t|jtjƒsbJ ‚|d jdd� ¡ }|j}t|jtjƒsŽJ ‚d S )N)r   ì     ö|>cþ )r   rë   r   zM8[ns]r   r¸   )	r   rC   Ú
issubclassr>   ÚtyperF   rÚ   r&   rÛ   )rM   r   ru   Z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 )NZ20130101r   rµ   r¶   c                 S   s   |   ¡ S r£   )Úmaxr™   r   r   r    r­   ì  r®   z9TestGroupBy.test_groupby_max_datetime64.<locals>.<lambda>zM8[s])
r   r	   rF   r¯   r&   r    rC   rï   rJ   rˆ   )rM   r   rP   ru   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&   Z	transformr   rJ   rˆ   ©rM   r   ru   rP   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   rF   ÚrandomZdefault_rngZintegersr
   r&   rï   rJ   rˆ   )rM   r   Zdf1Z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s2J ‚t dg d¢iƒ}t tj¡|d< |d d jtjksjJ ‚d S )Nr   )rÆ   r“   r“   r   rÆ   ©r   r   r   )r   r   ÚnowÚpytzÚutcÚtzinfo)rM   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ý   r9   rñ   )r§   r%   )rÆ   r¾   rÆ   )r   r   r   r¹   r¾   rä   )	r   r
   r&   r¾   Úcountr   r   rJ   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   rF   Únanr   r   r‡   r’   Znotnar&   rJ   rK   rï   rñ   rÛ   Úlast)rM   Zdf_testZdf_refZgrouped_testZ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&   Znuniquerù   Znotnullr7   Ú
_with_freqrJ   rˆ   )rM   ÚtestÚgrouperru   rP   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)ÚshanghaiZbeijingr  )z2017-08-09 13:32:23z2017-08-11 23:23:15z2017-08-11 22:23:15zdatetime64[ns]r=   rü   )Úlocationrù   r˜   rù   rw   r?   )r   r   rB   r   r&   r  rJ   rK   )rM   Z
data_framer  r�   ru   rP   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ÚMZMonth)r¦   r§   r%   r3   r6   r   r¹   )r   Zperiod_ranger   rå   r&   r7   r«   rI   r   r3   rJ   rˆ   )rM   r§   r7   Zperiod_seriesru   rP   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 )Nrg   )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%   r3   r4   rg   )r   r   r   r   r   r   r   rä   )r    ÚobjÚ_valuesr4   r
   r   r×   r'   r   rJ   rˆ   )	rM   r+   r*   Úresr   r4   ÚdtiÚmirP   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'   rE   rF   r  r™   r   r   r    r­   ˆ  r®   zTTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returns.<locals>.<lambda>r   r  r  r"   r  r   r   rä   )r    r  r  r4   r
   r   rF   r  r  rJ   rˆ   )rM   r+   r*   r  r   r4   r  rP   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 sv0    Y  ttd	ƒg|d jdd
�}tg d¢g|tg d¢dd�d�}t ||¡ d S )Nr   Z100YEr#   r   rœ   re   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Œ   )r>   r3   )é$   r9   r9   r   r   )r   r   r   r   r   r   r¹   rÒ   )r   r&   ZngroupsZ_selected_objZ	_get_axisZaxisZnlevelsrJ   rž   rŸ   r    r   r	   r>   r   rK   )	rM   r!   r   r)   r*   rt   r  r  rP   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 )NZnumbar   c                 S   s
   t  | ¡S r£   ©rF   Znanmean©Úvaluesr7   r   r   r    r­   »  r®   zITestGroupBy.test_groupby_agg_numba_timegrouper_with_nat.<locals>.<lambda>)ZengineÚmeanc                 S   s
   t  | ¡S r£   r"  r#  r   r   r    r­   Â  r®   )ro   ZimportorskipZ	aggregaterJ   rˆ   rK   )rM   r+   r*   ru   rP   Z	result_dfZexpected_dfr   r   r    Ú+test_groupby_agg_numba_timegrouper_with_nat±  s    
ÿ
ÿz7TestGroupBy.test_groupby_agg_numba_timegrouper_with_natN)"Ú__name__Ú
__module__Ú__qualname__rT   ro   ÚmarkZparametrizer_   rv   r‰   r”   r¢   r¥   r´   rÀ   rÙ   rÜ   ræ   rê   rî   rð   ró   rû   r  r  r	  r  r  r  r  r  r!  Z
single_cpur&  r   r   r   r    r,   K   s>   8
  6
:B?	2=		
"r,   )Ú__doc__r   r   ÚnumpyrF   ro   rþ   Zpandasr   r   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingrJ   Zpandas.core.groupby.grouperr   Zpandas.core.groupby.opsr   Zfixturer!   r+   r,   r   r   r   r    Ú<module>   s   (


