U
    sVc                     @   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lmZ dd Zd	d
 Zdd Zejjde	dddddgdddddgddddgfe	d d ddgd dd dgdd dgfe	ddgidgfe	ddddddddgeddddgfe	ddddddgddddddgddddgfe	edddddddddddg
dd ddddddddg
ddddgfe	dddgdddggdddgdddgfgdd d!d"d#d$d%gd&d'd( Zd)d* Zd+d, Zejd-d.d/ d0d/ d1d/ d2d/ gd3d4 Zd5d6 Z d7d8 Z!d9d: Z"d;d< Z#d=d> Z$d?d@ Z%dAdB Z&dCdD Z'dEdF Z(dGdH Z)dIdJ Z*ejdKdLdMgdNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVdW Z/dXdY Z0ejdZdLdMgd[d\ Z1d]d^ Z2d_d` Z3dadb Z4dcdd Z5dedf Z6dgdh Z7didj Z8dkdl Z9dmdn Z:dodp Z;dqdr Z<dsdt Z=ejdue > e >  e > ? gdvdw Z@dxdy ZAejdzdMdLgd{d| ZBd}d~ ZCejdeDedeEd dejFddddeGdddggdd ZHe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 ZIdd ZJejddd/ dd/ gdd ZKdd ZLejddd/ dd/ gejdKdLdMgdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSejddLdMgdd ZTejddMe	dddgdddgge
dddgeUddgdLeddgejGddgddgddggdd ZVdd ZWdd ZXdd ZYejddLdMgdd ZZdd Z[ejddddgdddggddǄ Z\ejddddgdddggdddgdddggdddgdddgggdd΄ Z]ejddLgi fg ddLifgdd҄ Z^ejdddgddք Z_ejdddd/ fddd/ fddddgdd Z`dd ZadS )    )datedatetime)StringION)	DataFrameIndex
MultiIndexSeriesbdate_range)
Int64Index)get_groupby_method_argsc                  C   s   d} t jt| d dddgddggd}|d}||jj }||jjdd }t	
|| t jt| d dddgd	}td
ddgtdd}tdddg|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.40649r   timevalue)headernamesZparse_dates	date_timec                 S   s   |   S Nidxmaxx r   C/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/groupby/test_apply.py<lambda>0       z#test_apply_issues.<locals>.<lambda>)r   r   z
2011.05.16z
2011.05.17z
2011.05.18dtypenamez00:00z02:00indexF
group_keysc                 S   s   | d | d    S )Nr   r   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 dddddgdddddg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ab      ?       @      @      @      @keydatar6   r7   columns   float64r'   axiskeysc                 S   s   g | ]}t |qS r   str.0r   r   r   r   
<listcomp>H   s     z&test_apply_trivial.<locals>.<listcomp>r=   c                    s    j dd  S Nr:   ilocr   r*   r   r   r   I   r   z$test_apply_trivial.<locals>.<lambda>)	r   r!   concatrG   r#   dtypesr$   r%   r&   r+   r,   r   rH   r   test_apply_trivial@   s    ,
rL   c                     s|   t dddddgdddddg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 )Nr.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r:   r;   r'   r<   c                 S   s   g | ]}t |qS r   r?   rA   r   r   r   rC   V   s     z+test_apply_trivial_fail.<locals>.<listcomp>T)r=   r    c                    s    S r   r   r   rH   r   r   r   W   r   z)test_apply_trivial_fail.<locals>.<lambda>)r   r!   rI   r#   rJ   r$   r%   r&   rK   r   rH   r   test_apply_trivial_failO   s    
rM   zdf, group_namesr:         r.   r/   cr.   r/                  	   )r.   twoZ
aaabbbcccc)r.   BCr8   ZGH2936zGH7739 & GH10519ZGH10519ZGH2656ZGH12155ZGH20084ZGH21417)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sNtqNd 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   r\   r   r^   r`   r   r   f_nocopy   s    z1test_group_apply_once_per_group.<locals>.f_nocopyc                    s     | j dS Nr   rb   r^   r`   r   r   f_scalar   s    z1test_group_apply_once_per_group.<locals>.f_scalarc                    s     | j d S r   rb   r^   r`   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:   rQ   )r\   r   r   r^   r`   r   r   f_constant_df   s    z6test_group_apply_once_per_group.<locals>.f_constant_dfr.   Fr   )r#   r$   AssertionError)r*   Zgroup_namesra   rc   re   rf   rg   funcr   r`   r   test_group_apply_once_per_group]   s    '
rj   c              
   C   s~   d}t ddddddddgdddddd	d
dgddddddd	d
dgd}|jddddd  |  jd}||ksztd S )NrN   r   r:   0246810Z12Z14)group_by_columnZtest_columnr   rq   Fr   c                 S   s   t dS )Nfunction_called)printrH   r   r   r   r      r   z2test_group_apply_once_per_group2.<locals>.<lambda>rr   )r   r#   r$   Z
readouterroutcountrh   )Zcapsysr+   r*   r,   r   r   r    test_group_apply_once_per_group2   s    rv   c                  C   s`   t dddgtdd} dd }dd }| jd	d
d|}| jd	d
d|}t|| d S )Nr   r:   rO   )Ar/   c                 S   s   | S r   r   r^   r   r   r   slow   s    z,test_apply_fast_slow_identical.<locals>.slowc                 S   s   |   S r   r]   r^   r   r   r   fast   s    z,test_apply_fast_slow_identical.<locals>.fastrw   Fr   )r   ranger#   r$   r%   r&   )r*   rx   rz   Zfast_dfZslow_dfr   r   r   test_apply_fast_slow_identical   s    r|   ri   c                 C   s   | S r   r   r   r   r   r   r      r   r   c                 C   s   | d d  S r   r   r   r   r   r   r      r   c                 C   s   | j ddS )NFdeepry   r   r   r   r   r      r   c                 C   s   | j ddS )NTr}   ry   r   r   r   r   r      r   c                 C   sL   t ddddgddddgddddgd	}|jd
dd| }t|| d S )Nr:   rN   rO   rS   rT   rU   rV   rR   )gr.   r/   r   Fr   r   r#   r$   r%   r&   )ri   r*   r,   r   r   r   5test_groupby_apply_identity_maybecopy_index_identical   s    (r   c                  C   s   t tjdddddddgd} | jdd dd	j}| j}t|| t d
dddddgi} | jd | d< | 	d
  j}| j	ddd
 j}t|| d S )NrU   onerX   threefoo1Zfoo2c                 S   s   | S r   r   r   r   r   r   r      r   z-test_apply_with_mixed_dtype.<locals>.<lambda>r:   rD   c1rN   rR   r1   c2Fas_index)r   nprandomrandnr$   rJ   r%   r(   r   r#   meanreset_indexr   )r*   r,   r+   result1result2r   r   r   test_apply_with_mixed_dtype   s    
r   c                  C   sR  t ddddddgddddddgtdd} | jd	d
d}| jd	dd}|dj}|dj}tddddg}t|| t|| |dd j}|dd j}t	
ddddg}ddddg}	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 ) Nr/   r.   rP   r:   rN   rO   rU   )Zitem_iduser_idr   r   Tr   Fr   rS   c                 S   s
   |  dS NrN   headr   r   r   r   r     r   z-test_groupby_as_index_apply.<locals>.<lambda>c                 S   s
   |  dS r   r   r   r   r   r   r     r   )r   r   )r   rN   r:   r:   rN   rS   r:   r   r:   rN   )rN   r:   )rO   rS   r`   abcderT   r   )r   r    c                 S   s   | S r   r   r   r   r   r   r     r   )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@t||}|jjd	ksZt||}|jjd
ksttd S )Nrw   rY   c                 S   s   |   }d|j_|S Nstat)describer   r   r_   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)rw   rY   r   )rw   rY   N)r#   r$   r   r   rh   )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sRt	t
|dr`t	t|j|j d S )Nc              	   S   s:   t jdd t | }W 5 Q R X t| | |   |dS )Nignore)invalid)r   Zdemeanedlogged)r   Zerrstatelogr   r   )Zpiecer   r   r   r   fD  s
    z%test_apply_series_to_frame.<locals>.fz1/1/2000d   )periodsr   c                 S   s   | j S r   monthr   r   r   r   r   N  r   z,test_apply_series_to_frame.<locals>.<lambda>Fr   r   )r	   r   r   r   r   r#   r$   
isinstancer   rh   hasattrr%   r   r   )r   Zdrtsr   r,   r   r   r   test_apply_series_to_frameC  s    
r   c                 C   s4   |  ddgd t}|jjd d dks0td S )Nrw   rY   rZ   rN   rw   rY   )r#   r$   r   r   r   rh   r*   r,   r   r   r    test_apply_series_yield_constantV  s    r   c                 C   sl   |  ddgt}t|ts"t|jd ks0t|  ddgddg t}t|tsZt|jd kshtd S )Nrw   rY   rZ   D)r#   r$   r   r   r   rh   r   r   r   r   r   test_apply_frame_yield_constant[  s    r   c                 C   sH   |  ddg}|t}| d }t|j|j t|j|j d S )Nrw   rY   rZ   )	r#   r$   r   ru   r%   r   r   assert_numpy_array_equalvaluesr*   r   r,   r+   r   r   r   test_apply_frame_to_seriesf  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 )Nrw   rY   Fr   rZ   r8   r   )r#   r$   r   ru   renamer   nandropr%   r   r   r   r   r   r   r   r   )test_apply_frame_not_as_index_column_namen  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st
d S )Nc                 S   s    |  dd   jd d S )NrY   rZ   rN   )r#   sumsort_valuesrG   r^   r   r   r   transy  s    z-test_apply_frame_concat_series.<locals>.transc                    s,   |   | jd }|  jd d S )NrY   rN   )r#   reindexr   r   r   rG   )r_   r   rH   r   r   trans2|  s    z.test_apply_frame_concat_series.<locals>.trans2r   rT     rw   rY   rZ   rw   rZ   F)Zcheck_names)r   r   r   randintr   r#   r$   r%   r(   r   rh   )r   r   r,   r   r   rH   r   test_apply_frame_concat_seriesx  s    
r   c                 C   s>   | j dd dd}|dd }|dd }t|| d S )Nc                 S   s   | j S r   r   r   r   r   r   r     r   z&test_apply_transform.<locals>.<lambda>Fr   c                 S   s   | d S r   r   r   r   r   r   r     r   c                 S   s   | d S 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   s   | j S r   yearr   r   r   r   r     r   z,test_apply_multikey_corner.<locals>.<lambda>c                 S   s   | j S r   r   r   r   r   r   r     r   c                 S   s   |  ddd  S )Nrw   r   r^   r   r   r   r     s    z%test_apply_multikey_corner.<locals>.f)r#   r$   r%   r&   loc)tsframer   r   r,   r6   r_   r   r   r   test_apply_multikey_corner  s
    
r   r    TFc              
   C   s   t dddddddddg	tdd}|jd| ddd	 }|d
dddddg}| r|tjddddddg|jgdd gd|_t	|| d S )Nr:   rN   rO   rW   )r6   r   r6   r   c                 S   s   | j d d S r   rF   r   r   r   r   r     r   z'test_apply_chunk_view.<locals>.<lambda>r   rS   rU   rV   r`   )
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 ddddddddddg
ddddddddddg
tdddd} | ddg}|d	d
  d S )Nr:   rN   r   rW   )r   name2r   r   r   c                 S   s   | j dddS )Nr   TZinplacer   r   r   r   r   r     r   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   s|   t ddddddgtdddgdtddd} d	d
 }| jddd|}|  }tdddgd|d< t|| d S )Nr0   r1   r.   r/   rP   rN         @r   rP   vc                 S   s,   | d }||   | |    | d< | S Nr   v2minmaxr_   r   r   r   r   r     s     z#test_apply_typecast_fail.<locals>.fr   Fr                 ?r:   r   )	r   r   tilearanger#   r$   r]   r%   r&   )r*   r   r,   r+   r   r   r   test_apply_typecast_fail  s    
r   c               	   C   s   t ddddddgddddddgg} tddddddgtddd	gdtdd
d| d}dd }|jddd|}| }tdddgd|d< t	
|| d S )Nr   r:   rN   rO   r0   r1   r.   r/   rP   r   r   r   c                 S   s,   | d }||   | |    | d< | S r   r   r   r   r   r   r     s     z%test_apply_multiindex_fail.<locals>.fr   Fr   r   r   r   )r   r   r   r   r   r   r#   r$   r]   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   s   | j S r   r   r   r   r   r   r     r   z#test_apply_corner.<locals>.<lambda>Fr   c                 S   s   | d S r   r   r   r   r   r   r     r   rN   )r#   r$   r%   r&   )r   r,   r+   r   r   r   test_apply_corner  s    r   c                  C   sh   t ddddgddddgddd	d
gd} dd }dd }| d|}| d|}t|| d S )Nr      i,  r.   r/   rP   r:   rN   rO   rS   )id_fieldcategoryr   c                 S   s(   | j d dkr|  S | | jdk S d S Nr   r:   rP   )shaper]   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 d S r   )r   r   r   r   r   r   filt2  s    z&test_apply_without_copy.<locals>.filt2r   r   )r7   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dddgd}| rr|dd }|jd	d
ddd }| }| }t|| n8|jdd
ddd }|d}|d}t|| d S )Nr   poXYr:   rN   r9   r   r   F)levelr    c                 S   s   | S r   r   r   r   r   r   r     r   z<test_apply_with_duplicated_non_sorted_axis.<locals>.<lambda>r   c                 S   s   | S r   r   r   r   r   r   r     r   )	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   sn   ddddg} ddddg}t ddgd | d|d}t| |d	d
}dd }|jdddj|}t|| d S )Nr:   rN   rO   rS   ZGroup1ZGroup2r_   r   r   r   r   r   c                 S   s"   |  t| j | j d S rE   )r   r   r   r   r   r   r   r   r   r   reindex_helper/  s    z1test_apply_reindex_values.<locals>.reindex_helperr_   Fr   )r   r   r#   r   r$   r%   r(   )r   indicesr*   r+   r  r,   r   r   r   test_apply_reindex_values%  s    r  c                  C   sn   d} t jjdd| d}t|t j| ddddg| d	  d
}|jddd}dd }||}d|ksjtd S )Nr   r   r   )sizefoobarZbazZquxrS   )r6   value1Zvalue2r6   Fr   c                 S   s   | d d | d< | S )Nr
  rN   value3r   r   r   r   r   r   F  s    z"test_apply_corner_cases.<locals>.fr  )r   r   r   r   r   r#   r$   rh   )Nlabelsr*   r   r   r,   r   r   r   test_apply_corner_cases7  s    

r  c                  C   sN  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 dddgdddgtdgd d} dd }| d|d }| j	}| j
|_t|| dd }t ddddgddddgddddgdd d!d!gd"}| }t|j|_|d#|j}|d#|j}t|| d S )$Nr:   rN   z
2017-03-02r  inf)NumberDateStrr  c                 S   s
   | j d S rd   rF   r   r   r   r   r   X  r   z;test_apply_numeric_coercion_when_datetime.<locals>.<lambda>c                 S   s
   | j d S rd   rF   r   r   r   r   r   Z  r   r  
         3rm   z12:31:22rO   )rw   rY   Tc                 S   s   | j d dg S )Nr   rY   rF   r  r   r   r   get_Bb  s    z8test_apply_numeric_coercion_when_datetime.<locals>.get_Brw   rY   c                 S   s   t dddgtd}dt| jkr>t| | jdk jjd |d< dt| jkrt| | jdk jjd |d< t| | jdk jjd |d< |S )Np1p2ZuseTime)r   r   step1r   step2)r   r'   r   Stater@   Machiner   oTime)Ztoolrt   r   r   r   predictionsk  s    z>test_apply_numeric_coercion_when_datetime.<locals>.predictionsr  r   z2016-09-19 05:24:33z2016-09-19 23:59:04Z23Z36LZ36R)Keyr  r   r  r#  )r   r#   r$   r!   to_datetimer  r%   r(   	TimestamprY   rw   r   r]   r   r  )r*   r+   r,   r  r!  df1df2r   r   r   )test_apply_numeric_coercion_when_datetimeN  s8    "	



r(  c                  C   s   t dddgtdgd d} | j| j | d< | dd	d
 }t dddgtddgd tdgd dd}t	|| d S )Nrw   rY   rZ   z2017-02-01 00:00:00rO   )clientidr   time_delta_zeror)  c                 S   s   t | j | j dS )N)clientid_ager   )r   r*  r   r   )Zddfr   r   r   r     s   z?test_apply_aggregating_timedelta_and_datetime.<locals>.<lambda>r   r   )r)  r+  r   )
r   r   Z
datetime64r   r#   r$   Ztimedelta64r"   r%   r&   r*   r,   r+   r   r   r   -test_apply_aggregating_timedelta_and_datetime  s$    
r-  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 dddgdddgd}|jd	dd t|| d S )Nrw   r  rY   r  r  rZ   (   2   NameValuez
2020-09-01z
2020-09-05r   Z   )r0  r1  Tr   )r   r!   
date_ranger#   r   r"   r%   r&   )r7   r*   r,   r+   r   r   r    test_apply_groupby_datetimeindex  s    "  
r4  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)rB   nnr   r   r   rC     s     z'test_time_field_bug.<locals>.<listcomp>r  rQ   c                 S   s   t ddiS )NrP   rN   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:   rN   r/   rP   )r   r   r8  r   r   r   func_with_date  s    z+test_time_field_bug.<locals>.func_with_dater.   ZbyrP   rN   r   r;  r<  )	r   r{   r#   r$   r   r   r   r%   r&   )r*   r:  r=  Zdfg_no_conversionZdfg_no_conversion_expectedZdfg_conversionZdfg_conversion_expectedr   r   r   test_time_field_bug  s    r?  c                     s   t ddddddddddddgddddddddddddgdddd	d
ddd	ddddgdddddddddd
d	dgd} | ddg} | jddgdd}dd  | fdd d S )Nr.   r/   rP   r   eg?rN   rO   rS   rT   rU   rR   r:   gffffff@rW   r        rV   )group1group2weightr   rC  rD  T)r   sortc                 S   s   t | | d}|S )NrO   )r   arrayrepeat)r   rE  rt   r   r   r   noddy  s    z7test_gb_apply_list_of_unequal_len_arrays.<locals>.noddyc                    s    | j | jS r   )r   rE  r   rI  r   r   r     r   z:test_gb_apply_list_of_unequal_len_arrays.<locals>.<lambda>)r   r"   r#   r$   )r*   Z
df_groupedr   rJ  r   (test_gb_apply_list_of_unequal_len_arrays  s    
rK  c                  C   sL   t ddddgddddgd} dd	 }| d
|}t  }t|| d S )Nr   r:   rR   rV   rS   rT   )groupsZrandom_varsc                 S   s   d S r   r   r   r   r   r   	test_func  s    z.test_groupby_apply_all_none.<locals>.test_funcrL  r   )Ztest_dfrM  r,   r+   r   r   r   test_groupby_apply_all_none  s
    rN  c            	      C   s   t ddddgddddgd} t ddddgddddg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 )Nr:   rN   r   rO   )rL  varsc                 S   s    | j d dk rd S | jddg S )Nr   rN   r   )r   rG   r   r   r   r   rM    s    z0test_groupby_apply_none_first.<locals>.test_funcrL  r`   r   )r   r#   r$   r   r   r%   r&   )	Ztest_df1Ztest_df2rM  r   r   Zindex1index2Z	expected1Z	expected2r   r   r   test_groupby_apply_none_first  s    rQ  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   r_   r_   c                 S   s   | | j dk d S )Nr:   r   )r   r^   r   r   r   r   	  r   z7test_groupby_apply_return_empty_chunk.<locals>.<lambda>r   r`   )r   r   )	r   r#   r$   r   r   from_productr   r%   r(   )r*   rL  r,   r+   r   r   r   %test_groupby_apply_return_empty_chunk  s    
 rT  c                  C   s   t d dddgdddgd} | jd	d
d}|dd }t dddgdddgd}t|| |dd }t|| d S )Nza a br:   rN   rO   rS   rU   rT   r   rw   Fr   c                 S   s   | |    S r   r   r   r   r   r   r     r   z-test_apply_with_mixed_types.<locals>.<lambda>gUUUUUU?gUUUUUU?皙?g333333?r0   rY   rZ   c                 S   s   | |    S r   rU  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     rY  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 )Nr.   r:   rN   r   c                 S   s   | j S r   r   r  r   r   r   r   $  r   z*test_func_returns_object.<locals>.<lambda>r   )r   r
   r#   r$   r   r%   r(   r,  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  rQ   r.   c                 S   s   t dgdgdS )Nspam*   r   r7  r   r   r   r   r   7  r   z+test_apply_datetime_issue.<locals>.<lambda>r]  r'   r   r^  r8   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:   rN   rO   rS   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   )rB   rP   r)   r   r   r   
<dictcomp>\  s      zYtest_apply_series_return_dataframe_groups.<locals>.most_common_values.<locals>.<dictcomp>)r   itemsrH   r   r   r   most_common_values[  s    zEtest_apply_series_return_dataframe_groups.<locals>.most_common_valuesra  rb  z
2015-02-24rZ  r  )	r   r!   r%  r#   r$   r   DatetimeIndexr%   r(   )Ztdfre  r,   r+   r   r   r   )test_apply_series_return_dataframe_groups?  s:      rg  r   c                 C   s   ddgd }| r@t j|dddgd}t jddgdddgdd}ntddgdd}ttd	|ttd	ttd	d
	ddg}|
ddd }tddgddgd|d}t|| |jjddgkstd S )Nr:   rN   rT   rO   )
categoriesrY   )rh  r   rZ  r  )rw   rY   rZ   r   rw   c                 S   s   |   S r   rU  r   r   r   r   r   q  r   z-test_apply_multi_level_name.<locals>.<lambda>r     )rZ   r   r   )r!   ZCategoricalCategoricalIndexr   r   r   r   r   r{   r"   r#   r$   r%   r&   r   r   rh   )r   r/   Zexpected_indexr*   r,   r+   r   r   r   test_apply_multi_level_namee  s    "rk  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dddddgd} | ddd j}tt	dt
t
tjt
gdddddgd}t|| d S )Ni  r:   ZredZdarkro   r;  ZgreenZstormyrN   9i  ZblueZbrightrO   rp   i  ZcalmrS   ZpotatoZobservationcolorZmoodZ	intensityZscorer8   c                 S   s
   | j d S rd   rF   r  r   r   r   r     r   z;test_groupby_apply_datetime_result_dtypes.<locals>.<lambda>zdatetime64[ns]r   )r   Zfrom_recordsr!   r%  r#   r$   rJ   r   r   r   r'   Zint64r%   r(   )r7   r,   r+   r   r   r   )test_groupby_apply_datetime_result_dtypesw  s    	rn  r   abcZ2020r   )r   freq)r.   r   )r.   r:   )r/   r   c                 C   sF   t dddgdddgd| d}|jdddd	d
 }t|| d S )Nr:   rN   r   r  r   r_   Fr   c                 S   s   | S r   r   r   r   r   r   r     r   z8test_apply_index_has_complex_internals.<locals>.<lambda>r   )r   r*   r,   r   r   r   &test_apply_index_has_complex_internals  s    rq  zfunction, expected_valuesc                 C   s
   | j  S r   )r   to_listr   r   r   r   r     r   c                 C   s   t | j S r   )setr   rr  r   r   r   r   r     r   c                 C   s   t | j S r   )tupler   rr  r   r   r   r   r     r   )r   r:   rN   rO   c                 C   s   dd t | j D S )Nc                 S   s   i | ]\}}||qS r   r   rB   nir   r   r   rc    s      z<lambda>.<locals>.<dictcomp>	enumerater   rr  r   r   r   r   r     r   c                 C   s   dd t | j D S )Nc                 S   s   g | ]\}}||iqS r   r   rv  r   r   r   rC     s     z<lambda>.<locals>.<listcomp>ry  r   r   r   r   r     r   c                 C   sN   t ddddgdgd}|d| }t|tddgddd}t|| d S )Nrw   rY   rL  r8   rZ  r   r   r#   r$   r   r   r%   r(   )functionZexpected_valuesr*   r,   r+   r   r   r   1test_apply_function_returns_non_pandas_non_scalar  s    r}  c                  C   sr   dd } t ddddgdddtjgd	}|d
| }tddgdgtjggtdddgd
dd}t|| d S )Nc                 S   s   | d j  S )NrY   )r   flattenr^   r   r   r   fct  s    z4test_apply_function_returns_numpy_array.<locals>.fctr.   r/   noner:   rN   rO   r   rw   r0   r1   r2   rZ  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   s   | j S r   r   Zgrr   r   r   r     r   c                 C   s   | j d d S rE   r   r  r   r   r   r     r   c                 C   s   t ddddddddddg
dgd}|d| }ttdddd	gtdddd
gtddggtdddgddd}t|| d S )Nr:   rN   rO   idr8   r   rS   rV   rW   rT   rU   rR   rZ  r   r{  )r|  r*   r,   r+   r   r   r    test_apply_function_index_return  s    "(r  c               	   C   s   t ddddddgddddddgd	} tjtd
d | jddddd }W 5 Q R X t dddgdddgd	}t|| d S )Nr   rX   r   r:   rN   rS   rT   rU   r   zSelect only validmatchr   Fr   c                 S   s   |   S r   )r   r   r   r   r   r     r   zAtest_apply_function_with_indexing_return_column.<locals>.<lambda>r2   r3   )r   r%   assert_produces_warningFutureWarningr#   r$   r&   r,  r   r   r   /test_apply_function_with_indexing_return_column  s    "r  udfc                 C   s   |   S r   ry   r   r   r   r   r     r   c                 C   s   |   dd S )Nc                 S   s   | d S rE   r   )yr   r   r   r     r   z<lambda>.<locals>.<lambda>)r]   r   r   r   r   r   r     r   c                 C   s   t ddgddgd}|jd| d|}|jj|j| d|}| rh|jjdksVt|jjdkstn |jjdksxt|jjdkstd S )Nr.   r/   r:   rN   r   rw   r   )r   r#   r$   rY   rw   r   Znlevelsrh   )r    r  r*   Z	df_resultZseries_resultr   r   r   test_apply_result_type  s    	r  c                  C   sZ   t dddgdddgd} | jddddd	 }| jdddd
d	 }t|| d S )NrN   r:   rO   r   rw   Fr   c                 S   s   | S r   r   r   r   r   r   r     r   z4test_result_order_group_keys_false.<locals>.<lambda>c                 S   s   |   S r   ry   r   r   r   r   r     r   r   r,  r   r   r   "test_result_order_group_keys_false  s    r  c               	   C   s   t dddgdddgd} d}tjt|d | dd	d
 }W 5 Q R X t||  tjt|d | dd dd
 }W 5 Q R X t|| d  tjt|d" | d | d dd
 }W 5 Q R X t|| d  d S )Nr   r:   rN   rO   r   z-Not prepending group keys to the result indexr  rw   c                 S   s   | S r   r   r   r   r   r   r     r   z5test_groupby_apply_group_keys_warns.<locals>.<lambda>rY   c                 S   s   | S r   r   r   r   r   r   r     r   c                 S   s   | S r   r   r   r   r   r   r     r   )r   r%   r  r  r#   r$   r&   r(   )r*   msgr,   r   r   r   #test_groupby_apply_group_keys_warns  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-01rN   z
2001-01-02z
2001-01-03UTC)tzrO   rU   )r   r  tr   Fr   c                 S   s   | ddg   S Nr   r  ry   rH   r   r   r   r     r   z1test_apply_with_timezones_aware.<locals>.<lambda>c                 S   s   | ddg   S r  ry   rH   r   r   r   r     r   )	r!   rf  r   r   r{   r#   r$   r%   r&   )datesZindex_no_tzZindex_tzr&  r'  r   r   r   r   r   test_apply_with_timezones_aware  s    
  r  c              	   C   s   | dkrt nd }tddddddgdddddd	gd
dddddg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j	|dd t
|| | }W 5 Q R X |t}t|| d S )Nmadc   X   r:   rN   rO   rS   rT   rU   r  r  r  r.  r/  <   r.   r/   rP   i  i)        r.   rZ  r   r>  zThe 'mad' method is deprecatedr  )r  r   r   r#   r$   r   r%   r&   r   r  getattr)Zreduction_funcwarnr*   r+   grpr,   args_r   r   r   ;test_apply_is_unchanged_when_other_methods_are_called_first  s(    


r  c               	   C   s   t ddddgtdddtdddtdddtdddgddddgd	td
dddgddd} | ddg}|dd }| jdddg }| }t|dddg |_	|j
dd}t|| |j	jd D ]}t|tkstqd S )Nr.   r/   i  r:   r  rN   rO   rS   r   r   e   f   g   idxrZ  r   rw   rY   c                 S   s
   |  dS rE   r   r   r   r   r   r   K  r   zRtest_apply_with_date_in_multiindex_does_not_convert_to_timestamp.<locals>.<lambda>r   r8   )r   r   r   r#   r$   rG   r   r   Z
from_framer   r   r%   r&   levelstyperh   )r*   r  r,   r+   valr   r   r   @test_apply_with_date_in_multiindex_does_not_convert_to_timestamp9  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 )NrU   rS   rw   rY   r:   rN   r8   r   r=   r   c                 S   s   | j dddS )Nr   r  Z	droplevelr   r   r   r   r   c  r   zDtest_apply_by_cols_equals_apply_by_rows_transposed.<locals>.<lambda>c                 S   s   | j dddS )Nr:   r   r  r  r   r   r   r   r   e  r   )
r   r   r   r   rS  r  r#   r$   r%   r&   )r*   Zby_rowsZby_colsr   r   r   2test_apply_by_cols_equals_apply_by_rows_transposedW  s    r  dropnac                 C   sx   t dddddgdtjtjddgdtd	d
}|jd| dddd }| rT| n|jdddddg }t	|| d S )Nr:   rN   rO   rS   rT   r.   r/   )colr_   Zxxyxzr   r_   F)r  r    c                 S   s   | S r   r   r   r   r   r   r   v  r   z5test_apply_dropna_with_indexed_same.<locals>.<lambda>r   )
r   r   r   r   r#   r$   r  rG   r%   r&   )r  r*   r,   r+   r   r   r   #test_apply_dropna_with_indexed_samek  s     r  zas_index, expected)r   r   )rN   rN   r`   r   c                 C   sT   t ddddgddddgddddgd}|jddg| ddd }t|| d S )	Nr:   rN   r  r.   r/   r   c                 S   s   dS rE   r   r   r   r   r   r     r   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_lambda{  s    (r  c                  C   s   t dddddgdddd	d
gdddddgdtdd} | ddd }ttddtjdddddgdd gddd}t|| d S )Nr:   rN   rO   rS   rT   rU   rV   rR   rW   r   r   r   rZ   c                 S   s
   | j  S r   )rw   r   r   r   r   r   r     r   z(test_sort_index_groups.<locals>.<lambda>r   r   r   ru  r   r`   rw   r  )	r   r{   r#   r$   r   r   r   r%   r(   r,  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12HrT   )rp  r   r   )r   valsletFr   c                 S   s   | j dd  S rd   rF   r   r   r   r   r     r   z;test_positional_slice_groups_datetimelike.<locals>.<lambda>)r   r!   r3  r{   r   r#   r  r   dtr$   r%   r&   rK   r   r   r   )test_positional_slice_groups_datetimelike  s     r  c                  C   sx   t dddgdddgdddg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 )Nr.   r/   r:   rN   rO   rS   rU   rT   r   rw   rY   rZ   c                 S   s   |  t |   S r   )Zastypefloatr   r   r   r   r   r   r     r   z7test_groupby_apply_shape_cache_safety.<locals>.<lambda>r0   r   r1   rW  rZ  r   r_  )r*   gbr,   r+   r   r   r   %test_groupby_apply_shape_cache_safety  s    "
 r  c                 C   sf   t ddddgddddgddtjtjgd}|jd| d}|dd	 }|d
d	 }t|| d S )Nr:   rN   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 ddddgddddgtjddddg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d	d
dgtjddgd	d
gdd}t| | d S )Nr:   rN   r"  rO   rS   r)   )unitr  r.   r/   c                 S   s
   | j d S Nr   rF   rH   r   r   r   r     r   z8test_apply_empty_string_nan_coerce_bug.<locals>.<lambda>rP   )r:   r"  )rN   r"  r`   r   )	r   r!   r$  r#   r$   r   r   r%   r&   )r,   r+   r   r   r   &test_apply_empty_string_nan_coerce_bug  s"    

&r  index_valuesr0   r1   r2   c                 C   sj   t dddgdddgdt| d}t d	d
ddgitdddgddd}|ddd }t|| d S )NZaaZa2a3r:   rN   rO   rQ   r   b_meanr1   r2   r0   r.   rZ  c                 S   s   t | d  gdgdS )Nr/   r  r   )r   r   rH   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,idxg?g333333?g?rV  c                 C   s8   t d| i|d}|jddddd }t|| d S )Nr  r   Fr   c                 S   s   | S r   r   r   r   r   r   r   "  r   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   s6   |  d}|jd||}|jdd}t|| d S )Nrw   r   Tr  )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:   rN   rZ  r.   Fr   c                 S   s   | S r   r   r   r   r   r   r   3  r   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   s
   | j d S r  )r   r  r   r   r   r   <  r   c                 C   s   | d j d S )Nr/   r   rF   r  r   r   r   r   =  r   )aggr  )r  Z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 )	NrQ   r.   Tr   r/   r;   r   )r   r   r   )r   r#   r  r   r   r%   r(   )methodopZempty_dfr  r_   r,   r+   r   r   r   test_empty_df9  s    
   r  c               	   C   s   t dddgtddddgd} | d}d	}tjt|d
d |tj W 5 Q R X t	j
tdd |jtjdd W 5 Q R X d S )Nr:   rN   ZxyzrO   rS   rT   r  r.   z$The operation <function mean.*failedF)r  Zcheck_stacklevelz"got an unexpected keyword argumentr  Tr  )r   r   r#   r%   r  r  r$   r   r   pytestZraises	TypeError)r*   r  r  r   r   r   test_numeric_only_warning_numpyR  s     
r  )br   r   ior   Znumpyr   r  Zpandasr!   r   r   r   r   r	   Zpandas._testingZ_testingr%   Zpandas.core.apir
   Zpandas.tests.groupbyr   r-   rL   rM   markZparametrizer{   r   rj   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r(  r-  r4  r?  rK  rN  rQ  rT  rY  r[  todayr   r`  rg  rk  rn  rj  Zinterval_rangeZperiod_ranger   rq  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   r   <module>   s  )*$(.
(
-	
%#


5
&

	


	 
  


)


	


