a
    Pf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 s`J t|d 	 d szJ 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/ai-form-bot/venv/lib/python3.9/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rD|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s6J |jdd }|jdksTJ 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snJ |j
dks|J ||dk jd }|jd |ksJ |jd |ksJ tjtdd( |j|d
djddd W d    n1 s0    Y  d S )Nr   r	   rV   )d   r   rZ   r8   r   c                 S   s
   | j d S )Nr   )r&   )xr0   r0   r1   <lambda>      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rR|| }|| }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 sb0    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     0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rDt|| 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    n1 s.0    Y  d S )NzInvalid indexr~   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 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^0    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    2
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 sR0    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  r}   z2test_nth_slices_with_column_axis.<locals>.<lambda>c                    s    j | | S r   )r$   r   r   r0   r1   r|   I  r}   )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    0

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sX|d
krb| ddgkrbd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/   Z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







	


