o
    5cB                     @   s(  d Z ddlmZ ddlZddlZddlmZmZ ddl	Z
ddl	mZmZmZmZmZmZmZ ddlmZ ddlmZ ddlmZ ddlm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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.d1d2 Z/d3d4 Z0d5d6 Z1d7d8 Z2d9d: Z3ej45d;d<d=d>d? fd@d=dAd? fdBdCdDd? fdBdEdFd? fgdGdH Z6ej45dId<d@gej45dJdKdLgej45dMdNgdO ej7dPeej7gdO dQdRfdNgdO dSgdT  dUgdU ej7g dUgdV  dPg dWej7gdX  dYdZg dYdZd[ej7d\d]d^d_d`dadYdZgg dbej7gdX  dYdcg dYdcdZej7dddedfdgdhd[dYdcgdifgdjdk Z8ej4j9ej45d;d<d=dld? fd@d=dmd? fdBdCdnd? fdBdEdod? fgdpdq Z:drds Z;ej45dtdSeg dudSdRfdSdvgeg dug dudwfgej45dxg dydzd{ Z<d|d} Z=ej45d~dLdKgej45ddLdKgej45dg dej45dddej7ej7ddddddgfddej7ej7ddej7ddej7gfddddddddej7ej7gfddej7ddej7ddej7ej7gfgdd Z>ej45dddgdd Z?ej45ddLdKgej45ddej@dej4jAdddgej45dddgej45dg dej45dddgdd ZBej45dddddej7dddgfdddddddej7gfgdd ZCej45dejDejEgdd ZFdd ZGej45deHeIejHejIddgdd ZJej45dddgdT dgdX  dg fddgdT dgdX  dg fgdd ZKej45dg ddd ZLej45dg dej45dddedgfgdd ZMdd ZNej45deg deOddg ddeg dg ddgddĄ ZPddƄ ZQddȄ ZRddʄ ZSdd̄ ZTdd΄ ZUddЄ ZVej45ddgddggddՄ ZWddׄ ZXej4Ydءddڄ ZZdd܄ Z[ej4Ydءddބ Z\ej45dej]dKg dfdd? dKe^fej]dLg dfdd? dLdej7dYdej7gfgej45ddgddggej45ddLdKgdd Z_dS )z test with the .transform     )StringION)ensure_platform_intis_timedelta64_dtype)Categorical	DataFrame
MultiIndexSeries	Timestampconcat
date_range)"maybe_normalize_deprecated_kernels)DataFrameGroupBy)get_groupby_method_argsc                 C   s   t | | dk  sJ d S )Ng-q=)npabsallab r   c/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/groupby/transform/test_transform.pyassert_fp_equal   s   r   c                  C   s  t tdd tdd} td}tj| | |} | dd }|dd }|d dks4J ttjd	d
d	ddddgg dd}g d}|
 |dd | }||dd | }t|| dd }ttjddg dg dd}	g d}|	||| }|	j|dd|| }t|| t }|tjdd}
|
dd  ttddtdd }|dt}tdtdi}t|| d S )!N	      indexc                 S   s   | d S )Nr   r   xr   r   r   <lambda>'       z test_transform.<locals>.<lambda>c                 S   s   | |    S N)sumr   r   r   r   r   )                int64dtype   r   r   )r   r)      columnsr   r   r   r*   c                 S      | |    S r    meanr   r   r   r   r   6   r"   c                 S   r.   r    r/   r   r   r   r   r   :   r"   c                 S   r.   r    r/   )arrr   r   r   demean=   s   ztest_transform.<locals>.demean   )r   r   cde)JoeSteveWesJimTravis)onetwor<   r=   r<   F
group_keysM)freqc                 S   s   | d S Nr*   r   r   r   r   r   r   M   r   
   r   )r   r   arangerandomshufflereindexgroupby	transformr   reshape
sort_indexr0   tmassert_frame_equalrandnapplymakeTimeDataFramepdGrouperrangemax)datar   groupedtransformeddfkeyexpectedresultr2   peoplegr   r   r   test_transform    sH   

 
r^   c                  C   s  t tdd tjdd} | dd }t| jt	|
 j}t|| jdd}|tj}t|| |d}t|| t g dg d	td
dg ddg dd} | dd}td
tdtdtdg}t g d|g ddg dd}t|| | dddg d}|ddg }t|| t g dg dgg dd} | dd}| jddd}t|| d S )Ni r   )idvalr_   r`   r   namer0   )r   r*   r*   r   )皙? @g@      @2014-1-12014-1-4r*   r)   r      )groupingfr5   i)rj   rk   rl   r5   r,   rj   first2014-1-2)rc   rd   rd   re   )r*   r)   r)   ri   )rk   r5   rl   )rk   rl   r5   rk   rl   r*   r)   r   )ri   r3   r%   )r]   r   r   r]   r*   axis)r   r   rD   rE   rN   rH   repeatr0   valuesr   countr   r   rI   rL   assert_series_equalr   r	   rM   drop)rX   grprt   rZ   r[   datesr   r   r   test_transform_fastV   sD    
	rz   c           
      C   sD  | dd }|tj}t|j|j |D ]\}}t||j|  q|  dd }|tj}t|j| j |D ]\}}| }||j}| D ]}t|| ||  qNq>| j ddddddd}|tj}t|j| j t|j	| j	 |D ] \}}|d}|j|j	d}|jD ]}	t|
|	||	  qqd S )	Nc                 S      | j S r    monthr   r   r   r   r          z*test_transform_broadcast.<locals>.<lambda>c                 S   r{   r    r|   r   r   r   r   r      r~   r   r*   ABCDrq   rm   )rH   rI   r   r0   rL   assert_index_equalr   r   rG   r,   xs)
tsframetsrV   r[   _gpaggedrescolidxr   r   r   test_transform_broadcast   s2   

r   c                 C   s   t |}|dkrd}| jtjj|d |dkrtnd }tddgddgd	d
gdddgd}t||}t	
|( |jg dddj|g|R  }|jg dj|g|R  j}W d    n1 sdw   Y  |dv rv|d d|d< t	|| d S )Nngroupz ngroup fails with axis=1: #45986reasontshiftr*   r)   r   ri   r3   r%   r   r   r4   r   yr   r-   rq   )diffshiftr   r&   )r   node
add_markerpytestmarkxfailFutureWarningr   r   rL   assert_produces_warningrH   rI   Tastypeassert_equal)requesttransformation_funcmsgwarnrX   argsr[   rZ   r   r   r   test_transform_axis_1   s   $
 "r   c                 C   s  |dv rt jjdd}| j| |dkrt}d}n|dv r#t}d}nd }d}td	d
gddgddgdddgd}tj||d |j	g dd	d
|}W d    n1 sWw   Y  |dkrbtnd }tj|dd |j	g d
|j}W d    n1 sw   Y  t|| d S )N)corrwithidxmaxidxminr   nthz&transform incorrectly fails - GH#45986r   madThe 'mad' method is deprecated)semstd!The default value of numeric_only r*   r)   r   ri   r3   r%   r   r   r   r   matchr-   rq   )r   r   r   r   r   r   r   rL   r   rH   rI   r   r   )r   reduction_funcmarkerr   r   rX   r[   rZ   r   r   r   test_transform_axis_1_reducer   s(   $r   c           	      C   s`  | j dd }t|j}t|j}ttj|||j|jdd}|}|jdd dd}||	d	 }|
d
d }t|| |j}|jdd ddd}||	d	 }|
dd }t|| |j ddgttdt|  }|jdd dd}||	d	 }|
dd }t|| |j}|jdd ddd}||	d	 }|
dd }t|| d S )Nr   r3   float64)r   r,   r(   c                 S      |   S r    weekdayr   r   r   r   r      r   z(test_transform_axis_ts.<locals>.<lambda>Fr>   r0   c                 S   r.   r    r/   r   r   r   r   r      r"   c                 S   r   r    r   r   r   r   r   r      r   r*   )rr   r?   c                 S      | j | d j S rB   r   r0   r   r   r   r   r          r)   c                 S   r   r    r   r   r   r   r   r      r   c                 S   r.   r    r/   r   r   r   r   r      r"   c                 S   r   r    r   r   r   r   r   r      r   c                 S   r   rB   r   r   r   r   r   r     r   )iloclenr   r,   r   r   rE   rN   rH   rI   rO   rL   rM   r   listrS   )	r   baserr4   tsor   rV   r[   rZ   r   r   r   test_transform_axis_ts   s4   

 r   c                  C   sD   t ddgddgg} | dd}t dgdgg}t|| d S )Nr*   r   r)   r0   g      ?r   rH   rI   rL   rM   rX   r[   rZ   r   r   r   test_transform_dtype  s   r   c                  C   sZ   t tdtdd} | dd dd }ttjddd	d
ddd}t|| d S )N20130101r3   r   r   r   r   c                 S      | j ddS )NF)	ascending)rankr   r   r   r   r     r"   z$test_transform_bug.<locals>.<lambda>r   )stepr   )rb   r(   )	r   r	   r   rD   rH   rI   r   rL   rv   r   r   r   r   test_transform_bug  s   r   c                  C   s   t ddgdd} tddgddgd}|d	jd
d }t||  tddgddgd}|d	jdd }t||  d S )NTr   rb   rc   g@r*   r)   r   r   c                 S      dS NTr   r   r   r   r   r         z3test_transform_numeric_to_boolean.<locals>.<lambda>c                 S   r   r   r   r   r   r   r   r   "  r   )r   r   rH   r   rI   rL   rv   )rZ   rX   r[   r   r   r   !test_transform_numeric_to_boolean  s   r   c                     s   t tdtdd} ttdtd gd dd}| d d  | dd  fdd  }t|| | dd d	d }t|| d S )
Nr   r3   r   r   r   r   c                    s   |   |     S r    rT   minr   	base_timer   r   r   /      z6test_transform_datetime_to_timedelta.<locals>.<lambda>c                 S   s   |   |   S r    r   r   r   r   r   r   5  s    )	r   r	   r   rD   r   rH   rI   rL   rv   )rX   rZ   r[   r   r   r   $test_transform_datetime_to_timedelta&  s   r   c                  C   s   t dtddddd} | djdd	 }td
dgdd}t|| t dtddddd} | djdd	 }tddgdd}t|| d S )Nr*   z
2015-01-01r)   r   periodsrA   r   r   c                 S      | j j| j j  S r    )dt	dayofweekr0   r   r   r   r   r   >  r   z4test_transform_datetime_to_numeric.<locals>.<lambda>            ?r   r   c                 S   r   r    )r   r   r   r   r   r   r   r   G  r   r   )r   r   rH   r   rI   r   rL   rv   r   r   r   r   "test_transform_datetime_to_numeric9  s   r   c                  C   st   d} t jt| ddgdgd}|dd dd }t|js"J |ddg dd	d }t|jjs8J d S )
NaE  
    idx     A         ID3              DATETIME
    0   B-028  b76cd912ff "2014-10-08 13:43:27"
    1   B-054  4a57ed0b02 "2014-10-08 14:26:19"
    2   B-076  1a682034f8 "2014-10-08 14:29:01"
    3   B-023  b76cd912ff "2014-10-08 18:39:34"
    4   B-023  f88g8d7sds "2014-10-08 18:40:18"
    5   B-033  b76cd912ff "2014-10-08 18:44:30"
    6   B-032  b76cd912ff "2014-10-08 18:46:00"
    7   B-037  b76cd912ff "2014-10-08 18:52:15"
    8   B-046  db959faf02 "2014-10-08 18:59:59"
    9   B-053  b76cd912ff "2014-10-08 19:17:48"
    10  B-065  b76cd912ff "2014-10-08 19:21:38"
    z\s+r   DATETIME)sep	index_colparse_datesID3c                 S   r   r    r   r   r   r   r   r   b  r   z(test_transform_casting.<locals>.<lambda>c                 S   r   r    r   r   r   r   r   r   e  r   )rQ   read_csvr   rH   rI   r   r(   r   )rU   rX   r[   r   r   r   test_transform_castingN  s   r   c                 C   s4   |  dd dd g}|dd  |tj d S )Nc                 S   r{   r    )yearr   r   r   r   r   j  r~   z)test_transform_multiple.<locals>.<lambda>c                 S   r{   r    r|   r   r   r   r   r   j  r~   c                 S   s   | d S Nr)   r   r   r   r   r   r   l  r   )rH   rI   r   r0   )r   rV   r   r   r   test_transform_multiplei  s   r   c                 C   s\   | d d d  | j}|dd }|jdd}dd }|dd |}t|| d S )Nr3   c                 S   r{   r    r|   r   r   r   r   r   s  r~   z)test_dispatch_transform.<locals>.<lambda>padmethodc                 S   r   )Nr   r   fillnar   r   r   r   r   v  r"   c                 S   r{   r    r|   r   r   r   r   r   w  r~   )rG   r   rH   r   rI   rL   rM   )r   rX   rV   filledfillitrZ   r   r   r   test_dispatch_transformp  s   r   c              	      s^  t g dddtjddtjdgdtddd	}td
kr(dd }dd n<dkr5dd }dd n/dkrFdd }d  fddndkrXd}| jtjj	|d nfdd}fdd||
d}|dg jdd |dg jdd  |dg jd d g}tfdd|D  }||j}d v rt|| d S t|| d S )!N)foor   r   r   barr   bazr*   r)   r   ri   r   z
2020-01-01z
2020-01-07r   cumcountc                 S   
   |  dS )Nr   rI   r   r   r   r   r        
 z4test_transform_transformation_func.<locals>.<lambda>c                 S   s   t tt| | jS r    )r   rS   r   r   r   r   r   r   r     r   r   c                 S   s   | j dddS )Nr   r   valuer   r   r   r   r   r         c                 S   r   )Nr   r   r   r   r   r   r   r     r"   r   c                 S   r   )Nr   r   r   r   r   r   r     r   r   c                    s    d7  t  | jdS )Nr*   r   )r   r   r   )counterr   r   mock_op  s   z3test_transform_transformation_func.<locals>.mock_opr   zkCurrent behavior of groupby.tshift is inconsistent with other transformations. See GH34452 for more detailsr   c                    s
   |   S r    r   r   r   r   r   r     r   c                    s   t |   S r    )getattrr   r  r   r   r     r"   r   r   r%   c                    s   g | ]} |qS r   r   ).0r]   )r   r   r   
<listcomp>  r   z6test_transform_transformation_func.<locals>.<listcomp>r   r   )r   r   nanr   r   r   r   r   r   r   rH   r   r
   rK   set_axisr   rL   rv   rM   )r   r   rX   test_opr   r[   groupsrZ   r   )r   r   r   r   "test_transform_transformation_func{  s<   

:r
  c                 C   sP   dd }|  dddg |}| ddg }| | d |}t|| d S )Nc                 S   r   r    r/   r   r   r   r   r     r   z/test_transform_select_columns.<locals>.<lambda>r   r   r   )rH   rI   rL   rM   )rX   rk   r[   	selectionrZ   r   r   r   test_transform_select_columns  s
   r  c                 C   s   g d| _ i }| d}|d }tjtdd |dd |d< W d    n1 s+w   Y  |d d |d< t|jts@J t|t	sGJ |d t
j|d< t|}tjtdd | dd	d }W d    n1 sqw   Y  t|| d S )
N)r   r   r   r   r   r   Dropping invalid columnsr   c                 S   
   t | S r    r   r0   r   r   r   r   r     r   z1test_transform_exclude_nuisance.<locals>.<lambda>r   c                 S   r  r    r  r   r   r   r   r     r   )r,   rH   rL   r   r   rI   
isinstanceobjr   r   r   r0   rM   )rX   rZ   rV   gbcr[   r   r   r   test_transform_exclude_nuisance  s    

r  c                 C   s   d}t jt|d | dd}| dtj}W d    n1 s%w   Y  t || | dd d}| dd tj}t || d S )Nr   r   r   r0   r   )	rL   r   r   rH   rI   r   r0   rM   rv   )rX   r   r[   rZ   r   r   r   test_transform_function_aliases  s   r  c                  C   sh   t tjdddgtddd} | dd d}tjtd	td	tdg}t	|dd
}t
|| d S )Nr*   r   rf   rg   )rj   r5   rj   r5   rn   ro   r   )r   r   r  r   rH   rI   rQ   NaTr	   r   rL   rv   )rX   r[   ry   rZ   r   r   r   test_series_fast_transform_date  s   r  c                  C   s   t g ddddtjgd} tdgd }dd	 }| d
td | d
d t| d
|d | d
d |g}|D ]
}tj||dd qAd S )Nr*   r*   r)   r)   r*   r)   r   )col1col2      @ri   c                 S   r  r    )r   nansumr   r   r   r   nsum  s   
z#test_transform_length.<locals>.nsumr  r  F)check_names)	r   r   r  r   rH   rI   r!   rL   rv   )rX   rZ   r  resultsr[   r   r   r   test_transform_length  s   r  c                  C   s   t g dg dd} | d}|tj}d}tjt|dd |dd	 }W d    n1 s2w   Y  t|| td  |d
d	 }W d    n1 sTw   Y  t|| d S )N)r   r   r   r   )r   r*   r   ri   r   r   zwill return a scalar meanF)r   check_stacklevelc                 S   r  r    r  r   r   r   r   r     r   z)test_transform_coercion.<locals>.<lambda>c                 S   s   t j| ddS )Nr   rq   r  r   r   r   r   r     r   )	r   rH   rI   r   r0   rL   r   r   rM   )rX   r]   rZ   r   r[   result2r   r   r   test_transform_coercion   s   
r"  c               	   C   s  t g dtdddtg ddddd} tjdd	) tjtd
d | ddd }W d    n1 s8w   Y  W d    n1 sGw   Y  t tj	tg dddd}t
|| t g ddg ddd} tjdd	) tjtd
d | ddd }W d    n1 sw   Y  W d    n1 sw   Y  t tj	g dd}t
|| tg d}t g dd|dd} tjdd	) tjtd
d | ddd }W d    n1 sw   Y  W d    n1 sw   Y  |jdd }||  |  }|jdd }||  |  }t tj	t||gd}t
|| tjtd
d | ddd }W d    n	1 sMw   Y  t dg dd}t
|| d S )N)r*   r*   r*   r)   r)   r)   r*   r   r'   r*   r)   r   r*   r)   r   r   r   ignore)r   r  r   r   c                 S      | |    |   S r    r0   r   r   r   r   r   r   %  r   z1test_groupby_transform_with_int.<locals>.<lambda>)r   r   r*   r   r   r*   )r   r   c                 S   r%  r    r&  r   r   r   r   r   8  r   )                    ?r'  r(  r)  )r)   r   ri   rC   r3   r   c                 S   r%  r    r&  r   r   r   r   r   C  r   r   r   r%   c                 S   s   | d d S r   r   r   r   r   r   r   N  r"   r)  )       @r  g      @      $@      @r'  )r   r   r   errstaterL   r   r   rH   rI   r  rM   r   r0   r   r
   )rX   r[   rZ   ss1s2r   r   r   test_groupby_transform_with_int  sr   
r1  c                  C   sp   t tdddddtjdddddg
d} | | jd t}td	d	d
dtjdddddg
dd}t	
|| d S )NrC   r*   r)   r   ri   r3   r   r   r)  r*  r        @      "@r   )r   rS   r   r  rH   r   rI   rT   r   rL   rv   r   r   r   r   %test_groupby_transform_with_nan_groupS  s   ("r4  c                  C   s   t g dg dg} tg dtg ddtddd| d	}d
d }|d}||}|d jtj	ks9J t
dd  |D ]\}}||}t||j|  qBW d    d S 1 s_w   Y  d S )Nr   r   r   r*   r*   r*   r#  )r)  r)  r)  r*  r*  r*  r   r)   r)  g      @)r5   r4   vr   c                 S   s   | d d | d< | d d S )Nr5   r)   r]   r*   r   )groupr   r   r   rk   f  s   z$test_transform_mixed_type.<locals>.fr4   r5   zmode.chained_assignment)r   from_arraysr   r   tilerD   rH   rO   r(   r   rQ   option_contextrL   rM   loc)r   rX   rk   rV   r[   rY   r7  r   r   r   r   test_transform_mixed_type[  s$   
	

"r<  zop, args, targopcumprodr   c                 C   r   r    r=  r   r   r   r   r   y  r   r   cumsumc                 C   r   r    r?  r   r   r   r   r   z  r   r   )r   c                 C   r   Nr   r   r   r   r   r   r   {  r   )r*   c                 C   r   r    rB  r   r   r   r   r   |  r   c                 C   s   t tjd}| }tj|jdd< tjjddddt	}||fD ](}|
||}t||
|j| g|R   t|t|
|| |  q$d S )N  r)   rC   r   2   size)r   r   rE   rN   copyr  r   randintr   floatrH   rI   rL   rv   r  )opr   targopr.  	s_missinglabelsrU   rZ   r   r   r   test_cython_transform_seriesv  s    rN  rJ  skipnaFTz
input, expr   rC   )rY   r   r   r   r   r)   r      )r  r3        ;@r#   r  r3  rQ  g     @T@g     `n@g     Ȇ@g     @g     @g    8@)r  r2  r3  r2  g      (@g      .@g      2@g      5@g      8@))r=  F)r=  T)r?  F)r?  Tc                 C   sX   t |}|dd j| |d}t|tr|| |f }n|}t|dd}t|| d S )NrY   r   )rO  r   )r   rH   rI   r  dictr   rL   rv   )rJ  rO  inputexprX   r[   rZ   r   r   r   test_groupby_cum_skipna  s   .
rU  c                 C   r   r    r>  r   r   r   r   r     r   c                 C   r   r    r@  r   r   r   r   r     r   c                 C   r   rA  rB  r   r   r   r   r     r   c                 C   r   r    rB  r   r   r   r   r     r   c                 C   sN  t tjd}| }tj|jdd< tjjddddt	}t
d}|d d  }tj|d< t||g d	d
 tdddtjdddd|d |d dg dd}|d d|d< | }	ttdtdg|	_||	fD ]5}d|iddiddifD ]&}
|jd&ddi|
}| dkr|  | dkrd|
vr|dg |}|ddg |}t||gdd}n||}|jdd}| dkrd nt}d}tj||d  |j| g|R  jdd}W d    n1 sw   Y  t|| tj||d  t|| | jdd}W d    n	1 sw   Y  t|| |D ]}|d!vr{| dkr{|d"kr3| d#ks{d$g d%}tj t!|d  || |  W d    n	1 sTw   Y  tj t!|d  t|| |   W d    n	1 stw   Y  q|| |}||_"t#||| j| g|R   t#|t|| | |  qq|qnd S )'NrC  r)   rC   r   rD  rE  qwertyuiopasdfghjklzr3   )r*   r*   r*   r*   r)      z1990-1-1r   r*   r.  )rA   r   )rI  float_missingintdatetime	timedeltastringstring_missingrm   r]  categorycatd   bylevelr?   Fr   rZ  rI  rY  rq   r   r   )rI  rZ  rY  r\  r?  |)zdoes not support .* operationsz$.* is not supported for object dtypez!is not implemented for this dtyper   )$r   r   rE   rN   rG  r  r   rH  r   rI  r   r   r   rQ   timedelta_ranger   from_productrS   r   rH   _set_group_selectionrO   r
   rK   r   rL   r   rI   rM   r  joinr   raises	TypeErrorrb   rv   )rJ  r   rK  r.  rL  rM  stringsstrings_missingrX   df2	gb_targetgbrl   rk   rZ   r   r   r[   r4   r   r   r   test_cython_transform_frame  s   


	

rp  c                  C   s|   t g d} ttjddd| g dd}d}tjt|d |j	ddd	
d
d  W d    d S 1 s7w   Y  d S )N))synr   )misr   )nonr   )rq  r   )rr  r   )rs  r   )rq  r   )rr  r   )rs  r   )rq  G)rr  rt  )rs  rt  r*   rC   )ri   r$   )r   r   rt  r   r+   z5transform must return a scalar value for each group.*r   )rr   rc  c                 S   s   | j | jddddS )Nr*   rq   r   )divr!   )zr   r   r   r   G  s    z6test_transform_with_non_scalar_group.<locals>.<lambda>)r   from_tuplesr   r   rE   rH  r   ri  
ValueErrorrH   rI   )colsrX   r   r   r   r   $test_transform_with_non_scalar_group/  s   "rz  zcols,expected)r*   r*   r*   r4   )r   r4   agg_func)ru   r   rF  c                 C   s|   t tdddtdtddd}|d|  |}|dkr%|d	}n|d
kr6| ddgkr6|d d }t|| d S )N
2018-01-01r   rX  r#   rC   r   r   r   rI  rF  r   r4   )	r   r   rS   rH   rI   r   renamerL   r   )ry  rZ   r{  rX   r[   r   r   r   test_transform_numeric_retJ  s   r~  c                  C   s   ddgdt dgddgdt dgg} t| ddgd}|dd	}tdg d
i}t|| |dd d	}tg d
dd}t|| d S )Nr   r(  r  r   r)  rY   rt   rm   ffill)r(  r(  r)  r)  r   )rI  r   rH   rI   rL   rM   r   rv   )rU   rX   r[   rZ   r   r   r   test_transform_ffilld  s   $r  mix_groupings	as_seriesz	val1,val2))r   r   )r*   r)   )r)  r*  zfill_method,limit,exp_valsr  val1val2r*   bfillc                 C   s0  t jt j|t jt j|t jt jg}t|}t|D ]\}	}
|
dkr%|||	< q|
dkr-|||	< q| rEddgt| }dd }||}||}ndgt| dgt|  }|d }|d }t||d}|rt|d	d
 ||d}t|d
d}t	
|| d S t|d	||d}td
|i}t	|| d S )Nr  r  r   r   c                 S   s    g }| D ]	}| ||g q|S r    )extend)list_objtempr   r   r   r   
interweave  s   z+test_group_fill_methods.<locals>.interweaver)   )rY   r`   rY   r`   limitr   )r   r  r   	enumerater   r   r  rH   r   rL   rv   rM   )r  r  r  r  fill_methodr  exp_valsvals	_exp_valsr   exp_valkeysr  rX   r[   rT  r   r   r   test_group_fill_methodsp  s0    

r  r  c                 C   st   dgd }t jgd dgd  }| dkr|d d d }t||d}|jddd	}t|d|  }t|| d S )
Nr      rC   r*   r  r   r   r   r   rq   )r   r  r   rw   r  rH   rL   rM   )r  r   r   rX   rZ   r[   r   r   r   test_pad_stable_sorting  s   
r  test_seriesrA   r   z7GH#23918 before method uses freq in vectorized approachr   )marksr   r   )r  r  Nr  c              
   C   s   dt jt jt jddddt jdg
}ddg}t |t|}t||d d}|}	|d ur6t|d	||d
}	|	|j}
|
d j|
d 	| d }| rb|d	d j
||||d}t|| d S |d	j
||||d}t||d d S )Nr   r*   r)   ri   rC   r   r   )rY   r  rY   r  r  )r   r  r  rA   )r   r  rs   r   r   r  rH   rY   r  r   
pct_changerL   rv   rM   to_frame)r  rA   r   r  r  r  r  key_vrX   df_grx   rZ   r[   r   r   r   test_pct_change  s$    
r  zfunc, expected_statusshrtlngntrlc           	      C   s   t g d}g d}dtjdtjddtjg}t|||d}|ddg}t|dd	 |  }tj	t
t||g ddgd
}t||d	d}t|| d S )N)r|  r|  r|  r|  
2018-01-02r|  r  )MSFTr  r  AAPLr  TSLAr  r  r  r  )datesymbolstatusr  r  r  )tuplesnamesra   )rQ   to_datetimer   r  r   	set_indexr  rH   r   rw  r   zipr   rL   rv   )	funcexpected_statusr  r  r  rX   r[   r   rZ   r   r   r   &test_ffill_bfill_non_unique_multilevel  s   	r  r  c                 C   s\   t ddgtjdgddggddgd}tdtjdgdd}|dd | }t|| d S )Nr   TrY   r`   rm   r   )r   r   r  r   rH   rI   rL   rv   )r  rX   rT  r   r   r   r   test_any_all_np_func  s   r  c                  C   sp   dd } t tdg dd}t dg di}|d| }t|| |dj| }t||d  d S )	Nc                 S   s6   | |    }t| tr|S |jdd |jD d}|S )Nc                 S   s   i | ]}|| d qS )	_demeanedr   )r  r4   r   r   r   
<dictcomp>!  s    zHtest_groupby_transform_rename.<locals>.demean_rename.<locals>.<dictcomp>rm   )r0   r  r   r}  r,   )r   r[   r   r   r   demean_rename  s
   
z4test_groupby_transform_rename.<locals>.demean_renameababa)r*   r*   r*   r)   r)   )r7  r   r   )UUUUUUտr   r  r   gUUUUUU?r7  )r   r   rH   rI   rL   rM   r   rv   )r  rX   rZ   r[   result_singler   r   r   test_groupby_transform_rename  s   
r  rn   lastc                 C   sd   t jdddd}t|gdgd}|dj| |d< t|d|ggg d	d
}t|| d S )NnowT)utczAsia/Singaporer*   )end_timer_   r_   max_end_time)r  r_   r  rm   )	rQ   r  
tz_convertr   rH   r  rI   rL   rM   )r  r   r[   rZ   r   r   r   &test_groupby_transform_timezone_column.  s
   r  zfunc, valuesr   1/1/2011z1/3/2011z	1/10/2011r   z1/2/2011z1/9/2011c                 C   sn   t dddd}tdtdi|d}| j|d< ||d d | }tt	
||dd	}t|| d S )
Nr  rC   r   r   pricer+  r   week_id)rU   r   rb   )r   r   r   rD   isocalendarweekrH   rI   r   rQ   r  rL   rv   )r  rt   ry   stocksr[   rZ   r   r   r   %test_groupby_transform_with_datetimes8  s   	r  )r?  r=  cummincummaxc                 C   sT   dg}t d}dg}tt|||d}t|j|j|  }|j}t|| d S )Nr*   r)   r  )	rS   r   r   r  r   rH   r   rL   rv   )r  x_valsx_catsr   rX   r[   rZ   r   r   r    test_transform_absent_categoriesM  s   r  )r  r  r   zkey, val)rc  r   rb  c                 C   s>   t tjgg}t|jdi ||i|  }|}t|| d S )Nr   )r   r   r  r  rH   rL   rM   )r  rY   r`   rX   r[   rZ   r   r   r   test_ffill_not_in_axisZ  s   r  c                  C   s   t dg di} | g d}tjtdd |d W d    n1 s&w   Y  t|ds2J tjtdd |d W d    n1 sIw   Y  | d g d}tjtdd |d W d    d S 1 sow   Y  d S )Nr   )r   r*   r*   r)   )r   r   r   r4   znot a valid function namer   some_arbitrary_name	aggregate)r   rH   r   ri  rx  rI   hasattr)rX   r]   r   r   r   "test_transform_invalid_name_raisese  s   "r  r  r5  r%   r   )r   r   r   r   EFr   c                 C   s   |}|dkrt nd }|tddgd}|dkr)t|tr)| jtj	j
dd t||}tj|dd	 |j|g|R  }W d    n1 sIw   Y  t|j|j |d
vrg|jdkrgt|j|j ttt|jdd df dkszJ d S )Nr   r   r*   r   r   z&TODO: implement SeriesGroupBy.corrwithr   r   r   )r   rF  r)   r   )r   rH   r   rs   r  r   r   r   r   r   r   r   rL   r   rI   r   r   ndimr,   r   setr   r   )r   r   r  r  r   r]   r   r[   r   r   r   test_transform_agg_by_namew  s   
*r  c                  C   sh   t tdtdgddgd} | dgd dd	 }ttddd
tddd
gdd}t|| d S )Nz2010-07-15 03:14:45z2010-11-19 18:47:06z	Etc/GMT+4z
US/Eastern)timetimezoner  r  c                 S   s   | j | jS r    )r   tz_localizerb   r   r   r   r   r     r   z7test_transform_lambda_with_datetimetz.<locals>.<lambda>)tzr   )r   r	   rH   rI   r   rL   rv   r   r   r   r   %test_transform_lambda_with_datetimetz  s"   	

r  c                  C   s   t g dg dd} | d}dd }|j}|jj||jd}||\}}t|\}}tj	t
dd	 || W d    n1 sCw   Y  ||}	t g d
dgd}
t|	|
 d S )Nr  )r*   r   r*   r)   r   r   c                 S   s   | j dkr	td| d S )Nr)   Don't cross the streams)r  NotImplementedError)rx   r   r   r   r    s   
z,test_transform_fastpath_raises.<locals>.funcrq   r  r   )r)   r)   ri   r   rm   )r   rH   _obj_with_exclusionsgrouperget_iteratorrr   _define_pathsnextr   ri  r  rI   rL   rM   )rX   ro  r  r  gen	fast_path	slow_pathr   r7  r[   rZ   r   r   r   test_transform_fastpath_raises  s   
	

r  c                  C   s   t g dg dtdtdtdd} | ddg} |  } | jdddd	 }t g d
g d
g d
dtjg dddgdd}t	|| d S )N)r   r   r   r   r   fluxr   r  )r<   r<   r=   threer=   sixfiver  rP  )r   r   r   r   r  r   r   )rc  c                 S   s
   | j d S rA  )r   r   r   r   r   r     r   z0test_transform_lambda_indexing.<locals>.<lambda>)r   r   r#   r#   ri   ri   ri   ri   )r   r   r  ))r   r<   )r   r  )r  r  )r  r  )r   r  )r   r<   r   r=   r  )r  r   )
r   rS   r  rK   rH   rI   r   rw  rL   rM   r   r   r   r   test_transform_lambda_indexing  s,   	
r  c                 C   s   t tg dg ddg dg dd}t g dg dg dd}|jddg| dd	}|ddgd	}t|| t d
g di}t|| |jddg| dd
 d	}|ddgd
 d	}t|| tg dd
d}t|| d S )N)r   r   r   r   )
categoriesrp   )r   r   r   r   r   )observedr!   r   )ri   r)   ri   r   )r   r   rH   rI   rL   rM   rv   r   )r  df_with_categoricaldf_without_categoricalr[   rZ   expected_explicitr   r   r   (test_categorical_and_not_categorical_key  s*   r  c                  C   sF   t g dg dd} | dd}t dg di}t|| d S )N)r*   r*   r)   rp   r   r   r   r   )r)  r*  r)  r   r   r   r   r   test_string_rank_grouping  s   r  c                  C   sf   t g dtdd} | tddgd}| }tg d}t|| |	d}t|| d S )	Nr5  r%   r   r   r*   r   )r   r*   r)   r   r*   r)   r   )
r   rS   rH   r   rs   r   r   rL   rv   rI   )rX   rx   r[   rZ   r   r   r   test_transform_cumcount  s   
r  r  A1A2c                 C   s  d}t jddg|}t jddg|}t|dkr|n||B }t jjdd|dt}t j||< t jjdd|dt}t j||< t jjdd|jd}	t	|||	d}
|	}|rf|
 rf|t}t j||< t	|d	gd
}|
j||| d}|d	g dd }t|| d S )NrD  FTr*   r   r3   rE  )r  r  r   r   rm   )dropnasortc                 S   s   | S r    r   r   r   r   r   r   C  r   z-test_null_group_lambda_self.<locals>.<lambda>)r   rE   choicer   rH  r   rI  r  shaper   anyrH   rI   rL   rM   )r  r  r  rF  nulls1nulls2nulls_groupera1a2rt   rX   expected_valuesrZ   ro  r[   r   r   r   test_null_group_lambda_self,  s$   



r  c              	   C   s&  |dkrd}| j tjj|d |dkrtnd }g d}tddtjtjgg dd|d	}|j	d
|d}t
||}|dkrItdg di|d	}	nz|dkrXtdg di|d	}	nk|dkrgtdg di|d	}	n\|dkrttg d|d	}	nO|dkrtdg di|d	}	n@|j	d
dd}
g }|
D ]-\}}tj|dd t|d | }W d    n1 sw   Y  |t||jd	 qt|d}	|r|dv rtnt}|	|}	|	jdkrtj|	jddgdf< ntj|	jddg< tj|dd |j|g|R  }W d    n	1 sw   Y  t||	 d S )Nr   zincorrectly raisesr   r   rh   r*   r*   r)   r)   r   r   r   r   r  rn   r   r  r  r)   r)   r   r   r   rF  r)   r)   r)   r)   )r)  r)  r)  r)  Fr   r   r  r   r)   r   r   )r   r   r   r   r   r   r   r   r  rH   r   r   rL   r   r  appendr   r
   r  objectrI  r   r  r   rI   r   )r   r  r   r   r   r   rX   ro  r   rZ   expected_gbbufferr   r7  r   r(   r[   r   r   r   test_null_group_str_reducerG  sL   "


r  z)ignore:tshift is deprecated:FutureWarningc                 C   s  |dkrd}| j tjj|d tddtjgg ddg dd}t||}|j	d	|d
}g }t
|D ]:\}\}	}
|dkrLtdtt|
i|
jd}n|dkr_tt|
|g |
jdgd}n
t|
dg || }|| q4|r|dv rwtnd }|ttjggdg|dgd t|}|dv r|d d }|dv rtnd }| d}tj||d |j|g|R  }W d    n1 sw   Y  t|| d S )Nr   tshift requires timeseriesr   r*   r*   r)   r)   r   rp   r   r   r  r   r   r   )r   r,   r  r   )r   r(   r,   r  backfillr    is deprecatedr   )r   r   r   r   r   r   r   r  r   rH   r  rS   r   r   r  r  r	  r
   r}  r   rL   r   rI   r   )r   r  r   r   rX   r   ro  r  kr   r7  r   r(   rZ   r   r[   r   r   r   test_null_group_str_transformerw  s4   "
 
r  c              	   C   s  |dkrd}| j tjj|d |dkrtnd }g d}tg d|d}|jddtj	tj	g|d	}t
||}|d
krDtg d|d}	nu|dkrQtg d|d}	nh|dkr^tg d|d}	n[|dkrktg d|d}	nN|dkrxtg d|d}	nA|jddtj	tj	gdd	}
g }|
D ]+\}}tj|dd t|| }W d    n1 sw   Y  |t||jd qt|}	|r|dv rtnt}|	|}	tj	|	jddg< tj|dd |j|g|R  }W d    n1 sw   Y  t||	 d S )Nr   z*corrwith not implemented for SeriesGroupByr   r   rh   r  r   r*   r  rn   r  r  r  r   rF  r  Fr   r   r  r)   r   )r   r   r   r   r   r   r   rH   r   r  r   rL   r   r  r  r   r
   r	  rI  r   r   rI   rv   )r   r  r   r   r   r   serro  r   rZ   r
  r  r   r7  r   r(   r[   r   r   r   "test_null_group_str_reducer_series  sH   

r  c                 C   s`  |dkrd}| j tjj|d tg dg dd}t||}|jddtj	g|d}g }t
|D ].\}\}	}
|d	krGttt|
|
jd}n|d
krSt||
jd}nt|
|| }|| q1|rw|dv rhtnd }|ttj	gdg|d t|}|dv rtnd }| d}tj||d |j|g|R  }W d    n1 sw   Y  t|| d S )Nr   r  r   r  rp   r   r*   r  r   r   r  r   )r   r(   r  r  r   )r   r   r   r   r   r   r   rH   r   r  r  rS   r   r   r  r  r	  r
   r   rL   r   rI   r   )r   r  r   r   r  r   ro  r  r  r   r7  r   r(   rZ   r   r[   r   r   r   &test_null_group_str_transformer_series  s0   

r  zfunc, series, expected_values)ri   r3   r   r*   r)   c                 C   r   rB   headr   r   r   r   r     r   r3   ri   r   r)   r*   c                 C   r   rB   r  r   r   r   r   r     r   r,  r*  r  r   keys_in_indexc              	   C   sL  t g dg dd}d|v r|d |d< |r|j|dd}||}|r)|d }|r-d nt}d	}|tu rstj||d
- tjtdd
 |	|  W d    n1 sTw   Y  W d    d S W d    d S 1 slw   Y  d S tj||d
 |	| }	W d    n1 sw   Y  t d|i|j
d}
|r|
d }
t|	|
 d S )N)r*   r*   r   r)   r)   r  )r  r   r   r  T)r  r   z5returning a DataFrame in groupby.transform will alignr   zLength mismatchr   )r   r  rH   r   rx  rL   r   r   ri  rI   r   r   )r  seriesr  r  r  rX   ro  r   r   r[   rZ   r   r   r   test_transform_aligns_depr  s2   
"r  )`__doc__ior   numpyr   r   pandas.core.dtypes.commonr   r   pandasrQ   r   r   r   r   r	   r
   r   pandas._testing_testingrL   pandas.core.groupby.baser   pandas.core.groupby.genericr   pandas.tests.groupbyr   r   r^   rz   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r  r  r"  r1  r4  r<  r   parametrizerN  r  rU  slowrp  rz  r~  r  r  r  paramr   r  r  r  r   r  r  r   rT   r  r  r  r  r  rS   r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  sort_valuesrx  r  r   r   r   r   <module>   s   $	63(		2
?
	$0+	^
  *



	

	

%!

0
$
.
 
