o
    թZhn                     @   s6  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d%d& Zd'd( Zd)d* Zd+d, Zd-d. Z d/d0 Z!ejd1d2ge	d3d4d5d6gd7d2ge	d3d4d5d6gd7d2ge	d3d4d5d6gd7fg d8e	d9d:d5e	d3d4d5e	d;d<d5gg d=d7d2d>ge	d9d:d5e	d3d4d5gd6d?gd7d2d>ge	d;d<d5e	d3d4d5gd@d?gd7fgdAdB Z"ejdCde	dDdEd5dgde	dFdEd5dGggdHdI Z#ejdJej$dKdLgdMdej$d6d?gdNde%dOdPgej&d6d?gdQdRgejdSg dTdUdV Z'dWdX Z(ejdYdZdd gfdZd g fdZd6d d?gfdZd[g d\fd]dd6gfd]d g fd]d6d6d?gfd]d[g d\fgejd^dg d2gd>gd2d>ggejd_dKdLgd`da Z)ejdbdZdd gfdZd g fdZd6d d?gfdZd[g d\fd]dd6gfd]d g fd]d6d6d?gfd]d[g d\fgdcdd Z*dedf Z+dgdh Z,didj Z-ejdkg dldmdn Z.ejdkg dldodp Z/dqdr Z0dsdt Z1ejdg dudvdw Z2ejdxe3dd@d?g dyge3ddzg d{ge3dd?e3dzdgg d|gd d6e3dzdgg d|ggd}d~ Z4dd Z5dd Z6dd Z7dd Z8dd Z9dd Z:ejdddg de;dfdd6d d@ge;dfddg de;dfddg de;dfd6dg de;dfd6dd6ge;d>fddd?dge;dfdd?dge;dfgejddd
gdd Z<ej=ddd Z>dd Z?ejddGdGgdGdgfejdkg ddd Z@ejde	de	dfdgdd ZAd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< |  d}t|d  d sJ t|d 	 d sJ t|d dj
d sJ 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copynpnanr   r   	set_index)dfgroupedr   expectedr$   r%   gresult r0   \/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/groupby/methods/test_nth.pytest_first_last_nth   sH   




$
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_objectB   s    
rA   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 )Nr4   r	   r   r   r5   r6   r   r   r   r$   r&   r"   r#   )r    r=   r+   r>   r/   r-   r0   r0   r1   test_nth_with_na_objectT   s
   

$rC   c                 C   s>   t dgd gd}|jddd}t||  }t|| d S )Nr6   idvaluerE   Fas_index)r   	from_dictr   r;   r"   r#   )r3   r+   r>   r/   r0   r0   r1   test_first_last_with_None^   s   rJ   zdf, expectedr6   r   rD   rF   rE   r   r:   r8   c                 C   s"   t |d|  }t|| d S )NrE   )r;   r   r"   r#   )r3   r+   r-   r/   r0   r0   r1   "test_first_last_with_None_expandedi   s   rK   c                  C   s
  t g dg dtjddtjtjddddd} 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|| d S )N)r   r   r   r   r   r   r   r   )onerL   twothreerM   rM   rL   rN   r      Zfloat32r8   r   r
   r   r   TEr	   Fr   r   )r
   r   r   rQ   rR   r   r   r   r   r   r   )r   r(   randomdefault_rngZstandard_normalr<   r   r   r   r   r    r!   r"   r#   r%   r$   r&   )r+   r,   r   r-   r%   r$   r0   r0   r1   test_first_last_nth_dtypes}   s.   

rU   c                  C   sX   t td} | d ttd| dd}|jdksJ |jdd }|jdks*J d S )	N
   	      ZIntCol)datar    r   int64r   level)listrangeappendr   r9   r   r   )r@   serfr0   r0   r1   test_first_last_nth_dtypes2   s   
rb   c                  C   s   t dgtd gtdd} | d}| dj}t|j | t|j	 | | j}t|j
d| t|j
d| d S )Nr   r8   )rY   nansrY   r   r   )r   r   objectr   r*   rc   r"   assert_series_equalr   r%   r$   )r+   r,   r-   r0   r0   r1   test_first_last_nth_nan_dtype   s   
rf   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aaaara   r.   )r6   rg   ra   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   rl   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  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  d S )Nr	   r   r   r   r   r
   r   r   r   r   r   r   r   )r   r(   r)   r   r"   r#   r$   r&   r   re   r
   r+   gbr0   r0   r1   test_nth   s   $
 (   $rq   c               
   C   s   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|| d S )Ngreenredr   r	   r   r   r   ZhameggsZporkgI|?goB!gHk:!4gn2d?gC8fٓ?gW?gV,gN'r?gGĔH"g(	?)colorfoodrM   rL   rv   rw   r   F)r\   rH   r   r   r   )r   r*   r   r$   r&   r"   r#   r   r+   r/   r-   r0   r0   r1   	test_nth2   s2   

ry   c                  C   s   t tjdddddd} | d }| d }|| }||dd	 }tj	||d
d |j
dks7J |j
dks>J ||dk jd }|jd |ksPJ |jd |ksYJ tjtdd |j|d
djddd W d    d S 1 sxw   Y  d S )Nr   r	   rV   )d   r   rZ   r8   r   c                 S   s
   | j d S )Nr   )r&   )xr0   r0   r1   <lambda>  s   
 ztest_nth3.<locals>.<lambda>F)Zcheck_nameszFor a DataFramematch)sortTr   )r   r(   rS   rT   Zintegersr   r   applyr"   re   r   r&   pytestraises
ValueErrorr$   )r+   r`   rp   r-   Z	expected2vr0   r0   r1   	test_nth3   s   "r   c                  C   s^   t dtjgddgddggddgd} | d}|jjdd	d
}| jjddg }t|| d S )Nr	   r   r   r   r   r
   r   r   allr   r   )	r   r(   r)   r   r
   r$   r&   r"   re   )r+   rp   r/   r-   r0   r0   r1   	test_nth4  s
   $
r   c                  C   s0  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 d  t|d
dg| jg d  t|g d| jg d  t|g d| jg d  t|dg| jdg  t|ddg| jg   d S )Nr	   r   r   r   r   r   r   r
   r   r   )r   r	   r   r   r   )r   r   r   r   r   r	   r   rt   )r   r	   r   r   )	r   r(   r)   r   r"   r#   r$   r&   r   ro   r0   r0   r1   	test_nth5  s   0
     r   c                 C   s   t jddd| d}td|ddgd}|jj|jjg}|j|d	d
g d}t g d	| }tdddg|d}t
|| d S )Nz4/1/2014z	6/30/2014r
   )startendfrequnitr	   r6   r7   r    r   FrG   )r   r   rm   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/30rj   )pd
date_ranger   r    yearmonthr   r$   to_datetimeas_unitr"   r#   )r   Zbusiness_datesr+   keyr/   Zexpected_datesr-   r0   r0   r1   test_nth_bdays*  s   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-   r0   r0   r1   test_nth_multi_grouperF  s   
r   z#data, expected_first, expected_lastr   z2012-02-01 14:00:00z
US/Centraltzr	   rE   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 )NrE   FrG   r   r   )r   r   r   r"   r#   r%   )rY   Zexpected_firstZexpected_lastr+   r/   r-   colsr0   r0   r1   test_first_last_tzO  s   6r   zmethod, ts, alphaz
2013-01-01
US/Easternz
2013-01-02r7   c           	      C   s   t tdd}tjddd|d}tg d||d}t|d	|  }ttj|d
g|j	d|t
dddgdtddgd	dd}|d j||d< t|| d S )NabccategoryZ20130101r   r   )Zperiodsr   r   r	   r	   r   )groupcategory_string
datetimetzr   rg   r8   z
2013-01-03r   )r   r   r	   r   r   r:   r   )r   r]   astyper   r   r   r;   r   ZCategoricalr9   r   r   dtr   r"   r#   )	r3   tsalphar   r   Zdtir+   r/   r-   r0   r0   r1   test_first_last_tz_multi_column  s&   	
	r   r?   TFbooleanZInt64z
2020-01-01z
2020-02-01r   )r   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"   re   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}| jg d }t|| d S )	N)r   r   r   r   r   r   r   r   r   r   r   )rL   rL   rL   rM   rL   rL   rL   rM   rM   rM   rL   )dullr   shinyr   r   r   r   r   r   r   r   r   r
   r   r   r
   r   r   rB   r   r0   r0   r1    test_nth_multi_index_as_expected  s   +
r   zop, n, expected_rowsheadr   r   tailr   rH   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   rG   )r   r   r&   r;   r"   r#   )	opnexpected_rowsr   rH   r+   r.   r-   r/   r0   r0   r1   test_groupby_head_tail  s   "
r   zop, n, expected_colsc                 C   s   t g dg dg dg dgg dd}d}tjt|d |jg d	d
d}W d    n1 s1w   Y  |jd d |f }t|| |}t|| d S )Nr   )r	   r   r   )r   r   r   )r   rO   rW   r   r   +DataFrame.groupby with axis=1 is deprecatedr}   r   r   r	   r	   Zaxis)r   r"   assert_produces_warningFutureWarningr   r&   r;   r#   )r   r   Zexpected_colsr+   msgr.   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}|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result2r0   r0   r1   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   r6   r7   rg   r   r6   rV   r7   rB   rx   r0   r0   r1   test_nth_emptyX  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	   r7   rz   )r	   r6   2   r	   r6   )r   rg      )r   rh      )r   r   r
   r   r   r   r   r   r   r   r   r   r(   r)   r   r$   r&   r"   r#   rx   r0   r0   r1   test_nth_column_orderd  s   $r   r   )Nr   r   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 )
Nr6   r7   r   r   r   r   rO   )r	   r   r   r   rW   r   r   r   r	   r   r   r   r+   r/   r-   r0   r0   r1   test_nth_nan_in_groupert  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 )	Nr6   r7   r   r5   r   r   r	   r   )r   r(   r)   r   r$   r&   r"   re   r   r0   r0   r1   test_nth_nan_in_grouper_series  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   rg   r6   r7   r   r8   )r   r   
categoriesr   r   )r6   rg   r6   r   )r   r   )r   r   r   r   )r   r(   Z
datetime64r   r   r   r   r   CategoricalDtyper   r    r"   r#   rx   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   )rz   rz   r   rz   rz   )appleorangemangor   r   )jupitermercurymarsvenusr   rP   r   r   r   r
   )Zby)r   r   r   )r   r   r   )r   r   r   r   )r   r   ))r	   rz   )r	   r   )r   rz   )names)r   r   r   r   r   r   r   r   from_tuplesr    r"   r#   rx   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   r[   r$   r   )r   r   r;   r"   re   )r3   r=   r-   rY   r/   r0   r0   r1   %test_groupby_last_first_nth_with_none  s   
r   zarg, expected_rows)r   r	   r   r   rm   )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	   rm   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 indexr}   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 stepr}   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	   rt   )r$   r(   r<   r&   r"   r#   )r   r   r/   r-   r0   r0   r1   test_np_ints  s   r   c                  C   s   t g dg dgddgg dd} d}tjt|d | j| jd	 d	d
}W d    n1 s/w   Y  |d}| jd d ddgf }t|| d S )N)r   r   r   )rO   rO   r   zr   )r   r
   r   r   r   r}   r	   r   r   r   )r   r"   r   r   r   r&   r$   r#   )r+   r   rp   r/   r-   r0   r0   r1   !test_groupby_nth_with_column_axis	  s   
r   c               	   C   s   t ttddtddgttddtddggg dg dg} tdtt| i| d	}|jddgd
dd}g d}t ttddtddgttddtddggg dg dg}t||dgd}t	
|| d S )Nr   r	   r   rV      )r   r   r   r	   r	   )r   r	   r	   r   r   colr:   F)r\   Zobservedr   r	   r   r   )r   r	   r   r   )r   r   ZCategoricalIndexZIntervalr   r^   lenr   r$   r"   r#   )Z
idx_resultZ	df_resultr/   Zval_expectedZidx_expectedr-   r0   r0   r1   test_groupby_nth_interval  s"   r   z.start, stop, expected_values, expected_columnsrt   ABCDEZADrW   r   ZABD)r	   r   r   ZBCEr   ZCErQ   callc           	         s   t tdgtdgd}d}tjt|d |jg ddd W d    n1 s)w   Y   fd	d
 fdd
d| | |}t |g|gd}t|| d S )Nr   r   r   r   r}   )r   r   r   r   r   r	   r   c                    s     t| |S r   )r$   r   r   stoprp   r0   r1   r|   H  s    z2test_nth_slices_with_column_axis.<locals>.<lambda>c                    s    j | | S r   )r$   r   r   r0   r1   r|   I  s    )r   r    )r   r^   r]   r"   r   r   r   r#   )	r   r   Zexpected_valuesZexpected_columnsr3   r+   r   r/   r-   r0   r   r1    test_nth_slices_with_column_axis2  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 )Nr6   r   r7   rg   XYr   r	   r   r   	r   r(   r)   r   r   r"   r#   r   r$   r+   r-   r/   r0   r0   r1   test_head_tail_dropna_trueO  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   rg   r   r   r   Fr   r	   r   r   r   r   r0   r0   r1   test_head_tail_dropna_falsec  s   &&r  	selectionrg   )r   r   Nc                 C   s   t g dtjddgg dd}|d|  }|jd|d}|d	ks,|d
kr1| ddgkr1ddg}nddg}|j|| f }t|| d S )Nr   r   r   )r   r   r   r   r6   r   r   r   r   r7   rg   r	   r   )r   r(   r)   r   r$   r   r"   Zassert_equal)r  r   r+   rp   r/   locsr-   r0   r0   r1   test_nth_after_selectionr  s   

r  rY   z2011-01-15 12:50:28.502376z2011-01-20 12:50:28.593448)l    m;-Ll    m;-Lc                 C   sJ   t ddg| d}|d}|d}t d| d gd}t|| d S )Nr	   r5   r6   r   )r   r   r$   r"   r#   )rY   r+   r,   r/   r-   r0   r0   r1   #test_groupby_nth_int_like_precision  s
   

r  )Bnumpyr(   r   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr"   r2   markZparametrizerA   rC   rJ   r)   rd   rK   rU   rb   rf   rl   rq   ry   r   r   r   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]   r   filterwarningsr   r  r  r  r0   r0   r0   r1   <module>   s`    2

	


!		








	


1
	4








	

