U
    sVÞc6:  ã                   @   sæ  d dl mZ d dlZd dlZd dlm  mZ d dlm	Z	 d dl
Zd dl
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dgd d	gd
  dgd  e d¡dœedddddZe	ƒ ejdd„ ƒƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd „ Z!ej" #d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0g¡d1d2„ ƒZ$d3d4„ Z%ej" #d!d5d6g¡d7d8„ ƒZ&d9d:„ Z'd;d<„ Z(d=d>„ Z)d?d@„ Z*dAdB„ Z+dCdD„ Z,dEdF„ Z-dGdH„ Z.dIdJ„ Z/ej" #dKdLgdLdMgg¡dNdO„ ƒZ0ej" #dPdQdRg¡dSdT„ ƒZ1dUdV„ Z2dS )Wé    )ÚdedentN)Ú
async_mark)Ú	DataFrameÚIndexÚSeriesÚTimedeltaIndexÚ	Timestamp)Ú
Int64Index)Ú
date_rangeé   é   é   é   é   é   é(   )ÚAÚBú1/1/2000Ús©ÚfreqÚperiods©Úindexc              
   Ã   sd   ddl m} tdƒ}|  |¡I d H  t d ¡, |dƒ t| j dd¡ƒ W 5 Q R X W 5 Q R X d S )Nr   )ÚprovisionalcompleterzZ    import pandas._testing as tm
    s = tm.makeTimeSeries()
    rs = s.resample("D")
    Úignorezrs.r   )	ZIPython.core.completerr   r   Zrun_codeÚtmÚassert_produces_warningÚlistZ	CompleterZcompletions)Úipr   Úcode© r"   úP/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/resample/test_resampler_grouper.pyÚ"test_tab_complete_ipython6_warning   s    ÿ
r$   c                  C   s  dddgdddgdddgddd	gd
ddgdddgdddgdddgddd	gdddgg
} t | dddgd}t |j¡|_dd„ }| d¡ |¡}| d¡ d¡ d¡ ¡ }t	 
||¡ t tddddddddgddd	dgdœƒ d¡}dd„ }| d ¡ |¡}| d ¡ d!¡ ¡ }t	 
||¡ d S )"Nz
2010-01-01r   r   z
2010-01-02r   z
2010-01-05r   z
2010-01-10é   z
2010-01-13r   é   z
2010-01-03z
2010-01-04r   z
2010-01-11z
2010-01-14ÚdateÚidZscore©Úcolumnsc                 S   s   |   d¡ d¡ ¡ S )Nr'   ÚD)Ú	set_indexÚresampleÚasfreq©Úxr"   r"   r#   ÚfD   s    z%test_deferred_with_groupby.<locals>.fr+   ú
2016-01-01é   ÚW)Ústartr   r   é   ©r'   ÚgroupÚvalc                 S   s   |   d¡ ¡ S )NÚ1D)r-   Úffillr/   r"   r"   r#   r1   S   s    r8   r:   )r   ÚpdÚto_datetimer'   ÚgroupbyÚapplyr,   r-   r.   r   Úassert_frame_equalr
   r;   )ÚdataÚdfr1   ÚexpectedÚresultr"   r"   r#   Útest_deferred_with_groupby0   s:    ö

ýÿúrE   c                  C   sr   t  d¡} | j dd„ ¡}|  d¡j ¡ }t ||¡ | j d¡ ¡ }t ||¡ |  d¡ ¡ j}t ||¡ d S )Nr   c                 S   s   |   d¡ ¡ S ©NÚ2s)r-   Úmeanr/   r"   r"   r#   Ú<lambda>^   ó    ztest_getitem.<locals>.<lambda>rG   )Ú
test_framer>   r   r?   r-   rH   r   Úassert_series_equal)ÚgrC   rD   r"   r"   r#   Útest_getitem[   s    
rN   c                  C   s¢   dddœdddœg} t | tdddd}| d	¡ d
¡}|d  ¡ }tddgtjjdt	dƒfdt	dƒfgd	d gddd}t
 ||¡ |d  ¡ }t
 ||¡ d S )Nr   r   )r(   Úbuyerr   r   r2   ©r   r   r(   r:   rO   z
2016-01-02©Únames)r   Úname)r   r
   r>   r-   Úcountr   r<   Ú
MultiIndexÚfrom_tuplesr   r   rL   )rA   rB   ÚrrD   rC   r"   r"   r#   Útest_getitem_multiplej   s    þúrX   c                  C   sf   t tdƒtdddddœƒ} |  d¡ d¡ d	¡d
  ¡ }|  d¡jd	ddd
  ¡ }t ||¡ d S )NZaabbbz1-1-2016r&   rP   r   )r(   r'   rA   r'   r(   Ú2DrA   ©Úon)	r   r   r
   r,   r>   r-   Úsumr   rL   )rB   ÚexprD   r"   r"   r#   Ú)test_groupby_resample_on_api_with_getitem€   s    ÿr^   c               	   C   s^  d} d\}}d}t ||dd}ttj t|ƒ¡|d}|||… }tj| d}| |¡ 	d¡}|||… }| |¡ 	d¡}	t
jtdd	 t |j|	j¡ W 5 Q R X td
ƒ}
tj| |
d}| |¡ 	d¡}|||… }| |¡ 	d¡}t ||¡ td
ƒt d¡d  }tj| |d}| |¡ 	d¡}|||… }| |¡ 	d¡}t ||¡ t ||¡ d S )NZ1399min)z1/1/2000 00:00:00z1/31/2000 00:00z1/15/2000 00:00:00Z1231min©r   r   rT   zIndex are different©Úmatchr   )r   Úorigini0u  )r
   r   ÚnpÚrandomÚrandnÚlenr<   ÚGrouperr>   ÚaggÚpytestZraisesÚAssertionErrorr   Úassert_index_equalr   r   rL   Z	Timedelta)r   r5   ÚendZmiddleÚrngÚtsZts2Zsimple_grouperZcount_tsZ	count_ts2rb   Zadjusted_grouperZadjusted_count_tsZadjusted_count_ts2Zorigin_futureZadjusted_grouper2Zadjusted2_count_tsZadjusted2_count_ts2r"   r"   r#   Útest_groupby_with_originŠ   s2    ro   c               
   C   sl   t dddd} ttdƒ| d d¡ ¡ }tdddddd	d	gtjd
ddddddgdddd}t ||¡ d S )Nr   r   ÚT©r   r   r   Z20sr   r   r   z2000-01-01 00:00:00z2000-01-01 00:00:20z2000-01-01 00:00:40z2000-01-01 00:01:00z2000-01-01 00:01:20z2000-01-01 00:01:40z2000-01-01 00:02:00zdatetime64[ns]Z20S)Zdtyper   )	r
   r   Úranger-   Únearestr<   ZDatetimeIndexr   rL   )r   rD   rC   r"   r"   r#   Útest_nearest³   s$    ù	õþrt   r1   ÚfirstÚlastÚmedianZsemr\   rH   ÚminÚmaxÚsizerT   rs   Zbfillr;   r.   Zohlcc                    sB   t  d¡}| d¡}t|ˆ ƒƒ }| ‡ fdd„¡}t ||¡ d S )Nr   rG   c                    s   t |  d¡ˆ ƒƒ S rF   ©Úgetattrr-   r/   ©r1   r"   r#   rI   æ   rJ   ztest_methods.<locals>.<lambda>)rK   r>   r-   r|   r?   r   Zassert_equal©r1   rM   rW   rD   rC   r"   r}   r#   Útest_methodsÍ   s
    

r   c                  C   s>   t  d¡} |  d¡}|j ¡ }| j dd„ ¡}t ||¡ d S )Nr   rG   c                 S   s   |   d¡ ¡ S rF   )r-   Únuniquer/   r"   r"   r#   rI   ï   rJ   z&test_methods_nunique.<locals>.<lambda>)rK   r>   r-   r   r€   r?   r   rL   )rM   rW   rD   rC   r"   r"   r#   Útest_methods_nuniqueê   s
    


r   ZstdÚvarc                    sF   t  d¡}| d¡}t|ˆ ƒdd}| ‡ fdd„¡}t ||¡ d S )Nr   rG   r   ©Zddofc                    s   t |  d¡ˆ ƒddS )NrG   r   rƒ   r{   r/   r}   r"   r#   rI   ø   rJ   z&test_methods_std_var.<locals>.<lambda>)rK   r>   r-   r|   r?   r   r@   r~   r"   r}   r#   Útest_methods_std_varó   s
    

r„   c                  C   sl   t  d¡} |  d¡}|  d¡ ¡ }dd„ }| |¡}t ||¡ dd„ }|  |¡}| d¡}t ||¡ d S )Nr   rG   c                 S   s   |   d¡ ¡ S rF   )r-   r\   r/   r"   r"   r#   r1     s    ztest_apply.<locals>.fc                 S   s   |   d¡ dd„ ¡S )NrG   c                 S   s   |   ¡ S ©N©r\   )Úyr"   r"   r#   rI     rJ   z'test_apply.<locals>.f.<locals>.<lambda>)r-   r?   r/   r"   r"   r#   r1   
  s    Zint64)rK   r>   r-   r\   r?   r   r@   Zastype)rM   rW   rC   r1   rD   r"   r"   r#   Ú
test_applyü   s    




rˆ   c                  C   s¦   t dddd} tdtj t| ƒ¡i| d}dd„ }| tjd	d¡ 	|¡}| 
d	¡ 	|¡}t ||¡ |d  tjd	d¡ 	|¡}|d  
d	¡ 	|¡}t ||¡ d S )
Nz1-1-2015z12-31-15r+   r_   Úcol1©rA   r   c                 S   s   t ddgddgd}|S )Nr   r   ÚaÚbr   )r   )r0   r   r"   r"   r#   r1     s    z(test_apply_with_mutated_index.<locals>.fÚM)r
   r   rc   rd   Zrandrf   r>   r<   rg   r?   r-   r   r@   rL   )r   rB   r1   rC   rD   r"   r"   r#   Útest_apply_with_mutated_index  s    rŽ   c                     s¦   t j ddg¡} tdddd}tt dgd ¡ dd	¡|| d
}dd„ |jD ƒ‰ | 	d¡ 
‡ fdd„¡}td	ddgg tddd	dt j ddg¡d
}t ||¡ d S )N)r   r‹   Ú Úone)r   rŒ   ÚiZtwoz
2017-01-01Z15Minr   )r5   r   r   r   é   r   ©r   r*   c                 S   s&   i | ]}||d  dkrt jnt j“qS )r   r   )rc   r\   rH   )Ú.0Úcolr"   r"   r#   Ú
<dictcomp>,  s      z1test_apply_columns_multilevel.<locals>.<dictcomp>ÚHc                    s   ˆ | j  | ƒS r…   ©rS   r/   ©Zagg_dictr"   r#   rI   -  rJ   z/test_apply_columns_multilevel.<locals>.<lambda>g        Z1H)r<   rU   rV   r
   r   rc   ÚarrayZreshaper*   r-   r?   r   r@   )ÚcolsÚindrB   rD   rC   r"   r™   r#   Útest_apply_columns_multilevel'  s    "ÿýr   c               	   C   s¼   t dddd} t| dddddgdddddgdœd	}| d
¡jddd ¡ }t ddddg¡t t ddddg¡¡g}tj	j
|d
d gd}tddddgddddgdœ|d}t ||¡ d S )Nz
2000-01-01rY   r&   r   r   r   r   )Úcol0r‰   )r   rA   rž   Z1WÚleft)Úlabelz
1999-12-26z
2000-01-02rQ   rŠ   )r
   r   r>   r-   r\   rc   rš   r<   r=   rU   Úfrom_arraysr   r@   )r   rB   rD   ÚmiZmindexrC   r"   r"   r#   Ú test_resample_groupby_with_label8  s    &ÿþ ÿr£   c                  C   sŠ   t } tdddgdd}|  d¡ d¡ ¡ }|jjdks:t‚t 	|jj
d |¡ |  d¡ d¡ ¡ }|jjdksrt‚t 	|jj
d |¡ d S )	Nr   r   r   r   r˜   rG   r   r   )rK   r	   r>   r-   rH   r   Znlevelsrj   r   rk   ÚlevelsZrolling)rB   rC   rD   r"   r"   r#   Útest_consistency_with_windowL  s    r¥   c                  C   sn   t tj dd¡tdƒtddddd} |  ¡ }dd	d
g|_| d¡ 	¡ }|  d¡ 	¡ }|j|_t
 ||¡ d S )Nr   r   Zaaaú
2012-01-01r   rq   ©r*   r   r‹   rŒ   ÚcZ5s)r   rc   rd   re   r   r
   Úcopyr*   r-   rw   r   r@   )rB   Údf2rC   rD   r"   r"   r#   Útest_median_duplicate_columnsZ  s    ýr«   c                  C   sˆ   t tdƒtddƒdœtddddd} |  d¡ d	d
„ ¡}tddddgtddddd}t ||¡ |  d¡ dd
„ ¡}t ||¡ d S )Né
   r   )r•   r‰   r¦   Z20minrq   r   r—   c                 S   s
   | j  ¡ S r…   )r•   r\   ©r8   r"   r"   r#   rI   r  rJ   z0test_apply_to_one_column_of_df.<locals>.<lambda>r   r   é   é	   r3   c                 S   s   | d   ¡ S )Nr•   r†   r­   r"   r"   r#   rI   y  rJ   )r   rr   r
   r-   r?   r   r   rL   ©rB   rD   rC   r"   r"   r#   Útest_apply_to_one_column_of_dfj  s    þ
 ÿr±   c                  C   sª   t ddddddddgddddddd	d
gddddddddgdœƒ} t | d ¡| d< |  d¡jddd}d}tjt|d | ¡ }W 5 Q R X | 	ddi¡}t 
||¡ d S )NZcat_1Zcat_2r&   r   é   r   r3   é   r¬   é2   z2019-2-1z
2018-02-03z	2020-3-11z2019-2-2z	2018-12-4z
2020-12-12)ÚcatÚnumr'   r'   rµ   ÚYrZ   z!The default value of numeric_onlyr`   r¶   r\   )r   r<   r=   r>   r-   r   r   ÚFutureWarningr\   rh   r@   )rB   Ú	resampledÚmsgrC   rD   r"   r"   r#   Útest_resample_groupby_agg}  s:    ø
øôÿr»   c                  C   sˆ   t dƒ} tdgdgdœt| gddd}| d¡ d	¡d
 }| ddg¡}tddggtjjd| fgddgdddgd}t	 
||¡ d S )Nz2021-02-28 00:00:00ÚbetaéE   )ÚclassÚvaluer'   r˜   r   r¾   r   r¿   r\   rz   r   rQ   r“   )r   r   r   r>   r-   rh   r<   rU   rV   r   r@   )rn   rB   r¹   rD   rC   r"   r"   r#   Ú"test_resample_groupby_agg_listlike£  s     ýrÀ   Úkeysr‹   rŒ   c                 C   sr   t g ddgtg ƒd}| | ¡jt d¡d ¡ }t ddgdj| dd}t| ƒd	krb| d
 |j	_
t ||¡ d S )Nr‹   rŒ   r§   z00:00:01)Zruler)   F)Zdropr   r   )r   r   r>   r-   r<   Zto_timedeltarH   r,   rf   r   rS   r   r@   )rÁ   rB   rD   rC   r"   r"   r#   Ú
test_empty±  s    rÂ   ÚconsolidateTFc                 C   sø   t dddd}td|tdƒddœƒ}td|tdƒd	œƒ}tj||gd
d}| rV| ¡ }| dg¡jddd ¡ }tj	j
dgd dgd  t dddgd ¡gddgd}tdgd dgd  dddgd dgd tjgd  dœ|d}t ||¡ d S )Nz
2020-01-01é   r+   rq   r   r9   )Úkeyr'   r‰   Ú
col_objectr   )rÅ   r'   r‰   T)Zignore_indexrÅ   r4   r'   rZ   r   z
2020-01-05z
2020-01-12z
2020-01-19r   rQ   r   r&   r   )rÅ   r‰   rÆ   r   )r
   r   rr   r<   ÚconcatZ_consolidater>   r-   rx   rU   r¡   r=   rc   Únanr   r@   )rÃ   ÚdatesZdf1rª   rB   rD   ÚidxrC   r"   r"   r#   Ú.test_resample_groupby_agg_object_dtype_all_nan½  s*    þûýúrË   c                  C   s°   t tdddddddddddgddddd	d
ddgdœd} |  d¡jddddg  ¡ }t dddddgitdtdƒfdtdƒfdtdƒfdtdƒfgddd}t ||¡ d S )Nr2   r   )r5   r   r   r   r%   r&   r   r   r¬   r7   )rA   r8   rY   r'   rZ   r9   g      @g      @g      @g      @z
2016-01-03z
2016-01-05z
2016-01-07)r8   r'   )rA   rS   rŠ   )	r   r
   r>   r-   rH   r   r   r   r@   r°   r"   r"   r#   Ú'test_groupby_resample_with_list_of_keysÛ  s*    
ýÿ 
ÿ



üùürÌ   )3Útextwrapr   Znumpyrc   ri   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdr   Zpandasr<   r   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.core.apir	   Zpandas.core.indexes.datetimesr
   ZarangerK   Zcheck_file_leaksr$   rE   rN   rX   r^   ro   rt   ÚmarkZparametrizer   r   r„   rˆ   rŽ   r   r£   r¥   r«   r±   r»   rÀ   rÂ   rË   rÌ   r"   r"   r"   r#   Ú<module>   sv   (þ+
)ñþ
		
&

