o
    ·¶ßdZb  ã                   @   s¤  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
 d dlmZ dd„ Zej dddg¡dd	„ ƒZej d
d dg¡dd„ ƒZej dddg¡dd„ ƒZej dddg¡ej dedddejgdœƒeddgiedgdddfedejgdœededdgiedgdddfg¡dd„ ƒƒZdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zej d%d&ge	d'd(d)d*gd+œd&ge	d'd(d)d*gd+œd&ge	d'd(d)d*gd+œfg d,¢e	d-d.d)e	d'd(d)e	d/d0d)gg d1¢d+œd&d2ge	d-d.d)e	d'd(d)gd*d3gd+œd&d2ge	d/d0d)e	d'd(d)gd4d3gd+œfg¡d5d6„ ƒZej d7de	d8d9d)dgde	d:d9d)d;gg¡d<d=„ ƒZej d>ejd?d@gdAdejd*d3gdBde dCdDg¡ej d*d3gdEdFg¡ej dGg dH¢¡dIdJ„ ƒƒZ!dKdL„ Z"ej dMdNdd gfdNd g fdNd*d d3gfdNdOg dP¢fdQdd*gfdQd g fdQd*d*d3gfdQdOg dP¢fg¡ej dRdg d&gd2gd&d2gg¡ej dSd?d@g¡dTdU„ ƒƒƒZ#ej dVdNdd gfdNd g fdNd*d d3gfdNdOg dP¢fdQdd*gfdQd g fdQd*d*d3gfdQdOg dP¢fg¡dWdX„ ƒZ$dYdZ„ Z%d[d\„ Z&d]d^„ Z'ej d_g d`¢¡dadb„ ƒZ(ej d_g d`¢¡dcdd„ ƒZ)dedf„ Z*dgdh„ Z+ej dg di¢¡djdk„ ƒZ,ej dle-dd4d3ƒg dm¢ge-ddnƒg do¢ge-dd3ƒe-dndƒgg dp¢gd d*e-dndƒgg dp¢gg¡dqdr„ ƒZ.dsdt„ Z/dudv„ Z0dwdx„ Z1dydz„ Z2d{d|„ Z3ej d}ddg d~¢e4dƒfdd*d d4ge4d€ƒfddg d~¢e4dƒfddg d‚¢e4dƒƒfd*dg d„¢e4d…ƒfd*dd*ge4d2ƒfddd3d†ge4d‡ƒfdd3d†ge4dˆƒfg¡ej dd‰d
g¡dŠd‹„ ƒƒZ5ej 6dŒ¡ddŽ„ ƒZ7dd„ Z8dS )‘é    N)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚisnac                 C   s  |   d¡}| ¡ }| jddgg d¢f }tddgdd|_| ¡ }t ||¡ | d¡}| jddg }t ||¡ | 	¡ }| jdd	gg d¢f }tddgdd|_t ||¡ | d
¡}| j
dd	g }t ||¡ | d¡}| j
ddg }t ||¡ |d  ¡  |d  	¡  |d  d¡ tj| j| d dkdf< t|d  ¡ d ƒs¦J ‚t|d  	¡ d ƒs²J ‚t|d  d¡j
d ƒsÀJ ‚tdtjgddgddggddgd} |   d¡}| ¡ }| j
ddg  d¡}t ||¡ | j
ddg }|jddd}t ||¡ d S )NÚAé   r   )ÚBÚCÚDÚbarÚfoo©Únameé   é   éÿÿÿÿé   é   r
   é   é   ©ÚcolumnsÚany©Údropna)ÚgroupbyÚfirstÚlocr   ÚindexÚ
sort_indexÚtmÚassert_frame_equalÚnthÚlastÚilocÚnpÚnanr   r   Ú	set_index)ÚdfÚgroupedr   Úexpectedr$   r%   ÚgÚresult© r/   úQ/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/groupby/test_nth.pyÚtest_first_last_nth   sD   



$
r1   Úmethodr   r%   c                 C   sŠ   t g d¢ddd|gdœƒ d¡}t|| ƒƒ }| dkrddg}nddg}tj||d jd	}tddgdd
}t d|i|d}t ||¡ d S )N©r	   r	   r   r   r	   r   r   ©ÚaÚbr5   r   r6   ©Údtyper   ©r    )	r   r   Úgetattrr'   Úarrayr8   r   r"   r#   )r2   Únulls_fixtureÚgroupsr.   ÚvaluesÚidxr,   r/   r/   r0   Útest_first_last_with_na_object@   s    
r@   r    r   c                 C   sb   t g d¢ddd|gdœƒ}| d¡}| | ¡}| dkr"|jddg n|jddg }t ||¡ d S )Nr3   r	   r   r   r4   r5   r   ©r   r   r$   r&   r"   r#   )r    r<   r*   r=   r.   r,   r/   r/   r0   Útest_nth_with_na_objectR   s
   

$rB   c                 C   s>   t  dgd gdœ¡}|jddd}t|| ƒƒ }t ||¡ d S )Nr5   ©ÚidÚvaluerD   F©Úas_index)r   Ú	from_dictr   r:   r"   r#   )r2   r*   r=   r.   r/   r/   r0   Útest_first_last_with_None\   s   rI   zdf, expectedr5   r   rC   rE   rD   r   r9   r7   c                 C   s"   t | d¡| ƒƒ }t ||¡ d S )NrD   )r:   r   r"   r#   )r2   r*   r,   r.   r/   r/   r0   Ú"test_first_last_with_None_expandedg   s   rJ   c           
      C   s&  |   ¡ }d|d< d|d< | d¡}| ¡ }|jddgg d¢f }tdd	gdd
|_| ¡ }t ||¡ | 	¡ }|jddgg d¢f }tdd	gdd
|_| ¡ }t ||¡ | 
d¡}|jddg }t ||¡ ttdƒƒ}| d¡ ttdƒ|dd}|jdks‚J ‚|jdd ¡ }	|	jdks‘J ‚d S )NTÚEr	   ÚFr   r   )r
   r   r   rK   rL   r   r   r   r   r   r   r   é
   é	   é   ZIntCol)Údatar    r   Úint64©Úlevel)Úcopyr   r   r   r   r    r!   r"   r#   r%   r$   r&   ÚlistÚrangeÚappendr   r8   )
Zdf_mixed_floatsr*   r+   r   r,   r%   r$   r?   ÚsÚfr/   r/   r0   Útest_first_last_nth_dtypes{   s.   


rZ   c                  C   sˆ   t dgttjgtddœƒ} |  d¡}|  d¡j}t 	|j 
¡ |¡ t 	|j ¡ |¡ | j}t 	|j d¡|¡ t 	|j d¡|¡ d S )Nr   r7   )rP   ÚnansrP   r   r   )r   r   r'   r(   Úobjectr   r)   r[   r"   Úassert_series_equalr   r%   r$   )r*   r+   r,   r/   r/   r0   Útest_first_last_nth_nan_dtype›   s   
r^   c               
   C   s~   t tdƒddgtdƒddgdddgd	d
dgiƒ} |  d¡ ¡ }t g d¢gttdƒtdƒd	gƒtdgddd}t ||¡ d S )Nz2012-01-01 00:00:00r5   r6   z2012-01-02 00:00:00ÚcÚdr   ÚeZaaaarY   r-   )r5   r_   rY   z
2012-01-01z
2012-01-02r   ©r   r    )r   r   r   r   r   r"   r#   )Útestr.   r,   r/   r/   r0   Útest_first_strings_timestamps©   s   üÿýrd   c            
   
   C   sN  t dtjgddgddggddgd} |  d¡}t | d¡| jdd	g ¡ t | d¡| jdg ¡ t | d	¡| jg  ¡ t | d
¡| jdd	g ¡ t | d¡| jdg ¡ t | d¡| jg  ¡ t 	|j
 d¡| j
jdd	g ¡ t 	|j
 d¡| j
jdg ¡ t |dg  d¡| dg jdd	g ¡ t |jddd| jdd	g ¡ t |jd
dd| jdd	g ¡ t |jddd| jd d… ¡ t |jd	dd| jd d… ¡ t ddddddœddddddœddddddœddddddœd œƒ d!d"g¡} | jdd#d$ d	¡}| jd
g }t ||¡ | jdd#d$ d%¡}| jg  }t ||¡ t tj dd&d'¡d(d)} | d }| d }| |¡ ¡ }| |¡ d*d+„ ¡}tj	||d#d, |jdks^J ‚|jdksfJ ‚||dk jd }|jd |ksyJ ‚|jd |ksƒJ ‚tjtd-d. |j|d#d/jdd0d W d   ƒ n	1 s¢w   Y  t dtjgddgddggddgd} |  d¡}|j
jdd1d}| j
jdd	g }t 	||¡ t dtjgdd%gddgddgddggddgd} |  d¡}t | d¡| jdd%g ¡ t | dg¡| jdd%g ¡ t | ddg¡| jg d2¢ ¡ t | dd
g¡| jg d3¢ ¡ t | g d4¢¡| jg d¢ ¡ t | g d5¢¡| jg d¢ ¡ t | d	g¡| jd	g ¡ t | d%dg¡| jg  ¡ tjd6d7dd8}t d|d9d:gd;} | jj| jjg}| j|d#d< g d=¢¡}t g d>¢¡}	t dd9d:g|	d?}t ||¡ d S )@Nr	   r   r   r   r   r
   r   r   r   r   éþÿÿÿéýÿÿÿr   r   r   ÚgreenÚred©r   r	   r   r   r   ZhamÚeggsZporkgþI|î»ø?gçoB!²¿gHk:!4Àgn‹2d’Ý?gC8fÙ“Àà?g£W”†â?gV¿Òùð,ï¿gN'ÙêrŠð?gÃGÄ”H"é¿gû­(	‰æ?)ÚcolorÚfoodÚtwoÚonerk   rl   F)rS   rG   r   rM   )éd   r   rQ   r7   c                 S   s
   | j d S )Nr   )r&   )Úxr/   r/   r0   Ú<lambda>õ   s   
 ztest_nth.<locals>.<lambda>)Zcheck_nameszFor a DataFrame©Úmatch)ÚsortTÚall)r   r	   r   r   )r   r   r   r   ©r   r	   r   )r   r	   r   z4/1/2014z	6/30/2014)ÚstartÚendÚfreqr5   r6   ©r    r   rF   )r   r   re   r   )z2014/4/1z2014/4/4z	2014/4/29z	2014/4/30z2014/5/1z2014/5/6z	2014/5/29z	2014/5/30z2014/6/2z2014/6/5z	2014/6/27z	2014/6/30rb   )r   r'   r(   r   r"   r#   r$   r&   r   r]   r
   r)   ÚrandomÚrandintr   Úapplyr   ÚpytestÚraisesÚ
ValueErrorÚpdÚ
date_ranger    ÚyearÚmonthÚto_datetime)
r*   r-   r.   r,   rX   Z	expected2ÚvZbusiness_datesÚkeyZexpected_datesr/   r/   r0   Útest_nth¼   sœ   $
 (    ûûöÿ
í
ÿ$
0
    ÿrˆ   c                 C   s6   |   ddg¡}| d¡}| jg d¢ }t ||¡ d S )Nr   r
   r   ©r   r   r   r   )r   r$   r&   r"   r#   ©Zthree_groupr+   r.   r,   r/   r/   r0   Útest_nth_multi_grouper/  s   
r‹   z#data, expected_first, expected_lastr   z2012-02-01 14:00:00z
US/Central©Útzr	   ©rD   Útimer   )r   r
   r   z2012-01-01 13:00:00zAmerica/New_Yorkz2012-03-01 12:00:00zEurope/London©r	   r   r   r
   r   r   c                 C   sÌ   t | ƒ}|jddd ¡ }t |ƒ}g d¢}t || || ¡ |jdddd  ¡ }t ||ddg ¡ |jddd ¡ }t |ƒ}g d¢}t || || ¡ |jdddd  ¡ }t ||ddg ¡ d S )NrD   FrF   rŽ   r   )r   r   r   r"   r#   r%   )rP   Zexpected_firstZexpected_lastr*   r.   r,   Úcolsr/   r/   r0   Útest_first_last_tz8  s   6r’   zmethod, ts, alphaz
2013-01-01ú
US/Easternz
2013-01-02r6   c                 C   sŽ   t tdƒƒ d¡}tg d¢|tjdddddœƒ}t| d	¡| ƒƒ }ttj|d
g|j	d|t
dddgdœtddgd	dd}t ||¡ d S )NÚabcÚcategory)r	   r	   r   Z20130101r   r“   )Zperiodsr   )ÚgroupÚcategory_stringÚ
datetimetzr–   r_   r7   z
2013-01-03rŒ   )r—   r˜   r	   r   r   r9   )r   rU   Úastyper   r   r‚   r:   r   ZCategoricalr8   r   r   r"   r#   )r2   ÚtsÚalphar—   r*   r.   r,   r/   r/   r0   Útest_first_last_tz_multi_column  s"   	ýÿ
ÿüù	rœ   r>   TFÚbooleanZInt64z
2020-01-01z
2020-02-01r   )ÚunitÚfunction)r   r%   ÚminÚmaxc           	      C   s„   t ddg| dœƒ}| d¡}tddgdd}t| d|d}t d| i|d}t|d |ƒƒ }t ||¡ | d|i¡}t ||¡ d S )	Nr	   r   r4   r5   r   r6   )r   r    r9   )	r   r   r   r   r:   r"   r]   Zaggr#   )	r>   rŸ   r*   r+   r?   Zexpected_seriesZexpected_frameZresult_seriesZresult_framer/   r/   r0   Ú+test_first_last_extension_array_keeps_dtypeŸ  s   
r¢   c                  C   sR   t g d¢g d¢g d¢dœƒ} |  ddg¡}| d¡}| jg d¢ }t ||¡ d S )	N)r   r   r   r   r   r   r   r   r   r   r   )rn   rn   rn   rm   rn   rn   rn   rm   rm   rm   rn   )Údullr£   Úshinyr£   r£   r¤   r¤   r£   r¤   r¤   r¤   ©r   r
   r   r   r
   r   r‰   rA   rŠ   r/   r/   r0   Ú test_nth_multi_index_as_expected¹  s   åÿ+
r¦   zop, n, expected_rowsÚheadr   rv   Útailr   rG   c           	      C   sp   t ddgddgddggddgd}|jd|d	}|j| }|d ur)|| }|| }t|| ƒ|ƒ}t ||¡ d S )
Nr	   r   r   r   r   r   r
   r   rF   ©r   r   r&   r:   r"   r#   )	ÚopÚnÚexpected_rowsr   rG   r*   r-   r,   r.   r/   r/   r0   Útest_groupby_head_tailí  s   "
r­   zop, n, expected_colsc                 C   sj   t g d¢g d¢g d¢g d¢gg d¢d}|jg d¢dd	}|jd d …|f }t|| ƒ|ƒ}t ||¡ d S )
Nr   )r	   r   r   )r   r   r   )r   é   rN   r¥   r   )r   r   r	   r	   ©Zaxisr©   )rª   r«   Zexpected_colsr*   r-   r,   r.   r/   r/   r0   Útest_groupby_head_tail_axis_1  s    ÿr°   c                  C   s  t ddgddgddggddgd} | jd	dg }|  d¡}|jdd
}| d	¡}t || ¡ t ||¡ |  d¡}|jdd
}| d	¡}t || ¡ t ||¡ |  d¡}| d	¡}|jdd
}t ||¡ t || ¡ |  d¡}| d	¡}|jdd
}t ||¡ t || ¡ d S )Nr	   r   r   r   r   r   r
   r   r   ©r«   )r   r&   r   r§   r$   r"   r#   r¨   )r*   r,   r-   Zresult1Zresult2r/   r/   r0   Útest_group_selection_cache  s,   "







r²   c                  C   sn   t dgg d¢d} |  d¡ d¡}| jd d… }t ||¡ |  ddg¡ d¡}| jd d… }t ||¡ d S )Nr   ©r5   r6   r_   rz   r5   rM   r6   rA   ©r*   r.   r,   r/   r/   r0   Útest_nth_empty=  s   rµ   c                  C   sŽ   t g d¢g d¢ddtjgg d¢g d¢gg d¢d} |  d	¡ d
¡}| jd
dg }t ||¡ |  d	¡jddd}| jddg }t ||¡ d S )N)r	   r6   ro   )r	   r5   é2   r	   r5   )r   r_   éÈ   )r   r`   é–   )r   r   r
   r   r   r   r   r   r   r   r   ©r   r'   r(   r   r$   r&   r"   r#   r´   r/   r/   r0   Útest_nth_column_orderI  s   $þrº   r   )Nr   ru   c                 C   sZ   t tjdtjdtjgg d¢g d¢dœƒ}| d¡jd| d}|jdd	g }t ||¡ d S )
Nr5   r6   ©r   r   r   r   r®   )r	   r   r   r   rN   r³   r   r   r	   r   r¹   ©r   r*   r.   r,   r/   r/   r0   Útest_nth_nan_in_grouperY  s   ýÿr½   c                 C   s\   t tjdtjdtjgg d¢dœƒ}| d¡d jd| d}|d jddg }t ||¡ d S )	Nr5   r6   r»   r4   r   r   r	   r   )r   r'   r(   r   r$   r&   r"   r]   r¼   r/   r/   r0   Útest_nth_nan_in_grouper_seriesi  s   þÿr¾   c                  C   sŽ   t g d¢dt d¡g tg d¢dddœƒ} |  d¡ ¡ }t d	t d¡g tg d
¢ƒ t g d¢¡¡dœƒ}t	g d¢dd|_
t ||¡ d S )N)r   r   ÚsecondÚthirdrÀ   r   ZNaT)r5   r6   r_   r5   r6   r•   r7   )r–   r   Ú
categoriesr–   r   )r5   r_   r5   r³   )r   rÁ   )r   r¿   rÀ   r   )r   r'   Z
datetime64r   r   r   r™   r   ÚCategoricalDtyper   r    r"   r#   r´   r/   r/   r0   Ú,test_first_categorical_and_datetime_data_natx  s    ýÿÿþÿrÃ   c                  C   s–   t g d¢g d¢g d¢g d¢dœƒ} |  ddi¡} | jdd	gd
 ¡ }t g d¢tg d¢ƒ t g d¢¡¡dœƒ}tjg d¢dd	gd|_	t
 ||¡ d S )N)r	   r	   r	   r   r   )ro   ro   r·   ro   ro   )ÚappleÚorangeÚmangorÆ   rÅ   )ÚjupiterÚmercuryÚmarsÚvenusrÊ   )r   r
   r   r   r   r•   r   r
   )Zby)rÄ   rÆ   rÆ   )rÇ   rÉ   rÊ   )rÇ   rÉ   rÈ   rÊ   )r   r   ))r	   ro   )r	   r·   )r   ro   )Únames)r   r™   r   r   r   r   rÂ   r   Úfrom_tuplesr    r"   r#   r´   r/   r/   r0   Ú(test_first_multi_key_groupby_categoricalŽ  s(   üÿÿþÿÿrÍ   )r   r%   r$   c                 C   s`   t dgƒ}t |||d|gg d¢djdd}| dkr"t|| ƒdƒ}nt|| ƒƒ }t ||¡ d S )NÚy)r   r   r   r   r   r9   r   rR   r$   r   )r   r   r:   r"   r]   )r2   r<   r,   rP   r.   r/   r/   r0   Ú%test_groupby_last_first_nth_with_none¨  s   
þýrÏ   zarg, expected_rows)r   r	   r   r   re   )r   r   r   ©r   r	   r   r   r   r   r   c                 C   s:   |j | }|  |¡}| j| }t ||¡ t ||¡ d S ©N)r$   r&   r"   r#   )Úslice_test_dfÚslice_test_groupedÚargr¬   r.   Ú
equivalentr,   r/   r/   r0   Ú
test_slice¹  s
   


rÖ   c                 C   sT   |j dddd …f }|  ddtdd ƒg¡}| jg d¢ }t ||¡ t ||¡ d S )Nr   r	   re   rÐ   )r$   Úslicer&   r"   r#   )rÒ   rÓ   r.   rÕ   r,   r/   r/   r0   Útest_nth_indexedÍ  s
   rØ   c                 C   s>   t jtdd |  d¡ W d   ƒ d S 1 sw   Y  d S )NzInvalid indexrr   g…ëQ¸	@)r~   r   Ú	TypeErrorr$   ©rÓ   r/   r/   r0   Útest_invalid_argumentØ  s   "ÿrÛ   c                 C   sF   t jtdd |  td d dƒ¡ W d   ƒ d S 1 sw   Y  d S )NzInvalid steprr   r   )r~   r   r€   r$   r×   rÚ   r/   r/   r0   Útest_negative_stepß  s   "ÿrÜ   c                 C   s2   |  t ddg¡¡}| jg d¢ }t ||¡ d S )Nr   r	   ri   )r$   r'   r;   r&   r"   r#   )rÒ   rÓ   r.   r,   r/   r/   r0   Útest_np_intsæ  s   rÝ   c                  C   sb   t g d¢g d¢gddgg d¢d} | j| jd dd d	¡}| jd d …d	d
gf }t ||¡ d S )N)r   r   r   )r®   r®   r   ÚzrÎ   )r   r
   r   rz   r	   r¯   r   r   )r   r   r&   r$   r"   r#   r´   r/   r/   r0   Ú!test_groupby_nth_with_column_axisî  s   þúrß   z.start, stop, expected_values, expected_columnsri   ÚABCDEZADrN   )r   r	   r   ZABD)r	   r   r   ZBCEr   ZCErK   Úcallc                    sn   t tdƒgtdƒgd}|jg d¢dd‰ ‡ fdd„‡ fd	d„d
œ| | |ƒ}t |g|gd}t ||¡ d S )Nr   rà   r   )r   r   r   r   r   r	   r¯   c                    s   ˆ   t| |ƒ¡S rÑ   )r$   r×   ©rw   Ústop©Úgbr/   r0   rq     s    z2test_nth_slices_with_column_axis.<locals>.<lambda>c                    s   ˆ j | |… S rÑ   )r$   râ   rä   r/   r0   rq     s    )rá   r    )r   rV   rU   r   r"   r#   )rw   rã   Zexpected_valuesZexpected_columnsr2   r*   r.   r,   r/   rä   r0   Ú test_nth_slices_with_column_axisý  s   

þýýræ   z<ignore:invalid value encountered in remainder:RuntimeWarningc                  C   s®   t ddgdtjgdtjgdtjggddgd} t ddggddgd}|  ddg¡jdd	}t ||¡ |  ddg¡jdd	}t ||¡ |  ddg¡jd
d	}t ||¡ d S )Nr5   rÞ   r6   r_   ÚXÚYr   r	   r±   r   ©	r   r'   r(   r   r§   r"   r#   r¨   r$   ©r*   r,   r.   r/   r/   r0   Útest_head_tail_dropna_true  s   &ÿrë   c                  C   sÂ   t ddgdtjgdtjggddgd} t ddgdtjgdtjggddgd}| jddgdd	jd
d}t ||¡ | jddgdd	jd
d}t ||¡ | jddgdd	jdd}t ||¡ d S )Nr5   rÞ   r6   r_   rç   rè   r   Fr   r	   r±   r   ré   rê   r/   r/   r0   Útest_head_tail_dropna_false,  s   &&rì   )9Únumpyr'   r~   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr"   r1   ÚmarkZparametrizer@   rB   rI   r(   r\   rJ   rZ   r^   rd   rˆ   r‹   r’   rœ   r;   r…   Zto_timedeltar¢   r¦   r­   r°   r²   rµ   rº   r½   r¾   rÃ   rÍ   rÏ   r×   rÖ   rØ   rÛ   rÜ   rÝ   rß   rU   ræ   Úfilterwarningsrë   rì   r/   r/   r/   r0   Ú<module>   s:    0

	

þþûþ s	
ý
ý
ýõ


ýù


þú	

þúîîþ
1þþ
üþ	4

øþ

øþ



üþ
	øþÿ
