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   úKE:\soccer\ml_env\Lib\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   Z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   (


