U
    ¾mœd$‚  ã                   @   sÌ   d Z ddlmZmZ ddlmZ ddlZddlZddlZddl	m
  m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Ú	timedelta)ÚStringION)Ú	DataFrameÚDatetimeIndexÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚ
date_rangeÚoffsets)ÚGrouper)Ú
BinGrouperc                  C   sh   t ddddddg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 re-use in
    test_groupby_apply_timegrouper_with_nat_apply_squeeze
    é   é   é   é   é	   éÝ  é   r   é
   é   é   é   )ÚQuantityÚDate)r   r
   ÚpdÚNaT)Údf© r   ú^/home/sam/Atlas/atlas_env/lib/python3.8/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s6t‚|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ÚAssertionError)r!   r   ÚtdgÚgbr   r   r    Ú!groupby_with_truncated_bingrouper7   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
ddddg¡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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Ze  d;¡d<d=„ ƒZ!d>S )?ÚTestGroupByc           	      C   sp  t d ¡ ddddddg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œtdddddd�d�}| dti¡}d|jd< d|jd< d|jd < t	j
d!d"dgd#d$�|jd	d"dg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   )r0   r   Z20130901Z20131205r"   Úleft)r%   ÚnameZ	inclusive©Úindexr0   ZCarlCarlCarl)r   r   ZCarlCarl)é   r   ÚJoe)r   r   é   r7   Úint64©Údtype©r%   )r   Úsplitr   Úsort_valuesÚ	set_indexr   ÚastypeÚobjectÚilocÚnpÚarrayÚresampleÚsumÚtmÚassert_frame_equalÚ
sort_indexr&   r   )	ÚselfÚdf_originalÚdf_reorderedr   ÚexpectedÚresult1Ú	df_sortedÚresult2Zresult3r   r   r    Útest_groupby_with_timegrouperO   sJ    úýÿ    ÿþ


$z)TestGroupBy.test_groupby_with_timegrouperÚshould_sortTFc                 C   sì   t d ¡ d ¡ ddddddg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´t‚t	|j
tƒsÄt‚|j}t	|tƒsØt‚t|ƒdksèt‚d S )NzA A A A A BzCarl Mark Carl Joe Joe Carlr   r   r   é   r   r   r   r   r   r   r   r.   r   ©ZBranchr0   r   r   r   F©r2   Z	ascendingr   ©ZdropZ6Mr=   )r   r>   r   r?   r@   r&   r   Ú
group_keysr)   Ú
isinstancer(   r   ÚgroupsÚdictr'   )rK   rS   r   ÚgrZ   r   r   r    Ú%test_groupby_with_timegrouper_methods   s,    úüÿ
z1TestGroupBy.test_groupby_with_timegrouper_methodsc                 C   s@  t d ¡ d ¡ ddddddddg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 ¡ dddg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 ¡ ddddg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 ¡ ddddddddg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" ¡ d#ddd$dg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 ¡ dddg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 5 Q R X | 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 5 Q R X | ¡ }|jt d¡ |d< | td&dd'�dg¡jdd�}t d ¡ dddg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d0�dg¡ ¡  W 5 Q R X t dggdgttdddd
d
ƒgt ¡ dd1�d2�}| td&d�¡jdd�}t 	||¡ | td&d�g¡jdd�}t 	||¡ |j d¡|_|jjt ¡ k�sêt‚| td&dd'�¡jdd�}t 	||¡ | td&dd'�g¡jdd�}t 	||¡ �qtd S )3NzA A A A A A A Bz$Carl Mark Carl Carl Joe Joe Joe Carlr   r   r   rT   r   r   r   r   r   r   r   r.   r   rU   r   r   FrV   zCarl Joe Markr   é   r/   r0   z!The default value of numeric_onlyÚAr=   T)Znumeric_onlyzCarl Mark Carl Joeé   Z6MSzCarl Joe Mark Carl Joer7   é   Z1DZ1M©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$   re   ©r%   r4   ©Úcolumnsr6   )r   r>   r   r@   r?   r&   r   rG   rH   rI   Úreset_indexÚpytestZraisesÚKeyErrorÚ
ValueErrorÚcopyr6   r   ZMonthEndr   Úshiftr%   r)   )rK   rL   rP   r   rN   ÚmsgÚresultr   r   r    Ú test_timegrouper_with_reg_groups    s2   øüÿðýýÿ
ö
üýÿõøüÿðûýÿôýýÿ
öÿ$
ÿÿ$ÿýýÿ
öÿ  ÿýz,TestGroupBy.test_timegrouper_with_reg_groupsr%   ÚDÚMr_   zQ-APRc                 C   s  t t ddddddddddddg¡ddddddddd	d	d	d	gd
dddddddddddgddddddddddddg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 )$NZ20121002Z20121007Z20130130Z20130202Z20130305Z20121207r   r   r   iþ  il  i  i  éÉ   io  éZ   i8  ig  i-  i!  r.   é   r   r9   é'   r   é-   é"   )ÚdateÚuser_idÚ
whole_costZcost1r|   r}   r~   )Z	min_countr:   r=   )r   r   Úto_datetimer@   r&   rF   rG   ZdropnaZreorder_levelsrJ   rA   r4   r   rH   Úassert_series_equal)rK   r%   r   rN   rO   rQ   r   r   r    Ú%test_timegrouper_with_reg_groups_freqS  sf    ôÿôàÿ#Ý&ÿþ
üúÿ	ÿz1TestGroupBy.test_timegrouper_with_reg_groups_freqc                 C   s(  t d ¡ ddddddg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d	ddg |jddg |jdg g}dddg}||fD ]H}| tddd�¡}t||ƒD ]&\}}t|ƒ}	| 	|	¡}
t
 |
|¡ qÚqº|jdg |jdg |jdg g}dddg}||fD ]X}| dtddd�g¡}t||ƒD ]0\\}}}t|ƒ}	| 	||	f¡}
t
 |
|¡ �q\�q8| d¡}|jdd�}|jd	ddg |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   r1   ra   ú
2013-09-30ú
2013-10-31ú
2013-12-31ru   r   rb   )r8   r‚   )ZCarlrƒ   )r8   r„   r0   r=   )r   r>   r   r?   rC   r&   r   Úzipr
   Ú	get_grouprH   rI   r@   )rK   rL   rM   Úexpected_listZdt_listr   ÚgroupedÚtrN   Údtrr   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„ }| tdd	�¡ |¡}| td
dd�¡ |¡}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�   )rG   )r	   rG   ©Úxr   r   r    Úsumfunc_seriesØ  s    zMTestGroupBy.test_timegrouper_apply_return_type_series.<locals>.sumfunc_series©r$   ru   rb   TrW   )
r   ro   r   r   r&   r   ÚapplyrH   rI   rk   )rK   r   Údf_dtr“   rN   rr   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„ }| tdd	�¡ |¡}| td
dd�¡ |¡}t |j	dd�|j	dd�¡ d S )Nr�   rŽ   r   r   r�   r|   c                 S   s
   | j  ¡ S ©N)r�   rG   r‘   r   r   r    Úsumfunc_valueé  s    zKTestGroupBy.test_timegrouper_apply_return_type_value.<locals>.sumfunc_valuer”   ru   rb   TrW   )
r   ro   r   r   r&   r   r•   rH   r€   rk   )rK   r   r–   r™   rN   rr   r   r   r    Ú(test_timegrouper_apply_return_type_valueá  s    
 
ÿz4TestGroupBy.test_timegrouper_apply_return_type_valuec                 C   s8  d}t dd|d�}tt |¡t |¡dœ|d�}| dd„ ¡}|j}tt| ¡ ƒd	 t	ƒs^t
‚t d
ddd�}tdddddgdddddgdœ|d�}|jdd�j}dddddg}dd„ |D ƒ}	t ||	¡ |jdd�}|D ]Z}
| |
¡}|j|
df |j|
d f gg}t|
gdd!d"�}t|td#ƒ|d$�}	t ||	¡ qØd S )%Niè  z2012/1/1Z5min)Ústartr%   Úperiods)ÚhighÚlowr5   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   z
2015/01/01r   r|   )rœ   r4   r7   r`   rT   r   r   r   r   ra   ©r_   ÚB©re   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|   ©r4   )r
   r   )Ú.0r|   r   r   r    Ú
<dictcomp>  s     zATestGroupBy.test_groupby_groups_datetimeindex.<locals>.<dictcomp>r_   r¥   rt   )r4   r%   ZABri   )r   r   rD   Úaranger&   rZ   rY   ÚlistÚkeysr   r)   rH   Zassert_dict_equalr†   Úlocr   rI   )rK   rœ   Úindr   rˆ   rZ   r6   rr   ÚdatesrN   r|   ÚdataZexpected_indexr   r   r    Ú!test_groupby_groups_datetimeindexò  s0     ÿ&ÿ
z-TestGroupBy.test_groupby_groups_datetimeindexc           	      C   sj  ddddddg}t ddddddg|tjddd�d	d
gd dœƒ}|d  dd„ ¡|d< tddddddgddd�}tddgd dd�}t ||g¡}t ddd	dd
dgd	d
d
d	d	d
gdœ|ddgd�}| ddg¡ 	¡ }t
 ||¡ t|dd�}t tjddd�d	d
dd	d
dgdœ|d�}tdddgdd�}t dddgd
ddg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:00Úar‹   r7   r:   r;   r   r   r   )Úlabelr   Úvalue1Úvalue2r   c                 S   s   t | dd�S )Nú
US/Pacific©Útz)r
   )Údr   r   r    r¢   #  r£   zBTestGroupBy.test_groupby_groups_datetimeindex_tz.<locals>.<lambda>r¹   )r»   r4   r¶   r§   r   ra   r   ©r·   r¸   r·   r¸   ©r6   rj   z
Asia/Tokyorº   r5   r`   r¦   )r   rD   rª   r•   r   r   r   Úfrom_arraysr&   rG   rH   rI   ©	rK   r¯   r   Zexp_idx1Zexp_idx2Zexp_idxrN   rr   Zdidxr   r   r    Ú$test_groupby_groups_datetimeindex_tz  sf    ú
üÿúö ýþþý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sNt‚d S )Nr   z
2012-07-03z
2012-07-04rµ   r|   )rj   )r   rD   Ú
datetime64r&   Úfirstr
   r)   )rK   r   rr   r   r   r    Ú&test_frame_datetime64_handling_groupbyP  s    þz2TestGroupBy.test_frame_datetime64_handling_groupbyc              	   C   sè   d}t jt|ƒd dddg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dddgdddgdd�}t  |¡j |¡}t	 
||¡ d S )NzÂ0,2000-01-28 16:47:00,America/Chicago
1,2000-01-29 16:48:00,America/Chicago
2,2000-01-30 16:49:00,America/Los_Angeles
3,2000-01-31 16:50:00,America/Chicago
4,2000-01-01 16:50:00,America/New_Yorkr�   r|   r»   )ÚheaderÚnamesF)rX   c                 S   s   t  | ¡j | j¡S r˜   )r   r   rŠ   Útz_localizer4   r‘   r   r   r    r¢   d  r£   z9TestGroupBy.test_groupby_multi_timezone.<locals>.<lambda>z2000-01-28 16:47:00-0600zAmerica/Chicagorº   z2000-01-29 16:48:00-0600z2000-01-30 16:49:00-0800zAmerica/Los_Angelesz2000-01-31 16:50:00-0600z2000-01-01 16:50:00-0500zAmerica/New_York)r4   r<   z2000-01-28 16:47:00z2000-01-29 16:48:00z2000-01-31 16:50:00r   r   r   ©r6   r4   )r   Zread_csvr   r&   r|   r•   r	   r
   rB   rH   r€   r†   r   rŠ   rÇ   )rK   r°   r   rr   rN   r»   Z
res_valuesZ
exp_valuesr   r   r    Útest_groupby_multi_timezoneY  s4    ÿ




û÷ýz'TestGroupBy.test_groupby_multi_timezonec           	      C   sd  ddddddg}t ddddddgdd„ |D ƒtjdd	d
�ddgd dœƒ}tjddddddgddd�}tddgd dd�}t ||g¡}t ddddddgddddddgdœ|ddgd�}| ddg¡ 	¡ }t
 ||¡ tj|dd�}t tjdd	d
�ddddddgdœ|d�}tjdddgdd�}t dddgdddgdœ|ddgd�}|jdd� 	¡ }t
 ||¡ d S )Nr²   r³   r´   rµ   r‹   c                 S   s   g | ]}t j|d d�‘qS )ÚHr=   )r   ZPeriod)r¨   r¼   r   r   r    Ú
<listcomp>‹  s     z;TestGroupBy.test_groupby_groups_periods.<locals>.<listcomp>r7   r:   r;   r   r   r   )r¶   Úperiodr·   r¸   rÊ   rÌ   rh   r¶   r§   r   ra   r   r½   r·   r¸   r¾   r=   r5   r`   r¦   )r   rD   rª   r   ZPeriodIndexr   r   r¿   r&   rG   rH   rI   rÀ   r   r   r    Útest_groupby_groups_periods  sd    ú
üÿ	úö ýþþýz'TestGroupBy.test_groupby_groups_periodsc                 C   s’   t ddgƒ}|d  d¡|d< t|d jjtjƒs6t‚|jdd� 	¡ }|d j}t|jtjƒsbt‚|d jdd� 	¡ }|j}t|jtjƒsŽt‚d S )N)r   ì     ö|>cþ )r   rÎ   r   zM8[ns]r   r¦   )
r   ÚviewÚ
issubclassr<   ÚtyperD   rÂ   r)   r&   rÃ   )rK   r   rr   Zgot_dtr   r   r    Útest_groupby_first_datetime64¼  s    
z)TestGroupBy.test_groupby_first_datetime64c                 C   sR   t tdƒt 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>)	r   r
   rD   rª   r&   r•   rÓ   rH   r€   )rK   r   rN   rr   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  t¡}ttdƒgd dd�}t ||¡ d S )Nr   z	2000-01-1r¤   r_   r¥   r§   )	r   Úranger
   r&   Z	transformÚminr	   rH   r€   ©rK   r   rr   rN   r   r   r    Útest_groupby_datetime64_32_bitÒ  s    z*TestGroupBy.test_groupby_datetime64_32_bitc                 C   sh   t j d¡ tt jjdddd�tddddd	�d
œƒ}| d¡ ¡ d }| d¡d  ¡ }t 	||¡ d S )Né*   r   r   é<   )Úsizez01/01/2000 00:00ÚsÚUTC)rœ   r%   r»   )ÚfactorÚtimerÞ   rß   )
rD   ÚrandomÚseedr   Úrandintr   r&   rÓ   rH   r€   )rK   r   Zdf1Zdf2r   r   r    Ú$test_groupby_with_timezone_selectionÛ  s    þÿz0TestGroupBy.test_groupby_with_timezone_selectionc                 C   sp   t dgt tj¡gdœƒ}|d d jtjks2t‚t ddddgiƒ}t tj¡|d< |d d jtjkslt‚d S )Nr   )rµ   r‹   r‹   r   rµ   r   r   )r   r   ÚnowÚpytzÚutcÚtzinfor)   )rK   r   r   r   r    Útest_timezone_infoé  s
    zTestGroupBy.test_timezone_infoc                 C   sd   t dddgd tdddd�dœƒ}| d	¡j ¡ }tdddgtdddgd	d
�dd�}t ||¡ d S )Nr   r   r   rä   r7   ÚT)rœ   r%   )rµ   r¯   rµ   r§   r¯   rÈ   )	r   r   r&   r¯   Úcountr	   r   rH   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   rD   Únanr   r   r   rŠ   Znotnar&   rH   rI   rÓ   rÖ   rÃ   Úlast)rK   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   s|   t tdƒtjtdƒgdddg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ß   Úhr#   r°   )r   r
   r   r   r   r&   Znuniquerß   Znotnullr6   Ú
_with_freqrH   r€   )rK   Útestr(   rr   rN   r   r   r    Ú%test_nunique_with_timegrouper_and_nat  s    ýúÿz1TestGroupBy.test_nunique_with_timegrouper_and_natc                 C   st   dddgt dddgdd�dd	d
gdœ}t|ƒ d¡}tdd�}| |¡}| ¡ }| |g¡}| ¡ }t ||¡ d S )NZshanghaiZbeijingz2017-08-09 13:32:23z2017-08-11 23:23:15z2017-08-11 22:23:15zdatetime64[ns]r;   r   r   r   )Úlocationrß   r�   rß   rt   r=   )r	   r   r@   r   r&   rê   rH   rI   )rK   Z
data_framer(   rˆ   rr   rN   r   r   r    Ú!test_scalar_call_versus_list_call0  s    þú

z-TestGroupBy.test_scalar_call_versus_list_callc                 C   sn   d}t jd|ddd�}tt|ƒ|d�}| |jj¡ ¡ }ttd|ƒttd|d ƒ|j	d	�d�}t
 ||¡ d S )
Nr   z2018-01ru   ZMonth)r›   rœ   r%   r4   r5   r   r   r§   )r   Zperiod_ranger	   rÕ   r&   r6   r    rG   r   r4   rH   r€   )rK   rœ   r6   Zperiod_seriesrr   rN   r   r   r    Útest_grouper_period_indexD  s       ÿ ÿz%TestGroupBy.test_grouper_period_indexc                 C   sj   |}|d   dd„ ¡}tddddd�}t |d	gt|ƒ g¡}td
ddddddg|dd�}t ||¡ d S )Nr   c                 S   s   dt | ƒiS )Nrd   )r'   r‘   r   r   r    r¢   Z  r£   zRTestGroupBy.test_groupby_apply_timegrouper_with_nat_dict_returns.<locals>.<lambda>ú
2013-09-01ú
2013-10-01r"   r   rh   rd   r   r   r   rÈ   )r•   r   r   r¿   r'   r	   rH   r€   )rK   r,   r+   ÚresÚdtiÚmirN   r   r   r    Ú4test_groupby_apply_timegrouper_with_nat_dict_returnsR  s    z@TestGroupBy.test_groupby_apply_timegrouper_with_nat_dict_returnsc                 C   sb   |}|d   dd„ ¡}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'   rC   rD   rï   r‘   r   r   r    r¢   h  r£   zTTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returns.<locals>.<lambda>rü   rý   r"   r   rh   r   r   rÈ   )r•   r   r	   rD   rï   rö   rH   r€   )rK   r,   r+   rþ   rÿ   rN   r   r   r    Ú6test_groupby_apply_timegrouper_with_nat_scalar_returnsa  s    ýzBTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returnsc              	   C   s˜   |}t ddd�}| |¡}|jdks(t‚|j |j¡jdks@t‚| dd„ ¡}t	dddd	d
ggt
tdƒgdd�t
dddd
dgdd�d�}t ||¡ d S )Nr   Z100Yr#   r   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>é$   r7   r   r   r„   r§   r   r   r   r   r¾   )r   r&   Zngroupsr)   Z_selected_objZ	_get_axisZaxisZnlevelsr•   r   r   r
   rH   rI   )rK   r!   r   r*   r+   rþ   rN   r   r   r    Ú5test_groupby_apply_timegrouper_with_nat_apply_squeezes  s    
ýzATestGroupBy.test_groupby_apply_timegrouper_with_nat_apply_squeezeÚnumbac                 C   sp   |}|d j dd„ dd�}|d   tj¡}t ||¡ |dg j dd„ dd�}|dg   tj¡}t ||¡ d S )Nr   c                 S   s
   t  | ¡S r˜   ©rD   Únanmean©Úvaluesr6   r   r   r    r¢   ”  r£   zITestGroupBy.test_groupby_agg_numba_timegrouper_with_nat.<locals>.<lambda>r  )Zenginec                 S   s
   t  | ¡S r˜   r  r  r   r   r    r¢   ›  r£   )Z	aggregaterD   r  rH   r€   rI   )rK   r,   r+   rr   rN   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__rR   rl   ÚmarkZparametrizer]   rs   r�   rŒ   r—   rš   r±   rÁ   rÄ   rÉ   rÍ   rÒ   rÔ   rØ   rã   rè   rë   rñ   rø   rú   rû   r  r  r  rí   Z
skip_if_nor
  r   r   r   r    r-   N   s<   0
  4
:B?	&=	
"r-   )"Ú__doc__r   r   Úior   ÚnumpyrD   rl   rå   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrí   Zpandasr   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingrH   Zpandas.core.groupby.grouperr   Zpandas.core.groupby.opsr   Zfixturer!   r,   r-   r   r   r   r    Ú<module>   s    (


