o
    dz                     @   s   d dl mZm Z  d dlmZ 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 d dlmZ d dlmZ dd Zdd	 Zd
d Zejjde	g dg ddg dfe	g dg ddd dgfe	ddgidgfe	g deddddgfe	g dg ddg dfe	edg dg ddg dfe	g dg d gg dd!ddgfgg d"d#d$d% Zd&d' Zd(d) Zejd*d+d, d-d, d.d, d/d, gd0d1 Zd2d3 Zd4d5 Zd6d7 Z d8d9 Z!d:d; Z"d<d= Z#d>d? Z$d@dA Z%dBdC Z&dDdE Z'dFdG Z(ejdHdIdJgdKdL Z)dMdN Z*dOdP Z+dQdR Z,dSdT Z-dUdV Z.ejdWdIdJgdXdY Z/dZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8dldm Z9dndo Z:dpdq Z;ejdre < e <  e < = gdsdt Z>dudv Z?ejdwdJdIgdxdy Z@dzd{ ZAejd|eBed}eCd d~ejDdd~ddeEg dgdd ZFejddd, d dgdd~ggfdd, d dhdd~hgfdd, ddgfdd, d dddd~dgfdd, d d iddigd didd~iggfgdd ZGdd ZHejddd, dd, gdd ZIdd ZJejddd, dd, gejdHdIdJgdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPejddIdJgdd ZQejddJe	g dg dge
g deRdd!gdIeddgejEddgddgddggdd ZSdd ZTdd ZUdd ZVejddIdJgdd ZWdd ZXejdg dg dgddÄ ZYejdg dg dŢgg dg dƢgg dǢg dȢggddʄ ZZejddIgi fg ddIifgdd΄ Z[ejdddgdd҄ Z\ejdddd, fddd, fdddgddۄ Z]dS )    )datedatetime)StringION)	DataFrameIndex
MultiIndexSeriesbdate_range)get_groupby_method_argsc                  C   s   d} t jt| d g dddggd}|d}||jj }||jjdd }t	
|| t jt| d g dd	}tg d
tdd}tg d|d}|jddddd }t	|| d S )Na+  2011.05.16,00:00,1.40893
2011.05.16,01:00,1.40760
2011.05.16,02:00,1.40750
2011.05.16,03:00,1.40649
2011.05.17,02:00,1.40893
2011.05.17,03:00,1.40760
2011.05.17,04:00,1.40750
2011.05.17,05:00,1.40649
2011.05.18,02:00,1.40893
2011.05.18,03:00,1.40760
2011.05.18,04:00,1.40750
2011.05.18,05:00,1.40649)r   timevaluer   r   )headernamesZparse_dates	date_timec                 S      |   S Nidxmaxx r   S/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/groupby/test_apply.py<lambda>/       z#test_apply_issues.<locals>.<lambda>)r   r   )z
2011.05.16z
2011.05.17z
2011.05.18dtypename)z00:0002:00r   indexF
group_keysc                 S   s   | d | d    S )Nr   r   r   r   r   r   r   r   :       )pdZread_csvr   	set_indexgroupbyr   r   r   applytmassert_frame_equalr   objectr   assert_series_equal)sdfexpectedresultZexp_idxr   r   r   test_apply_issues   s(   

r/   c                     s   t g dg ddddgd tj jdd   jdd  gddd	gd
}  jdd  jD dd fdd}t||  d S )Nar1   br2   r1         ?       @      @      @g      @keydatar9   r:   columns   float64r)   axiskeysc                 S      g | ]}t |qS r   str.0r   r   r   r   
<listcomp>G   r"   z&test_apply_trivial.<locals>.<listcomp>r@   c                    s    j dd  S Nr=   ilocr   r,   r   r   r   H       z$test_apply_trivial.<locals>.<lambda>)	r   r#   concatrK   r%   dtypesr&   r'   r(   r-   r.   r   rL   r   test_apply_trivial?   s   ,
rQ   c                     sp   t g dg ddddgd tj  gddd	gd
}  jdd  jD ddd fdd}t||  d S )Nr0   r3   r8   r9   r:   r;   r=   r>   r)   r?   c                 S   rB   r   rC   rE   r   r   r   rG   U   r"   z+test_apply_trivial_fail.<locals>.<listcomp>T)r@   r!   c                    s    S r   r   r   rL   r   r   r   V       z)test_apply_trivial_fail.<locals>.<lambda>)r   r#   rN   r%   rO   r&   r'   r(   rP   r   rL   r   test_apply_trivial_failN   s   
rS   zdf, group_names)r=   r=   r=         )r1   r1   r1   r2   cr1   r2   r=   rT   rU   r   r   r=   r=   )r   r=   r   r=   r=   r1   )r=   r=   r=   rT   rT   r=   r=   rT      rT   r=   rT   rU   r=   rT   rU   )            rZ   	   )r1   twoZ
aaabbbcccc)
rU   r\   rU   r^   r]   rT   r=   r`   r]   r\   )
r\   r   rT   rT   rT   r_   rZ   r^   rT   rZ   )r1   BCr1   r2   rV   )rT   rT   rU   r;   )ZGH2936zGH7739 & GH10519ZGH10519ZGH2656ZGH12155ZGH20084ZGH21417)Zidsc                    s   g   fdd} fdd} fdd} fdd} fd	d
}|||||fD ]} d d = | j ddd|  |ks>J q'd S )Nc                    s     | j |  S r   )appendr   copygroupr   r   r   f_copy   s   z/test_group_apply_once_per_group.<locals>.f_copyc                    s     | j | S r   re   r   rg   ri   r   r   f_nocopy      z1test_group_apply_once_per_group.<locals>.f_nocopyc                    s     | j dS Nr   rk   rg   ri   r   r   f_scalar   rm   z1test_group_apply_once_per_group.<locals>.f_scalarc                    s     | j d S r   rk   rg   ri   r   r   f_none   s   z/test_group_apply_once_per_group.<locals>.f_nonec                    s     | j tdgdgdS )Nr=   rW   )re   r   r   rg   ri   r   r   f_constant_df   s   z6test_group_apply_once_per_group.<locals>.f_constant_dfr1   Fr    )r%   r&   )r,   Zgroup_namesrj   rl   ro   rp   rq   funcr   ri   r   test_group_apply_once_per_group\   s   '
rs   c                 C   sZ   d}t g dg ddg dd}|jdddd	d
  |  jd}||ks+J d S )NrT   )r   r   r   r   r=   r=   r=   r=   )0246810Z12Z14)group_by_columnZtest_columnr   rz   Fr    c                 S   s   t dS )Nfunction_called)printrL   r   r   r   r      r   z2test_group_apply_once_per_group2.<locals>.<lambda>r{   )r   r%   r&   Z
readouterroutcount)Zcapsysr-   r,   r.   r   r   r    test_group_apply_once_per_group2   s   r   c                  C   s^   t g dtdd} dd }dd }| jdd	d
|}| jdd	d
|}t|| d S )N)r   r   r=   rU   )Ar2   c                 S      | S r   r   rg   r   r   r   slow      z,test_apply_fast_slow_identical.<locals>.slowc                 S   r   r   rf   rg   r   r   r   fast   s   z,test_apply_fast_slow_identical.<locals>.fastr   Fr    )r   ranger%   r&   r'   r(   )r,   r   r   Zfast_dfZslow_dfr   r   r   test_apply_fast_slow_identical   s   r   rr   c                 C   r   r   r   r   r   r   r   r      rR   r   c                 C   s   | d d  S r   r   r   r   r   r   r          c                 C      | j ddS )NFdeepr   r   r   r   r   r      r   c                 C   r   )NTr   r   r   r   r   r   r      r   c                 C   s@   t g dg dg dd}|jddd| }t|| d S )Nr=   rT   rT   rT   r=   rT   rU   r\   )r]   r^   r_   rZ   )gr1   r2   r   Fr    r   r%   r&   r'   r(   )rr   r,   r.   r   r   r   5test_groupby_apply_identity_maybecopy_index_identical   s   r   c                  C   s   t tjdg dd} | jdd ddj}| j}t|| t dg d	i} | jd
 | d< | 	d
  j}| j	ddd
 j}t|| d S )Nr^   onera   ra   threer   ra   foo1Zfoo2c                 S   r   r   r   r   r   r   r   r      rR   z-test_apply_with_mixed_dtype.<locals>.<lambda>r=   rH   c1)r=   rT   r^   r^   rZ   r5   c2Fas_index)r   nprandomrandnr&   rO   r'   r*   r   r%   meanreset_indexr   )r,   r.   r-   result1result2r   r   r   test_apply_with_mixed_dtype   s   
r   c                  C   s6  t g dg dtdd} | jddd}| jddd}|d	j}|d	j}tg d
}t|| t|| |dd j}|dd j}t	
g d}g d}	t	j
|	dd gd}
t||
 t|| ttd}t dd	gd	dgddgddgd	dgg|d} | jdddddd j}t|| d S )N)r2   r2   r1   rV   r1   r2   )r=   rT   r=   r=   rU   r=   r^   )Zitem_iduser_idr   r   Tr   FrT   )r   r=   rT   r\   c                 S   
   |  dS NrT   headr   r   r   r   r        
 z-test_groupby_as_index_apply.<locals>.<lambda>c                 S   r   r   r   r   r   r   r   r     r   ))r   r   )r   rT   r=   r=   rT   r\   )r=   r   r=   rT   )rT   r=   )rU   r\   ri   abcder=   rU   r\   r]   r   r   )r   r!   c                 S   r   r   r   r   r   r   r   r     rR   )r   r   r%   r   r   r   r'   assert_index_equalr&   r   from_tupleslist)r,   Zg_asZg_not_asZres_asZ
res_not_asexpZres_as_applyZres_not_as_applyZexp_not_as_applytpZexp_as_applyindresr   r   r   test_groupby_as_index_apply   s0   *r   c                 C   sx   |  ddg}dd }dd }dd }||}|jjd	ks J ||}|jjd	ks-J ||}|jjd
ks:J d S )Nr   rb   c                 S   s   |   }d|j_|S Nstat)describer   r   rh   r.   r   r   r   desc!  s   z.test_apply_concat_preserve_names.<locals>.descc                 S   s$   |   }d|j_|d t|  }|S r   )r   r   r   lenr   r   r   r   desc2&  s   z/test_apply_concat_preserve_names.<locals>.desc2c                 S   s0   |   }dt| d|j_|d t|  }|S )NZstat_d)r   r   r   r   r   r   r   r   desc3-  s   z/test_apply_concat_preserve_names.<locals>.desc3)r   rb   r   )r   rb   N)r%   r&   r   r   )Zthree_groupgroupedr   r   r   r.   r   Zresult3r   r   r    test_apply_concat_preserve_names  s   



r   c                  C   st   dd } t ddd}ttjd|d}|jdd d	d
}|| }t|ts)J t	|dr0J t
|j|j d S )Nc                 S   sN   t jdd t | }W d    n1 sw   Y  t| | |   |dS )Nignore)invalid)r   Zdemeanedlogged)r   Zerrstatelogr   r   )Zpiecer   r   r   r   fB  s   z%test_apply_series_to_frame.<locals>.fz1/1/2000d   )periodsr   c                 S      | j S r   monthr   r   r   r   r   L      z,test_apply_series_to_frame.<locals>.<lambda>Fr    r   )r	   r   r   r   r   r%   r&   
isinstancer   hasattrr'   r   r   )r   Zdrtsr   r.   r   r   r   test_apply_series_to_frameA  s   
r   c                 C   s4   |  ddgd t}|jjd d dksJ d S )Nr   rb   rc   rT   r   rb   )r%   r&   r   r   r   r,   r.   r   r   r    test_apply_series_yield_constantT  s   r   c                 C   sl   |  ddgt}t|tsJ |jd u sJ |  ddgddg t}t|ts-J |jd u s4J d S )Nr   rb   rc   D)r%   r&   r   r   r   r   r   r   r   r   test_apply_frame_yield_constantY  s   r   c                 C   sH   |  ddg}|t}| d }t|j|j t|j|j d S )Nr   rb   rc   )	r%   r&   r   r~   r'   r   r   assert_numpy_array_equalvaluesr,   r   r.   r-   r   r   r   test_apply_frame_to_seriesd  s
   
r   c                 C   s^   | j ddgdd}|t}| jdtjidjdd}t	|j
|j
 t|j|j d S )Nr   rb   Fr   rc   r;   r   )r%   r&   r   r~   renamer   nandropr'   r   r   r   r   r   r   r   r   )test_apply_frame_not_as_index_column_namel  s
   
r   c                     s   dd }  fdd}t tjdddtjdddtjdd  d	| } d	d
 |}tj||dd |j	d
ksCJ d S )Nc                 S   s    |  dd   jd d S )Nrb   rc   rT   )r%   sumsort_valuesrK   rg   r   r   r   transw  s    z-test_apply_frame_concat_series.<locals>.transc                    s,   |   | jd }|  jd d S )Nrb   rT   )r%   reindexr   r   r   rK   )rh   r   rL   r   r   trans2z  s   z.test_apply_frame_concat_series.<locals>.trans2r   r]     r   rb   rc   r   rc   F)Zcheck_names)
r   r   r   randintr   r%   r&   r'   r*   r   )r   r   r.   r   r   rL   r   test_apply_frame_concat_seriesv  s   
r   c                 C   s>   | j dd dd}|dd }|dd }t|| d S )Nc                 S   r   r   r   r   r   r   r   r     r   z&test_apply_transform.<locals>.<lambda>Fr    c                 S      | d S r   r   r   r   r   r   r     r   c                 S   r   r   r   r   r   r   r   r     r   )r%   r&   	transformr'   r*   )r   r   r.   r-   r   r   r   test_apply_transform  s   r   c                 C   sP   |  dd dd g}dd }||}|D ]\}}t|j| || qd S )Nc                 S   r   r   yearr   r   r   r   r     r   z,test_apply_multikey_corner.<locals>.<lambda>c                 S   r   r   r   r   r   r   r   r     r   c                 S   s   |  ddd  S )Nr   r   rg   r   r   r   r     s   z%test_apply_multikey_corner.<locals>.f)r%   r&   r'   r(   loc)tsframer   r   r.   r9   rh   r   r   r   test_apply_multikey_corner  s   
r   r!   TFc                 C   sn   t g dtdd}|jd| ddd }|g d}| r/tjg d	|jgdd gd
|_t	|| d S )N)	r=   r=   r=   rT   rT   rT   rU   rU   rU   r`   )r9   r   r9   r    c                 S   s   | j d d S r   rJ   r   r   r   r   r     rM   z'test_apply_chunk_view.<locals>.<lambda>)r   r=   rU   r\   r^   r_   )r=   r=   rT   rT   rU   rU   ri   )
r   r   r%   r&   Ztaker   from_arraysr   r'   r(   )r!   r,   r.   r-   r   r   r   test_apply_chunk_view  s   r   c                  C   s@   t g dg dtdddd} | ddg}|dd	  d S )
N)
r=   r=   r=   r=   r=   r=   rT   rT   rT   rT   )
r   r   r   r=   r=   r=   r   r   r=   r=   r`   )r   name2r   r   r   c                 S      | j dddS )Nr   TZinplacer   r   r   r   r   r     rM   z4test_apply_no_name_column_conflict.<locals>.<lambda>)r   r   r%   r&   )r,   r   r   r   r   "test_apply_no_name_column_conflict  s   
	r   c                  C   sp   t g dtg ddtddd} dd }| jd	d
d|}|  }tg dd|d< t|| d S )Nr4   r4   r4   r5   r5   r5   rd   rT   r4         @r   rV   vc                 S   ,   | d }||   | |    | d< | S Nr   v2minmaxrh   r   r   r   r   r         z#test_apply_typecast_fail.<locals>.fr   Fr            g      ?r=   r   )	r   r   tilearanger%   r&   rf   r'   r(   )r,   r   r.   r-   r   r   r   test_apply_typecast_fail  s   
r  c                  C   s   t g dg dg} tg dtg ddtddd| d	}d
d }|jddd|}| }tg dd|d< t	
|| d S )N)r   r   r   r=   r=   r=   r[   r   rd   rT   r4   r   r   r   c                 S   r   r   r   r   r   r   r   r     r  z%test_apply_multiindex_fail.<locals>.fr   Fr    r  r   )r   r   r   r   r  r  r%   r&   rf   r'   r(   )r   r,   r   r.   r-   r   r   r   test_apply_multiindex_fail  s   
	r  c                 C   s4   | j dd dddd }| d }t|| d S )Nc                 S   r   r   r   r   r   r   r   r     r   z#test_apply_corner.<locals>.<lambda>Fr    c                 S   r   r   r   r   r   r   r   r     r   rT   )r%   r&   r'   r(   )r   r.   r-   r   r   r   test_apply_corner  s   r  c                  C   s\   t g dg dg dd} dd }dd }| d	|}| d	|}t|| d S )
N)r   r      i,  )r1   r2   rV   rV   r   )id_fieldcategoryr   c                 S   s$   | j d dkr|  S | | jdk S Nr   r=   rV   )shaperf   r  r   r   r   r   filt1  s   z&test_apply_without_copy.<locals>.filt1c                 S   s    | j d dkr	| S | | jdk S r  )r  r  r   r   r   r   filt2  s   z&test_apply_without_copy.<locals>.filt2r
  r   )r:   r  r  r-   r.   r   r   r   test_apply_without_copy  s   r  test_seriesc                 C   s   t ddgddgddggddgg dd}| r9|dd }|jdd	d
dd }| }| }t|| d S |jdd	ddd }|d}|d}t|| d S )Nr   poXY)r=   rT   rT   r<   r   r   F)levelr!   c                 S   r   r   r   r   r   r   r   r     rR   z<test_apply_with_duplicated_non_sorted_axis.<locals>.<lambda>r    c                 S   r   r   r   r   r   r   r   r     rR   )	r   r$   r%   r&   
sort_indexr'   r*   r   r(   )r  r,   serr.   r-   r   r   r   *test_apply_with_duplicated_non_sorted_axis  s    

r  c                  C   sf   g d} g d}t ddgd | d|d}t| |dd	}d
d }|jdddj|}t|| d S )Nr   r=   r=   rT   rT   ZGroup1ZGroup2rT   rh   r   r   r   r   r   c                 S   s"   |  t| j | j d S rI   )r   r   r  r   r   r   r   r   r   r   reindex_helper-  s   "z1test_apply_reindex_values.<locals>.reindex_helperrh   Fr    )r   r   r%   r   r&   r'   r*   )r   indicesr,   r-   r  r.   r   r   r   test_apply_reindex_values#  s   r   c                  C   sj   d} t jjdd| d}t|t j| g d| d  d}|jdd	d
}dd }||}d|v s3J d S )Nr   r   r   )size)foobarZbazZquxr\   )r9   value1Zvalue2r9   Fr    c                 S   s   | d d | d< | S )Nr$  rT   value3r   r   r   r   r   r   D  s   z"test_apply_corner_cases.<locals>.fr%  )r   r   r   r   r   r%   r&   )Nlabelsr,   r   r   r.   r   r   r   test_apply_corner_cases5  s   

r)  c                  C   s:  t ddgdgd ddgd} | dgdd	 }t| j| _| dgd
d	 }t|d |d  t g dg dtdgd d} dd }| d|d }| j	}| j
|_t|| dd }t g dg dg dg dd}| }t|j|_|d|j}|d|j}t|| d S )Nr=   rT   z
2017-03-02r"  inf)NumberDateStrr+  c                 S   
   | j d S rn   rJ   r   r   r   r   r   V  r   z;test_apply_numeric_coercion_when_datetime.<locals>.<lambda>c                 S   r.  rn   rJ   r   r   r   r   r   X  r   r-  )
         )r"  3rv   z12:31:22rU   )r   rb   Tc                 S   s   | j d dg S )Nr   rb   rJ   r&  r   r   r   get_B`  s   z8test_apply_numeric_coercion_when_datetime.<locals>.get_Br   rb   c                 S   s   t g dtd}dt| jv rt| | jdk jjd |d< dt| jv rCt| | jdk jjd |d< t| | jdk jjd |d< |S )	N)p1p2useTime)r   r   step1r   r5  step2r6  r7  )r   r)   r   StaterD   Machiner   oTime)Ztoolr}   r   r   r   predictionsi  s   z>test_apply_numeric_coercion_when_datetime.<locals>.predictions)rb   rb   r   r   )r8  r9  r8  r9  ) z2016-09-19 05:24:33r>  z2016-09-19 23:59:04)Z23Z36L36Rr?  )Keyr:  r<  r;  r@  )r   r%   r&   r#   to_datetimer,  r'   r*   	Timestamprb   r   r   rf   r<  r5  )r,   r-   r.   r4  r=  df1df2r   r   r   )test_apply_numeric_coercion_when_datetimeL  s8   	rE  c                  C   s   t g dtdgd d} | j| j | d< | ddd }t g dtd	d
gd tdgd dd}t	|| d S )Nr   z2017-02-01 00:00:00rU   )clientidr   time_delta_zerorF  c                 S   s   t | j | j dS )N)clientid_ager   )r   rG  r   r   )Zddfr   r   r   r     s    z?test_apply_aggregating_timedelta_and_datetime.<locals>.<lambda>r   r   )rF  rH  r   )
r   r   Z
datetime64r   r%   r&   Ztimedelta64r$   r'   r(   r,   r.   r-   r   r   r   -test_apply_aggregating_timedelta_and_datetime  s$   
rJ  c                  C   s~   ddgddgddgddgddgg} t | d	d
gtddd}|d	 }t g dg dd}|jd	dd t|| d S )Nr   r/  rb   r0  r1  rc   (   2   NameValuez
2020-09-01z
2020-09-05r  r   )r/  rL  Z   )rM  rN  Tr   )r   r#   
date_ranger%   r   r$   r'   r(   )r:   r,   r.   r-   r   r   r    test_apply_groupby_datetimeindex  s   "rQ  c                  C   s   t ddd tdD d} dd }dd	 }| jd
gd|}t ddidgd}d
|j_| jd
gd|}t tddddddgd}d
|j_t|| t|| d S )Nr=   c                 S   s   g | ]}t  qS r   )r   now)rF   nnr   r   r   rG     r"   z'test_time_field_bug.<locals>.<listcomp>r/  rW   c                 S   s   t ddiS )NrV   rT   r   batchr   r   r   func_with_no_date  s   z.test_time_field_bug.<locals>.func_with_no_datec                 S   s   t tdddddS )N  r=   rT   r2   rV   )r   r   rU  r   r   r   func_with_date     z+test_time_field_bug.<locals>.func_with_dater1   ZbyrV   rT   r   rX  rY  )	r   r   r%   r&   r   r   r   r'   r(   )r,   rW  rZ  Zdfg_no_conversionZdfg_no_conversion_expectedZdfg_conversionZdfg_conversion_expectedr   r   r   test_time_field_bug  s   r]  c                     s`   t g dg dg dg dd} | ddg} | jddgdd	}d
d  | fdd d S )N)r1   r1   r1   r2   r2   r2   r1   r1   r1   r2   r2   r2   )rV   rV   r   r   r   erV   rV   r   r   r   r^  )g?rT   rU   r\   r]   r^   rT   r\   r^   rZ   r=   rT   )gffffff@rZ   r`   r/        rZ   r_   r^   r]   r\   rU   )group1group2weightr   ra  rb  T)r  sortc                 S   s   t | | d}|S )NrU   )r   arrayrepeat)r   rc  r}   r   r   r   noddy  s   z7test_gb_apply_list_of_unequal_len_arrays.<locals>.noddyc                    s    | j | jS r   )r   rc  r   rg  r   r   r     rM   z:test_gb_apply_list_of_unequal_len_arrays.<locals>.<lambda>)r   r$   r%   r&   )r,   Z
df_groupedr   rh  r   (test_gb_apply_list_of_unequal_len_arrays  s   
ri  c                  C   sD   t g dg dd} dd }| d|}t  }t|| d S )NrY   )rZ   r_   r\   r]   )groupsZrandom_varsc                 S   s   d S r   r   r   r   r   r   	test_func  r   z.test_groupby_apply_all_none.<locals>.test_funcrj  r   )Ztest_dfrk  r.   r-   r   r   r   test_groupby_apply_all_none  s
   rl  c            	      C   s   t g dg dd} t g dg dd}dd }| d|}|d|}tjddgd	d
ggdd gd}tjd
d
gddggdd gd}t ddgd	d
gd|d}t d
d
gddgd|d}t|| t|| d S )N)r=   r=   r=   rT   )r   r=   rT   rU   )rj  varsr   c                 S   s    | j d dk r	d S | jddg S )Nr   rT   r   )r  rK   r   r   r   r   rk    s   z0test_groupby_apply_none_first.<locals>.test_funcrj  r=   r   rT   ri   rU   r   )r   r%   r&   r   r   r'   r(   )	Ztest_df1Ztest_df2rk  r   r   Zindex1index2Z	expected1Z	expected2r   r   r   test_groupby_apply_none_first  s   ro  c                  C   sl   t ddgddgd} | d}|dd }tdgd	tjddgdggdd gd
dd}t|| d S )Nr   r=   Zfilledempty)r   rh   rh   c                 S   s   | | j dk d S )Nr=   r   )r   rg   r   r   r   r         z7test_groupby_apply_return_empty_chunk.<locals>.<lambda>r   ri   )r   r   )	r   r%   r&   r   r   from_productr   r'   r*   )r,   rj  r.   r-   r   r   r   %test_groupby_apply_return_empty_chunk  s   
rs  c                  C   sx   t d g dg dd} | jddd}|dd	 }t g d
g dd}t|| |dd	 }t|| d S )Nza a brX   r\   r^   r]   r   r   Fr    c                 S      | |    S r   r   r   r   r   r   r     r   z-test_apply_with_mixed_types.<locals>.<lambda>)gUUUUUU?gUUUUUU?r=   )皙?g333333?r4   rb   rc   c                 S   ru  r   rv  r   r   r   r   r     r   )r   splitr%   r   r'   r(   r&   )r,   r   r.   r-   r   r   r   test_apply_with_mixed_types  s   rz  c                  C   sh   t dddgitddgd} | ddd }ttdgtdggtddgddd}t|| d S )Nr1   r=   rT   r   c                 S   r   r   r   r&  r   r   r   r   !  r   z*test_func_returns_object.<locals>.<lambda>r   )r   r   r%   r&   r   r'   r*   rI  r   r   r   test_func_returns_object  s   (r|  group_column_dtlikec                 C   sT   t dg| gd}|ddd }t dgtdgdddd	gd
}t|| d S )Nr"  rW   r1   c                 S   s   t dgdgdS )Nspam*   r   rT  r   r   r   r   r   2      z+test_apply_datetime_issue.<locals>.<lambda>r~  r)   r   r  r;   r   r%   r&   r   r'   r(   )r}  r,   r.   r-   r   r   r   test_apply_datetime_issue'  s   
r  c               	   C   s   t tdtdtdtdtddddddddddddddd} dd }| d	|d
 }tdgtjdgd	dd
d}t|| d S )Nz2015-02-24 00:00:00)r   r=   rT   rU   r\   zsome UA stringzanother UA stringZ17661101)dayZ	userAgentuserIdc                 S   s   t dd |  D S )Nc                 S   s    i | ]\}}||  jd  qS )r   )Zvalue_countsr   )rF   rV   r+   r   r   r   
<dictcomp>W  s     zYtest_apply_series_return_dataframe_groups.<locals>.most_common_values.<locals>.<dictcomp>)r   itemsrL   r   r   r   most_common_valuesV  r[  zEtest_apply_series_return_dataframe_groups.<locals>.most_common_valuesr  r  z
2015-02-24r{  r  )	r   r#   rB  r%   r&   r   DatetimeIndexr'   r*   )Ztdfr  r.   r-   r   r   r   )test_apply_series_return_dataframe_groups:  s6   r  r  c                 C   s   ddgd }| r"t j|g dd}t jg dg ddd}g d}ntddgdd	}d
dg}t||d|d}ttd|ttdttdd	ddg}|
ddd }t|| |jjddgksjJ d S )Nr=   rT   r]   rX   )
categoriesrb   )r  r   )g      4@g      9@r  r{  r0     )rc   r   r   r/  )r   rb   rc   r   r   c                 S   r   r   rv  r   r   r   r   r   s  r   z-test_apply_multi_level_name.<locals>.<lambda>)r#   ZCategoricalCategoricalIndexr   r   r   r  r   r   r$   r%   r&   r'   r(   r   r   )r  r2   Zexpected_indexexpected_valuesr-   r,   r.   r   r   r   test_apply_multi_level_name`  s$   

"
r  c               	   C   s   t jtdddddddftdddddd	d
ftdddddddftdddddddfgg dd} | ddd j}tt	dt
t
tjt
gg dd}t|| d S )Ni  r=   redZdarkrx   rX  greenZstormyrT   9i  bluebrightrU   ry   i  Zcalmr\   potato)ZobservationcolorZmoodZ	intensityZscorer;   r  c                 S   r.  rn   rJ   r&  r   r   r   r     r   z;test_groupby_apply_datetime_result_dtypes.<locals>.<lambda>zdatetime64[ns]r   )r   Zfrom_recordsr#   rB  r%   r&   rO   r   r   r   r)   Zint64r'   r*   )r:   r.   r-   r   r   r   )test_groupby_apply_datetime_result_dtypesx  s   	r  r   abcrU   Z2020r   )r   freq))r1   r   )r1   r=   )r2   r   c                 C   sB   t g dg dd| d}|jddddd	 }t|| d S )
N)r=   r=   rT   )r   r=   r   r  r   rh   Fr    c                 S   r   r   r   r   r   r   r   r     rR   z8test_apply_index_has_complex_internals.<locals>.<lambda>r   )r   r,   r.   r   r   r   &test_apply_index_has_complex_internals  s   r  zfunction, expected_valuesc                 C   
   | j  S r   )r   to_listr   r   r   r   r     r   c                 C      t | j S r   )setr   r  r   r   r   r   r     rM   c                 C   r  r   )tupler   r  r   r   r   r   r     rM   )r   r=   rT   rU   c                 C   s   t t| j S r   )dict	enumerater   r  r   r   r   r   r     rq  c                 C   s   dd t | j D S )Nc                 S   s   g | ]\}}||iqS r   r   )rF   nir   r   r   rG         z<lambda>.<locals>.<listcomp>)r  r   r  r   r   r   r   r     r  c                 C   sJ   t g ddgd}|d| }t|tddgddd}t|| d S )N)r   r   rb   rb   rj  r;   r   rb   r{  r   r   r%   r&   r   r   r'   r*   )functionr  r,   r.   r-   r   r   r   1test_apply_function_returns_non_pandas_non_scalar  s   r  c                  C   sl   dd } t g ddddtjgd}|d| }td	d
gdgtjggtg dddd}t|| d S )Nc                 S   s   | d j  S )Nrb   )r   flattenrg   r   r   r   fct  s   z4test_apply_function_returns_numpy_array.<locals>.fct)r1   r1   r2   noner=   rT   rU   r   r   r4   r5   r6   )r1   r2   r  r{  r   )	r   r   r   r%   r&   r   r   r'   r*   )r  r,   r.   r-   r   r   r   'test_apply_function_returns_numpy_array  s    r  r  c                 C   r   r   r   grr   r   r   r     r   c                 C   s   | j d d S rI   r   r  r   r   r   r     rM   c                 C   sh   t g ddgd}|d| }ttg dtg dtddggtg ddd	d
}t|| d S )N)
r=   rT   rT   rT   r=   rT   rU   r=   rU   r=   idr;   )r   r\   r_   r`   )r=   rT   rU   r]   r^   rZ   rX   r{  r   r  )r  r,   r.   r-   r   r   r    test_apply_function_index_return  s    r  c                  C   sT   t g dg dd} | jddddd }t g d	g d
d}t|| d S )Nr   )r=   rT   r\   r\   r]   r^   r   r   Fr   c                 S   r   r   )r   r   r   r   r   r     r   zAtest_apply_function_with_indexing_return_column.<locals>.<lambda>)r   r   ra   )r6   r7   r7   r   rI  r   r   r   /test_apply_function_with_indexing_return_column  s   r  udfc                 C   r   r   r   r   r   r   r   r     r   c                 C   s   |   dd S )Nc                 S   s   | d S rI   r   )yr   r   r   r     r   z<lambda>.<locals>.<lambda>)rf   r   r   r   r   r   r     rq  c                 C   s   t ddgddgd}|jd| d|}|jj|j| d|}| r5|jjdks+J |jjdks3J d S |jjdks=J |jjdksEJ d S )Nr1   r2   r=   rT   r   r   r    )r   r%   r&   rb   r   r   Znlevels)r!   r  r,   Z	df_resultZseries_resultr   r   r   test_apply_result_type  s   	r  c                  C   sV   t g dg dd} | jddddd }| jdddd	d }t|| d S )
N)rT   r=   rT   rX   r   r   Fr    c                 S   r   r   r   r   r   r   r   r     rR   z4test_result_order_group_keys_false.<locals>.<lambda>c                 S   r   r   r   r   r   r   r   r     r   r   rI  r   r   r   "test_result_order_group_keys_false  s   r  c                  C   s   dgd dgd  dgd  } t | }t j| dd}tttdd td|d	}tttdd td|d	}|jd
dddd }|jd
dddd }t|| d S )Nz
2001-01-01rT   z
2001-01-02z
2001-01-03UTC)tzrU   r^   )r   r  tr   Fr    c                 S      | ddg   S Nr   r  r   rL   r   r   r   r     r  z1test_apply_with_timezones_aware.<locals>.<lambda>c                 S   r  r  r   rL   r   r   r   r     r  )	r#   r  r   r   r   r%   r&   r'   r(   )datesZindex_no_tzZindex_tzrC  rD  r   r   r   r   r   test_apply_with_timezones_aware  s   
  r  c                 C   s   t g dg dg dd}t ddgddgd	d
gdtddgddd}|jdd}|t}t|| |jdd}t| |}t|| | }|t}t|| d S )N)c   r  r  X   r  r  )r=   rT   rU   r\   r]   r^   )r/  r0  r1  rK  rL  <   rd   i  i)     r^      r  r  r  r1   r{  r   r\  )	r   r   r%   r&   r   r'   r(   r
   getattr)Zreduction_funcr,   r-   grpr.   args_r   r   r   ;test_apply_is_unchanged_when_other_methods_are_called_first  s$   


r  c               	   C   s   t g dtdddtdddtdddtdddgg ddtg dd	d
d} | ddg}|dd }| jg d }| }t|g d |_	|j
d	d}t|| |j	jd D ]
}t|tu sgJ q]d S )N)r1   r1   r1   r2   i  r=   r/  rT   r   r   )r   e   f   g   idxr{  r   r   rb   c                 S   r   rI   r   r   r   r   r   r   :  r   zRtest_apply_with_date_in_multiindex_does_not_convert_to_timestamp.<locals>.<lambda>)r   rT   rU   )r   rb   r  r;   )r   r   r   r%   r&   rK   r   r   Z
from_framer   r   r'   r(   Zlevelstype)r,   r  r.   r-   valr   r   r   @test_apply_with_date_in_multiindex_does_not_convert_to_timestamp(  s*   




r  c                  C   sz   t tjddgtddgddggd} | jjddd	d
d }| jddd	dd }t	||j t	||  d S )Nr^   r\   r   rb   r=   rT   r;   r   r@   r  c                 S   s   | j dddS )Nr   r  Z	droplevelr   r   r   r   r   R  rM   zDtest_apply_by_cols_equals_apply_by_rows_transposed.<locals>.<lambda>c                 S   r   )Nr=   r   r  r  r   r   r   r   r   T  rM   )
r   r   r   r   rr  r3  r%   r&   r'   r(   )r,   Zby_rowsZby_colsr   r   r   2test_apply_by_cols_equals_apply_by_rows_transposedF  s   r  dropnac                 C   sl   t g ddtjtjddgdtdd}|jd| dd	d
d }| r'| n|jg d }t	|| d S )Nr=   rT   rU   r\   r]   r1   r2   )colrh   Zxxyxzr   rh   F)r  r!   c                 S   r   r   r   r   r   r   r   r   e  rR   z5test_apply_dropna_with_indexed_same.<locals>.<lambda>)r   rU   r=   rT   r\   )
r   r   r   r   r%   r&   r  rK   r'   r(   )r  r,   r.   r-   r   r   r   #test_apply_dropna_with_indexed_sameZ  s   r  zas_index, expected)r=   r=   r=   )rT   rT   r=   )r1   r2   N)r   r   )rT   rT   r2   ri   r   c                 C   sH   t g dg dg dd}|jddg| ddd }t|| d S )	Nr  )r=   r=   r=   r=   rd   r1   r2   r   c                 S   s   dS rI   r   r   r   r   r   r   ~  rR   z5test_apply_as_index_constant_lambda.<locals>.<lambda>)r   r%   r&   r'   Zassert_equal)r   r-   r,   r.   r   r   r   #test_apply_as_index_constant_lambdaj  s   r  c                  C   sn   t g dg dg ddtdd} | ddd	 }ttd
dtjg ddd gddd}t|| d S )Nr  )r^   r_   rZ   r`   r   )r=   r=   r=   rT   rT   r   r]   r   rc   c                 S   r  r   )r   r  r   r   r   r   r     r   z(test_sort_index_groups.<locals>.<lambda>r=   r^   )r   r   r   r  r   ri   r   r  )	r   r   r%   r&   r   r   r   r'   r*   rI  r   r   r   test_sort_index_groups  s   r  c                  C   sX   t tjddddtdtdd} | j| j| jjjgdd	d	d
 }t
||  d S )Nz
2010-01-01Z12Hr]   )r  r   r   )r   valsletFr    c                 S   s   | j dd  S rn   rJ   r   r   r   r   r     rM   z;test_positional_slice_groups_datetimelike.<locals>.<lambda>)r   r#   rP  r   r   r%   r  r   dtr&   r'   r(   rP   r   r   r   )test_positional_slice_groups_datetimelike  s   
r  c                  C   sr   t g dg dg dd} | d}|ddg dd	 }t d
dgddgdtddgddd}t|| d S )N)r1   r1   r2   rX   rt  r   r   rb   rc   c                 S   s   |  t |   S r   )Zastypefloatr   r   r   r   r   r   r     s    z7test_groupby_apply_shape_cache_safety.<locals>.<lambda>r4   r  r5   rx  r1   r2   r{  r   r  )r,   gbr.   r-   r   r   r   %test_groupby_apply_shape_cache_safety  s   
r  c                 C   s^   t g dg dddtjtjgd}|jd| d}|dd	 }|d
d	 }t|| d S )Nr  )r=   r   rT   r]   r=   rT   )r  r  zr  )r  c                 S   s   |  ddS )Nr=   r  )nlargest)Zgrp_dfr   r   r   r     r   ztest_apply_na.<locals>.<lambda>c                 S   s   | j ddddS )Nr  F)Z	ascendingr=   )r   r   r   r   r   r   r     r"   )r   r   r   r%   r&   r'   r(   )r  r,   Zdfgrpr.   r-   r   r   r   test_apply_na  s   r  c                  C   s   t g dg dtjg ddddddgd	d
 } t ddtjdddgddtjdddggg dtjddgddgdd}t| | d S )Nr  )r>  r>  r>  r>  r   r+   )unitrd   r1   r2   c                 S   r.  Nr   rJ   rL   r   r   r   r     r   z8test_apply_empty_string_nan_coerce_bug.<locals>.<lambda>r=   r>  rT   r\   )r=   r>  )rT   r>  ri   r  )	r   r#   rA  r%   r&   r   r   r'   r(   )r.   r-   r   r   r   &test_apply_empty_string_nan_coerce_bug  s   

&r  index_values)r4   r5   r6   c                 C   sb   t g dg ddt| d}t dg ditg ddd	d}|dd
d }t|| d S )N)aaa2a3rX   rW   r   b_mean)r5   r6   r4   )r  r  r  r1   r{  c                 S   s   t | d  gdgdS )Nr2   r  r   )r   r   rL   r   r   r   r     r  z0test_apply_index_key_error_bug.<locals>.<lambda>)r   r   r%   r&   r'   r(   )r  r.   r-   r   r   r   test_apply_index_key_error_bug  s   
r  zarg,idx)皙?333333?皙?)r  r  r  )r=   r\   rU   )r  rw  r  c                 C   s8   t d| i|d}|jddddd }t|| d S )Nr  r   Fr    c                 S   r   r   r   r   r   r   r   r     rR   z5test_apply_nonmonotonic_float_index.<locals>.<lambda>r   )argr  r-   r.   r   r   r   #test_apply_nonmonotonic_float_index  s   +r  zargs, kwargsnumeric_onlyc                 C   s>   |  d}|jdg|R i |}|jdd}t|| d S )Nr   r   T)r  )r%   r&   r   r'   r(   )r,   r  kwargsr  r.   r-   r   r   r   test_apply_str_with_args  s   
r  r   Z	some_namec                 C   sL   t ddg| d}|jddgdddd }t ddg| d}t|| d S )	Nr=   rT   r{  r1   Fr    c                 S   r   r   r   r   r   r   r   r   "  rR   z1test_result_name_when_one_group.<locals>.<lambda>)r   r%   r&   r'   r*   )r   r  r.   r-   r   r   r   test_result_name_when_one_group  s   r  z
method, opr&   c                 C   r.  r  )r   r  r   r   r   r   +  r   c                 C   s   | d j d S )Nr2   r   rJ   r  r   r   r   r   ,  rM   )aggZskew)r  prod)r  r   c              	   C   s^   t g g d}|jddd}t|d}t|| |}tg ddtg dddd}t|| d S )	NrW   r1   Tr    r2   r>   r   )r   r   r   )r   r%   r  r   r   r'   r*   )methodopZempty_dfr  rh   r.   r-   r   r   r   test_empty_df(  s   
r  )^r   r   ior   numpyr   ZpytestZpandasr#   r   r   r   r   r	   Zpandas._testingZ_testingr'   Zpandas.tests.groupbyr
   r/   rQ   rS   markZparametrizer   r   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r)  rE  rJ  rQ  r]  ri  rl  ro  rs  rz  r|  todayr   r  r  r  r  r  Zinterval_rangeZperiod_ranger   r  r  r  r  r  r  r  r  r  r  r  r  r)   r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s\   )"

,
	%#


5	
&


	

	




)

	


