a
    j=icâf  ã                   @   sz  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(dcdd„ Z)dedf„ Z*ej dg dg¢¡dhdi„ ƒZ+ej dje,dd4d3ƒg dk¢ge,ddlƒg dm¢ge,dd3ƒe,dldƒgg dn¢gd d*e,dldƒgg dn¢gg¡dodp„ ƒZ-dqdr„ Z.dsdt„ Z/dudv„ Z0dwdx„ Z1dydz„ Z2ej d{ddg d|¢g d}¢fdd*d d4gd~dgfdd€g d|¢g d}¢fddg d¢g d‚¢fd*dg dƒ¢g d‚¢fd*dd*gd~gfddd3d„gd~dgfdd3d„gdgfg¡ej dd…d
g¡d†d‡„ ƒƒZ3dˆd‰„ Z4dŠd‹„ Z5d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¡}t ||¡ | 	¡ }| jdd	gg d¢f }tddgdd|_t ||¡ | d
¡}t ||¡ | d¡}| jddgg d¢f  
¡ }tddgdd|_| ¡ }t ||¡ |d  ¡  |d  	¡  |d  d¡ tj| j| d dkdf< t|d  ¡ d ƒsXJ ‚t|d  	¡ d ƒsrJ ‚t|d  d¡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  d¡}|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ÚcopyÚnpÚnanr   r   ÚilocÚ	set_index)ÚdfÚgroupedr   Úexpectedr$   r%   ÚgÚresult© r0   ún/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/groupby/test_nth.pyÚtest_first_last_nth   sD    



$
r2   Ú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Úbr6   r   r7   ©Údtyper   ©r    )	r   r   Úgetattrr'   Úarrayr9   r   r"   r#   )r3   Únulls_fixtureÚgroupsr/   ÚvaluesÚidxr-   r0   r0   r1   Útest_first_last_with_na_object@   s     
rA   r    r   c                 C   sˆ   t g d¢ddd|gdœƒ d¡}| | ¡}| dkr<ddg}nd|g}tj||d jd	}tddgdd
}t d|i|d}t ||¡ d S )Nr4   r	   r   r   r5   r6   r   r7   r8   r   r:   )	r   r   r$   r'   r<   r9   r   r"   r#   )r    r=   r>   r/   r?   r@   r-   r0   r0   r1   Útest_nth_with_na_objectR   s     

rB   c                 C   s>   t  dgd gdœ¡}|jddd}t|| ƒƒ }t ||¡ d S )Nr6   ©ÚidÚvaluerD   F©Úas_index)r   Ú	from_dictr   r;   r"   r#   )r3   r+   r>   r/   r0   r0   r1   Útest_first_last_with_Noned   s    rI   zdf, expectedr6   r   rC   rE   rD   r   r:   r8   c                 C   s"   t | d¡| ƒƒ }t ||¡ d S )NrD   )r;   r   r"   r#   )r3   r+   r-   r/   r0   r0   r1   Ú"test_first_last_with_None_expandedo   s    rJ   c           
      C   sL  |   ¡ }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g d¢f }tdd	gdd
|_| ¡ }t ||¡ ttdƒƒ}| d¡ ttdƒ|dd}|jdks(J ‚|jdd ¡ }	|	jdksHJ ‚d S )NTÚEr	   ÚFr   r   )r
   r   r   rK   rL   r   r   r   r   r   r   r   é
   é	   é   ZIntCol)Údatar    r   Úint64©Úlevel)r&   r   r   r   r   r    r!   r"   r#   r%   r$   ÚlistÚrangeÚappendr   r9   )
Zdf_mixed_floatsr+   r,   r   r-   r%   r$   r@   ÚsÚfr0   r0   r1   Útest_first_last_nth_dtypesƒ   s2    


rY   c                  C   s‚   t dgttjgtddœƒ} |  d¡}|  d¡j}t 	|j 
¡ |¡ t 	|j ¡ |¡ t 	|j d¡|¡ t 	|j d¡|¡ d S )Nr   r8   )rP   ÚnansrP   r   r   )r   r   r'   r(   Úobjectr   r*   rZ   r"   Úassert_series_equalr   r%   r$   )r+   r,   r-   r0   r0   r1   Ú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:00r6   r7   z2012-01-02 00:00:00ÚcÚdr   ÚeZaaaarX   r.   )r6   r^   rX   z
2012-01-01z
2012-01-02r   ©r   r    )r   r   r   r   r   r"   r#   )Útestr/   r-   r0   r0   r1   Útest_first_strings_timestamps²   s    üÿýrc   c               
   C   sú  t dtjgddgddggddgd} |  d¡}t | d¡| jdd	g  d¡¡ t | d¡| jdg  d¡¡ t | d	¡| j	g   d¡¡ t | d
¡| jdd	g  d¡¡ t | d¡| jdg  d¡¡ t | d¡| j	g   d¡¡ t 
|j d¡|  d¡jjdd	g ¡ t 
|j d¡|  d¡jjdg ¡ t |dg  d¡| j	dd	gddgf  d¡¡ |  d¡}t |jddd|jdd	g ¡ t |jd
dd|jdd	g ¡ tj|d< t |jddd|jdd	g ¡ t |jd	dd|jdd	g ¡ 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sJ ‚||dk jd }|jd |ks>J ‚|jd |ksRJ ‚|j|d#d- ¡ }|j|d#d-jdd.d}t 
||¡ tjtd/d0( |j|d#d-jdd1d W d   ƒ n1 sÆ0    Y  t dtjgddgddggddgd} |  d¡}|jjdd.d}|j ¡ }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  d¡¡ t | dg¡| jdd%g  d¡¡ t | ddg¡| jg d2¢  d¡¡ t | dd
g¡| jg d3¢  d¡¡ t | g d4¢¡| jg d¢  d¡¡ t | g d5¢¡| jg d¢  d¡¡ t | d	g¡| jd	g  d¡¡ t | d%dg¡| j	g   d¡¡ 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Úonerj   rk   F)rS   rG   r   rM   )éd   r   rQ   r8   c                 S   s
   | j d S )Nr   )r)   )Úxr0   r0   r1   Ú<lambda>   ó    ztest_nth.<locals>.<lambda>)Zcheck_names)ÚsortÚallzFor a DataFrame©ÚmatchT)r   r	   r   r   )r   r   r   r   ©r   r	   r   )r   r	   r   z4/1/2014z	6/30/2014)ÚstartÚendÚfreqr6   r7   ©r    r   rF   )r   r   rd   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/30ra   )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.   Úexpr/   r-   rW   Z	expected2ÚvZbusiness_datesÚkeyZexpected_datesr0   r0   r1   Útest_nthÅ   s¤    $
" " &$0
  
  ûûöÿí
8$

0
"$&&&&""ÿr‰   c                 C   s0   |   ddg¡}| d¡}| ¡ }t ||¡ d S )Nr   r
   r   )r   r$   r   r"   r#   ©Zthree_groupr,   r/   r-   r0   r0   r1   Útest_nth_multi_indexA  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-   Úcolsr0   r0   r1   Útest_first_last_tzJ  s    6r’   zmethod, ts, alphaz
2013-01-01ú
US/Easternz
2013-01-02r7   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^   r8   z
2013-01-03rŒ   )r—   r˜   r	   r   r   r:   )r   rT   Úastyper   r   r‚   r;   r   ZCategoricalr9   r   r   r"   r#   )r3   ÚtsÚalphar—   r+   r/   r-   r0   r0   r1   Ú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   r5   r6   r   r7   )r   r    r:   )	r   r   r   r   r;   r"   r\   Zaggr#   )	r?   rŸ   r+   r,   r@   Zexpected_seriesZexpected_frameZresult_seriesZresult_framer0   r0   r1   Ú+test_first_last_extension_array_keeps_dtype±  s    
r¢   c                  C   sr   t g d¢g d¢g d¢dœƒ} |  ddg¡}| d¡}t dg d	¢itjg d
¢g d¢gddgdd}t ||¡ d S )N)r   r   r   r   r   r   r   r   r   r   r   )rm   rm   rm   rl   rm   rm   rm   rl   rl   rl   rm   )Údullr£   Úshinyr£   r£   r¤   r¤   r£   r¤   r¤   r¤   ©r   r
   r   r   r
   r   r   )r£   r£   r£   r£   )r   r   r   r   )rm   rl   rm   rl   ©Únamesr:   )r   r   r$   r   Zfrom_arraysr"   r#   rŠ   r0   r0   r1   Ú 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rR|| }|| }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/   r0   r0   r1   Ú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/   r0   r0   r1   Ú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¡}|  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-   r.   Zresult1Zresult2r0   r0   r1   Útest_group_selection_cache7  s,    "







r´   c                  C   sŽ   t dgg d¢d} |  d¡ d¡}t tg ddddgd}t ||¡ |  ddg¡ d¡}t tg g gg g gddgd	dgd}t ||¡ d S )
Nr   ©r6   r7   r^   rz   r6   rM   r   r7   r^   r¦   )r   r   r$   r   r"   r#   r   ©r+   r/   r-   r0   r0   r1   Útest_nth_emptyU  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
¡}t ddgddggddgtddgd	dd}t ||¡ |  d	¡jddd}t ddgddggddgtddgd	dd}t ||¡ d S )N)r	   r7   rn   )r	   r6   é2   r	   r6   )r   r^   éÈ   )r   r_   é–   )r   r   r
   r   r   r   r7   g      Y@r^   g      i@r   r
   r   r   ra   r   r   r   g      I@r_   g     Àb@)r   r'   r(   r   r$   r   r"   r#   r¶   r0   r0   r1   Útest_nth_column_orderc  s    $þ"ÿ"ÿr»   r   )Nr   rs   c                 C   sˆ   t tjddgg d¢tjddgg d¢tjddggtd	ƒd
}| d¡jd| d}t ddgddggtdƒtd	dgddd}t ||¡ d S )Nr   r	   )r”   r   r   r   r   )Údefr   r   r°   rN   r”   r   r6   r   r   r   r   r   Úbcr¼   r   ra   )	r   r'   r(   rT   r   r$   r   r"   r#   )r   r+   r/   r-   r0   r0   r1   Útest_nth_nan_in_grouperw  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)r6   r7   r^   r6   r7   r•   r8   )r–   r   Ú
categoriesr–   r   )r6   r^   r6   rµ   )r   rÁ   )r   r¿   rÀ   r   )r   r'   Z
datetime64r   r   r   r™   r   ÚCategoricalDtyper   r    r"   r#   r¶   r0   r0   r1   Ú,test_first_categorical_and_datetime_data_nat†  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   )rn   rn   r¹   rn   rn   )Ú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	   rn   )r	   r¹   )r   rn   r¦   )r   r™   r   r   r   r   rÂ   r   Úfrom_tuplesr    r"   r#   r¶   r0   r0   r1   Ú(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rDt|| ƒdƒ}nt|| ƒƒ }t ||¡ d S )NÚy)r   r   r   r   r   r:   r   rR   r$   r   )r   r   r;   r"   r\   )r3   r=   r-   rP   r/   r0   r0   r1   Ú%test_groupby_last_first_nth_with_none¶  s    
þýrÎ   zarg, expected_rows)r   r	   r   r   rd   )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-   r0   r0   r1   Ú
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	   rd   rÏ   )r$   Úslicer)   r"   r#   )rÑ   rÒ   r/   rÔ   r-   r0   r0   r1   Útest_nth_indexedÛ  s
    r×   c                 C   s<   t jtdd |  d¡ W d   ƒ n1 s.0    Y  d S )NzInvalid indexrt   g…ëQ¸	@)r~   r   Ú	TypeErrorr$   ©rÒ   r0   r0   r1   Útest_invalid_argumentæ  s    rÚ   c                 C   sD   t jtdd" |  td d dƒ¡ W d   ƒ n1 s60    Y  d S )NzInvalid steprt   r   )r~   r   r€   r$   rÖ   rÙ   r0   r0   r1   Útest_negative_stepí  s    rÛ   c                 C   s2   |  t ddg¡¡}| jg d¢ }t ||¡ d S )Nr   r	   rh   )r$   r'   r<   r)   r"   r#   )rÑ   rÒ   r/   r-   r0   r0   r1   Útest_np_intsô  s    rÜ   c                  C   sv   t g d¢g d¢gddgg d¢d} | j| jd dd d	¡}t d
dgddggddgddgd}d|j_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   r"   r#   r¶   r0   r0   r1   Ú!test_groupby_nth_with_column_axisü  s"    þúþúrÞ   z.start, stop, expected_values, expected_columnsrh   ©r   r   r   r   r   r   r   rN   )r   r	   r   )r   r   r   )r	   r   r   r   Úcallc                    sl   t tdƒgtdƒgd}|jg d¢dd‰ ‡ fdd„‡ fd	d„d
œ| | |ƒ}t |g|d}t ||¡ d S )Nr   ZABCDEr   rß   r	   r±   c                    s   ˆ   t| |ƒ¡S rÐ   )r$   rÖ   ©rw   Ústop©Úgbr0   r1   rp   '  rq   z2test_nth_slices_with_column_axis.<locals>.<lambda>c                    s   ˆ j | |… S rÐ   )r$   rá   rã   r0   r1   rp   (  rq   )rà   r    )r   rU   rT   r   r"   r#   )rw   râ   Úexpected_valuesZexpected_columnsr3   r+   r/   r-   r0   rã   r1   Ú test_nth_slices_with_column_axis  s    

þýýræ   c                  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 )Nr6   rÝ   r7   r^   ÚXÚYr   r	   r³   r   ©
r   r'   r(   r   r©   r"   r#   rª   r$   Zreset_index©r+   r-   r/   r0   r0   r1   Ú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 )Nr6   rÝ   r7   r^   rç   rè   r   Fr   r	   r³   r   ré   rê   r0   r0   r1   Útest_head_tail_dropna_false?  s    &&rì   )6Únumpyr'   r~   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr"   r2   ÚmarkZparametrizerA   rB   rI   r(   r[   rJ   rY   r]   rc   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æ   rë   rì   r0   r0   r0   r1   Ú<module>   s.   0



þþûþ#|	
ý
ý
ýõ


ýù


þú	

þúîîþ1
þþ
üþ	:

øþ

øþ


üþ	
øþ