o
    ¹iâ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 ƒs«J ‚t|d  	¡ d ƒs·J ‚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   úX/var/www/edux/Edux_v2/venv/lib/python3.10/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   sH  |   ¡ }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s¢J ‚d S )NTÚEr	   ÚFr   r   )r
   r   r   rK   rL   r   r   r   r   r   r   r   é
   é	   é   ÚIntCol)Údatar    r   Úint64©Úlevel)r&   r   r   r   r   r    r!   r"   r#   r%   r$   ÚlistÚrangeÚappendr   r9   )
Údf_mixed_floatsr+   r,   r   r-   r%   r$   r@   ÚsÚfr0   r0   r1   Útest_first_last_nth_dtypesƒ   s2   


r[   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   )rQ   ÚnansrQ   r   r   )r   r   r'   r(   Úobjectr   r*   r\   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   ÚeÚaaaarZ   r.   )r6   r`   rZ   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   üÿýrf   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s©J ‚|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ãw   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   ÚhamÚeggsÚporkgþI|î»ø?gçoB!²¿gHk:!4Àgn‹2d’Ý?gC8fÙ“Àà?g£W”†â?gV¿Òùð,ï¿gN'ÙêrŠð?gÃGÄ”H"é¿gû­(	‰æ?)ÚcolorÚfoodÚtwoÚonero   rp   F)rT   rG   r   rM   )éd   r   rR   r8   c                 S   s
   | j d S )Nr   )r)   )Úxr0   r0   r1   Ú<lambda>   s   
 ztest_nth.<locals>.<lambda>)Ú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   rg   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/30rd   )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-   rY   Ú	expected2ÚvÚbusiness_datesÚkeyÚexpected_datesr0   r0   r1   Útest_nthÅ   s¦   $
" " &$0
  
  ûûöÿ
í
ÿ$

0
"$&&&&""ÿr‘   c                 C   s0   |   ddg¡}| d¡}| ¡ }t ||¡ d S )Nr   r
   r   )r   r$   r   r"   r#   ©Ú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%   )rQ   Úexpected_firstÚ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   Ú20130101r   rž   )Úperiodsr–   )ÚgroupÚcategory_stringÚ
datetimetzr£   r`   r8   z
2013-01-03r•   )r¤   r¥   r	   r   r   r:   )r   rU   Úastyper   r†   r‡   r;   r   ÚCategoricalr9   r   r   r"   r#   )r3   ÚtsÚalphar¤   r+   r/   r-   r0   r0   r1   Útest_first_last_tz_multi_column“  s"   	ýÿ
ÿüù	rª   r?   TFÚbooleanÚ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^   Úaggr#   )	r?   r®   r+   r,   r@   Úexpected_seriesÚexpected_frameÚresult_seriesÚ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   )rr   rr   rr   rq   rr   rr   rr   rq   rq   rq   rr   )Údullr·   Úshinyr·   r·   r¸   r¸   r·   r¸   r¸   r¸   ©r   r
   r   r   r
   r   r   )r·   r·   r·   r·   )r   r   r   r   )rr   rq   rr   rq   ©Únamesr:   )r   r   r$   r   Úfrom_arraysr"   r#   r’   r0   r0   r1   Ú test_nth_multi_index_as_expectedË  s    åÿ+

þþr½   zop, n, expected_rowsÚheadr   r{   Ú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/   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	   ©ÚaxisrÀ   )rÁ   rÂ   Ú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.   Úresult1Ú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`   r   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   rs   )r	   r6   é2   r	   r6   )r   r`   éÈ   )r   ra   é–   )r   r   r
   r   r   r   r7   g      Y@r`   g      i@r   r
   r   r   rd   r   r   r   g      I@ra   g     Àb@)r   r'   r(   r   r$   r   r"   r#   rÏ   r0   r0   r1   Útest_nth_column_orderc  s   $þ"ÿ"ÿrÔ   r   )Nr   rx   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   rd   )	r   r'   r(   rU   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   ÚNaT)r6   r7   r`   r6   r7   r    r8   )r£   r˜   Ú
categoriesr£   r   )r6   r`   r6   rÎ   )r˜   rÛ   )r   rØ   rÙ   r   )r   r'   Ú
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   )rs   rs   rÒ   rs   rs   )ÚappleÚorangeÚmangorá   rà   )ÚjupiterÚmercuryÚmarsÚvenusrå   )r   r
   r   r   r   r    r   r
   )Úby)rß   rá   rá   )râ   rä   rå   )râ   rä   rã   rå   )r   r   ))r	   rs   )r	   rÒ   )r   rs   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r"t|| ƒdƒ}nt|| ƒƒ }t ||¡ d S )NÚy)r   r   r   r   r   r:   r   rS   r$   r   )r   r   r;   r"   r^   )r3   r=   r-   rQ   r/   r0   r0   r1   Ú%test_groupby_last_first_nth_with_none¶  s   
þýrê   zarg, expected_rows)r   r	   r   r   rg   )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	   rg   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   ƒ d S 1 sw   Y  d S )NzInvalid indexry   g…ëQ¸	@)rƒ   r„   Ú	TypeErrorr$   ©rî   r0   r0   r1   Ú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 stepry   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	   rk   )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   r   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_columnsrk   ©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   ÚABCDEr   rû   r	   rÆ   c                    s   ˆ   t| |ƒ¡S rì   )r$   rò   ©r|   Ústop©Úgbr0   r1   ru   '  s    z2test_nth_slices_with_column_axis.<locals>.<lambda>c                    s   ˆ j | |… S rì   )r$   rþ   r   r0   r1   ru   (  s    )rü   r    )r   rV   rU   r   r"   r#   )r|   rÿ   Úexpected_valuesÚ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$   Ú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ƒ   Úpandasr†   r   r   r   r   r   r   Úpandas._testingÚ_testingr"   r2   ÚmarkÚparametrizerA   rB   rI   r(   r]   rJ   r[   r_   rf   r‘   r”   r   rª   r<   rŠ   Ú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>   s0    0



þþûþ#|	
ý
ý
ýõ


ýù


þú	

þúîîþ
1þþ
üþ	:

øþ

øþ


üþ
	øþ