a
    j=icK                     @   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	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- d0d- gd1d2 Z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*ejdIdJdKgdLdM Z+dNdO Z,dPdQ Z-dRdS Z.dTdU Z/dVdW Z0ejdXdJdKgdYdZ Z1d[d\ Z2d]d^ Z3d_d` Z4dadb Z5dcdd Z6dedf Z7dgdh Z8didj Z9dkdl Z:dmdn Z;dodp Z<dqdr Z=ejdse > e >  e > ? gdtdu Z@dvdw ZAejdxdKdJgdydz ZBd{d| ZCejd}eDed~eEd dejFddddeGg d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dIdJdKgdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSejddJdKgdd ZTejddKe	g dg dge
g deUdd"gdJeddgejGddgddgddggdd ZVdd ZWdd ZXdd ZYejddJdKgdd ZZdd Z[ejdg dg dĢgddƄ Z\ejdg dg dȢgg dg dɢgg dʢg dˢggdd̈́ Z]ejddJgi fg ddJifgddф Z^ejdddgddՄ Z_ejdddd- fddd- fddddgdd߄ Z`dS )    )datedatetime)StringION)	DataFrameIndex
MultiIndexSeriesbdate_range)
Int64Index)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   |   S Nidxmaxx r   p/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/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name)z00:0002:00r   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 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ar0   br1   r0         ?       @      @      @g      @keydatar8   r9   columns   float64r(   axiskeysc                 S   s   g | ]}t |qS r   str.0r   r   r   r   
<listcomp>H   r   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"   concatrI   r$   dtypesr%   r&   r'   r,   r-   r   rJ   r   test_apply_trivial@   s    ,
rN   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 )Nr/   r2   r7   r8   r9   r:   r<   r=   r(   r>   c                 S   s   g | ]}t |qS r   rA   rC   r   r   r   rE   V   r   z+test_apply_trivial_fail.<locals>.<listcomp>T)r?   r!   c                    s    S r   r   r   rJ   r   r   r   W   r   z)test_apply_trivial_fail.<locals>.<lambda>)r   r"   rK   r$   rL   r%   r&   r'   rM   r   rJ   r   test_apply_trivial_failO   s    
rO   zdf, group_names)r<   r<   r<         )r0   r0   r0   r1   cr0   r1   r<   rP   rQ   r   r   r<   r<   )r   r<   r   r<   r<   r0   )r<   r<   r<   rP   rP   r<   r<   rP      rP   r<   rP   rQ   r<   rP   rQ   )            rV   	   )r0   twoZ
aaabbbcccc)
rQ   rX   rQ   rZ   rY   rP   r<   r\   rY   rX   )
rX   r   rP   rP   rP   r[   rV   rZ   rP   rV   )r0   BCr0   r1   rR   )rP   rP   rQ   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sNJ 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   ra   r   rc   re   r   r   f_nocopy   s    z1test_group_apply_once_per_group.<locals>.f_nocopyc                    s     | j dS Nr   rg   rc   re   r   r   f_scalar   s    z1test_group_apply_once_per_group.<locals>.f_scalarc                    s     | j d S r   rg   rc   re   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<   rS   )ra   r   r   rc   re   r   r   f_constant_df   s    z6test_group_apply_once_per_group.<locals>.f_constant_dfr0   Fr    )r$   r%   )r+   Zgroup_namesrf   rh   rj   rk   rl   funcr   re   r   test_group_apply_once_per_group]   s    '
rn   c                 C   sZ   d}t g dg ddg dd}|jdddd	d
  |  jd}||ksVJ d S )NrP   )r   r   r   r   r<   r<   r<   r<   )0246810Z12Z14)group_by_columnZtest_columnr   ru   Fr    c                 S   s   t dS )Nfunction_called)printrJ   r   r   r   r      r   z2test_group_apply_once_per_group2.<locals>.<lambda>rv   )r   r$   r%   Z
readouterroutcount)Zcapsysr,   r+   r-   r   r   r    test_group_apply_once_per_group2   s    rz   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<   rQ   )Ar1   c                 S   s   | S r   r   rc   r   r   r   slow   s    z,test_apply_fast_slow_identical.<locals>.slowc                 S   s   |   S r   rb   rc   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   rm   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deepr}   r   r   r   r   r      r   c                 C   s   | j ddS )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<   rP   rP   rP   r<   rP   rQ   rX   )rY   rZ   r[   rV   )gr0   r1   r   Fr    r   r$   r%   r&   r'   )rm   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 )NrZ   oner]   r]   threer   r]   foo1Zfoo2c                 S   s   | S r   r   r   r   r   r   r      r   z-test_apply_with_mixed_dtype.<locals>.<lambda>r<   rF   c1)r<   rP   rZ   rZ   rV   r4   c2Fas_index)r   nprandomrandnr%   rL   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)r1   r1   r0   rR   r0   r1   )r<   rP   r<   r<   rQ   r<   rZ   )Zitem_iduser_idr   r   Tr   FrP   )r   r<   rP   rX   c                 S   s
   |  dS NrP   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   rP   r<   r<   rP   rX   )r<   r   r<   rP   )rP   r<   )rQ   rX   re   abcder<   rQ   rX   rY   r   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@J ||}|jjd	ksZJ ||}|jjd
kstJ d S )Nr{   r^   c                 S   s   |   }d|j_|S Nstat)describer   r   rd   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{   r^   r   )r{   r^   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   sf   dd } t ddd}ttjd|d}|jdd d	d
}|| }t|tsRJ t	
|j|j d S )Nc                 S   sN   t jdd t | }W d    n1 s,0    Y  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%   
isinstancer   r&   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s0J d S )Nr{   r^   r_   rP   r{   r^   )r$   r%   r   r   r   r+   r-   r   r   r    test_apply_series_yield_constantU  s    r   c                 C   sl   |  ddgt}t|ts"J |jd u s0J |  ddgddg t}t|tsZJ |jd u shJ d S )Nr{   r^   r_   D)r$   r%   r   r   r   r   r   r   r   r   test_apply_frame_yield_constantZ  s    r   c                 C   sH   |  ddg}|t}| d }t|j|j t|j|j d S )Nr{   r^   r_   )	r$   r%   r   ry   r&   r   r   assert_numpy_array_equalvaluesr+   r   r-   r,   r   r   r   test_apply_frame_to_seriese  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{   r^   Fr   r_   r:   r   )r$   r%   r   ry   renamer   nandropr&   r   r   r   r   r   r   r   r   )test_apply_frame_not_as_index_column_namem  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sJ d S )Nc                 S   s    |  dd   jd d S )Nr^   r_   rP   )r$   sumsort_valuesrI   rc   r   r   r   transx  s    z-test_apply_frame_concat_series.<locals>.transc                    s,   |   | jd }|  jd d S )Nr^   rP   )r$   reindexr   r   r   rI   )rd   r   rJ   r   r   trans2{  s    z.test_apply_frame_concat_series.<locals>.trans2r   rY     r{   r^   r_   r{   r_   F)Zcheck_names)
r   r   r   randintr   r$   r%   r&   r)   r   )r   r   r-   r   r   rJ   r   test_apply_frame_concat_seriesw  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 )Nr{   r   rc   r   r   r   r     s    z%test_apply_multikey_corner.<locals>.f)r$   r%   r&   r'   loc)tsframer   r   r-   r8   rd   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<   rP   rP   rP   rQ   rQ   rQ   r\   )r8   r   r8   r    c                 S   s   | j d d S r   rH   r   r   r   r   r     r   z'test_apply_chunk_view.<locals>.<lambda>)r   r<   rQ   rX   rZ   r[   )r<   r<   rP   rP   rQ   rQ   re   )
r   r   r$   r%   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<   rP   rP   rP   rP   )
r   r   r   r<   r<   r<   r   r   r<   r<   r\   )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   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r3   r3   r3   r4   r4   r4   r`   rP   r3         @r   rR   vc                 S   s,   | d }||   | |    | d< | S Nr   v2minmaxrd   r   r   r   r   r     s     z#test_apply_typecast_fail.<locals>.fr   Fr            g      ?r<   r   )	r   r   tilearanger$   r%   rb   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<   rW   r   r`   rP   r3   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%   rb   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   rP   )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,  )r0   r1   rR   rR   r   )id_fieldcategoryr   c                 S   s(   | j d dkr|  S | | jdk S d S Nr   r<   rR   )shaperb   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   )r9   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}| rp|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Y)r<   rP   rP   r;   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   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<   rP   rP   ZGroup1ZGroup2rP   rd   r   r   r   r   r   c                 S   s"   |  t| j | j d S rG   )r   r   r   r   r   r   r   r   r   r   reindex_helper.  s    z1test_apply_reindex_values.<locals>.reindex_helperrd   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 sfJ d S )Nr   r   r   )size)foobarZbazZquxrX   )r8   value1value2r8   Fr    c                 S   s   | d d | d< | S )Nr  rP   value3r   r   r   r   r   r   E  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_cases6  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<   rP   z
2017-03-02r  inf)NumberDateStrr  c                 S   s
   | j d S ri   rH   r   r   r   r   r   W  r   z;test_apply_numeric_coercion_when_datetime.<locals>.<lambda>c                 S   s
   | j d S ri   rH   r   r   r   r   r   Y  r   r  )
         )r  3rq   z12:31:22rQ   )r{   r^   Tc                 S   s   | j d dg S )Nr   r^   rH   r  r   r   r   get_Ba  s    z8test_apply_numeric_coercion_when_datetime.<locals>.get_Br{   r^   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 rt| | jdk jjd |d< t| | jdk jjd |d< |S )	N)p1p2useTime)r   r   step1r   r$  step2r%  r&  )r   r(   r   StaterB   Machiner   oTime)Ztoolrx   r   r   r   predictionsj  s    z>test_apply_numeric_coercion_when_datetime.<locals>.predictions)r^   r^   r{   r{   )r'  r(  r'  r(  ) 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)   	Timestampr^   r{   r   rb   r+  r$  )r+   r,   r-   r#  r,  df1df2r   r   r   )test_apply_numeric_coercion_when_datetimeM  s8    	r4  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:00rQ   )clientidr   time_delta_zeror5  c                 S   s   t | j | j dS )N)clientid_ager   )r   r6  r   r   )Zddfr   r   r   r     s   z?test_apply_aggregating_timedelta_and_datetime.<locals>.<lambda>r   r   )r5  r7  r   )
r   r   Z
datetime64r   r$   r%   Ztimedelta64r#   r&   r'   r+   r-   r,   r   r   r   -test_apply_aggregating_timedelta_and_datetime  s$    
r9  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  r^   r  r   r_   (   2   NameValuez
2020-09-01z
2020-09-05r  r   )r  r;  Z   )r<  r=  Tr   )r   r"   
date_ranger$   r   r#   r&   r'   )r9   r+   r-   r,   r   r   r    test_apply_groupby_datetimeindex  s    "r@  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)rD   nnr   r   r   rE     r   z'test_time_field_bug.<locals>.<listcomp>r  rS   c                 S   s   t ddiS )NrR   rP   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<   rP   r1   rR   )r   r   rD  r   r   r   func_with_date  s    z+test_time_field_bug.<locals>.func_with_dater0   ZbyrR   rP   r   rG  rH  )	r   r   r$   r%   r   r   r   r&   r'   )r+   rF  rI  Zdfg_no_conversionZdfg_no_conversion_expectedZdfg_conversionZdfg_conversion_expectedr   r   r   test_time_field_bug  s    rK  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)r0   r0   r0   r1   r1   r1   r0   r0   r0   r1   r1   r1   )rR   rR   r   r   r   erR   rR   r   r   r   rL  )g?rP   rQ   rX   rY   rZ   rP   rX   rZ   rV   r<   rP   )gffffff@rV   r\   r        rV   r[   rZ   rY   rX   rQ   )group1group2weightr   rO  rP  T)r  sortc                 S   s   t | | d}|S )NrQ   )r   arrayrepeat)r   rQ  rx   r   r   r   noddy  s    z7test_gb_apply_list_of_unequal_len_arrays.<locals>.noddyc                    s    | j | jS r   )r   rQ  r   rU  r   r   r     r   z:test_gb_apply_list_of_unequal_len_arrays.<locals>.<lambda>)r   r#   r$   r%   )r+   Z
df_groupedr   rV  r   (test_gb_apply_list_of_unequal_len_arrays  s    
rW  c                  C   sD   t g dg dd} dd }| d|}t  }t|| d S )NrU   )rV   r[   rX   rY   )groupsZrandom_varsc                 S   s   d S r   r   r   r   r   r   	test_func  s    z.test_groupby_apply_all_none.<locals>.test_funcrX  r   )Ztest_dfrY  r-   r,   r   r   r   test_groupby_apply_all_none  s
    rZ  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<   rP   )r   r<   rP   rQ   )rX  varsr   c                 S   s    | j d dk rd S | jddg S )Nr   rP   r   )r   rI   r   r   r   r   rY    s    z0test_groupby_apply_none_first.<locals>.test_funcrX  r<   r   rP   re   rQ   r   )r   r$   r%   r   r   r&   r'   )	Ztest_df1Ztest_df2rY  r   r   Zindex1index2Z	expected1Z	expected2r   r   r   test_groupby_apply_none_first  s    r]  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   rd   rd   c                 S   s   | | j dk d S )Nr<   r   )r   rc   r   r   r   r     r   z7test_groupby_apply_return_empty_chunk.<locals>.<lambda>r   re   )r   r   )	r   r$   r%   r   r   from_productr   r&   r)   )r+   rX  r-   r,   r   r   r   %test_groupby_apply_return_empty_chunk  s    
r`  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 brT   rX   rZ   rY   r   r{   Fr    c                 S   s   | |    S r   r   r   r   r   r   r     r   z-test_apply_with_mixed_types.<locals>.<lambda>)gUUUUUU?gUUUUUU?r<   )皙?g333333?r3   r^   r_   c                 S   s   | |    S r   rb  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    rf  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 )Nr0   r<   rP   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)   r8  r   r   r   test_func_returns_object   s     rh  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  rS   r0   c                 S   s   t dgdgdS )Nspam*   r   rC  r   r   r   r   r   6  r   z+test_apply_datetime_issue.<locals>.<lambda>rj  r(   r   rk  r:   r   r$   r%   r   r&   r'   )ri  r+   r-   r,   r   r   r   test_apply_datetime_issue+  s    
rm  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<   rP   rQ   rX   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   )rD   rR   r*   r   r   r   
<dictcomp>[  r   zYtest_apply_series_return_dataframe_groups.<locals>.most_common_values.<locals>.<dictcomp>)r   itemsrJ   r   r   r   most_common_valuesZ  s    zEtest_apply_series_return_dataframe_groups.<locals>.most_common_valuesrn  ro  z
2015-02-24rg  r  )	r   r"   r1  r$   r%   r   DatetimeIndexr&   r)   )Ztdfrr  r-   r,   r   r   r   )test_apply_series_return_dataframe_groups>  s6    rt  r   c                 C   s   ddgd }| r<t j|g dd}t jddgg d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sJ d S )Nr<   rP   rY   rT   )
categoriesr^   )ru  r   rg  r  )r{   r^   r_   r   r{   c                 S   s   |   S r   rb  r   r   r   r   r   p  r   z-test_apply_multi_level_name.<locals>.<lambda>r     )r_   r   r   )r"   ZCategoricalCategoricalIndexr   r   r   r   r   r   r#   r$   r%   r&   r'   r   r   )r   r1   Zexpected_indexr+   r-   r,   r   r   r   test_apply_multi_level_named  s    "rx  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<   reddarkrs   rG  greenZstormyrP   9i  bluebrightrQ   rt   i  ZcalmrX   potato)ZobservationcolorZmoodZ	intensityscorer:   r  c                 S   s
   | j d S ri   rH   r  r   r   r   r     r   z;test_groupby_apply_datetime_result_dtypes.<locals>.<lambda>zdatetime64[ns]r   )r   Zfrom_recordsr"   r1  r$   r%   rL   r   r   r   r(   int64r&   r)   )r9   r-   r,   r   r   r   )test_groupby_apply_datetime_result_dtypesv  s    	r  r   abcrQ   Z2020r   )r   freq))r0   r   )r0   r<   )r1   r   c                 C   sB   t g dg dd| d}|jddddd	 }t|| d S )
N)r<   r<   rP   )r   r<   r   r  r   rd   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    r  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   r  r   r   r   r   r     r   c                 C   s   t | j S r   )tupler   r  r   r   r   r   r     r   )r   r<   rP   rQ   c                 C   s   dd t | j D S )Nc                 S   s   i | ]\}}||qS r   r   rD   nir   r   r   rp    r   z<lambda>.<locals>.<dictcomp>	enumerater   r  r   r   r   r   r     r   c                 C   s   dd t | j D S )Nc                 S   s   g | ]\}}||iqS r   r   r  r   r   r   rE     r   z<lambda>.<locals>.<listcomp>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{   r^   r^   rX  r:   r{   r^   rg  r   r   r$   r%   r   r   r&   r)   )functionexpected_valuesr+   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 )Nr^   )r   flattenrc   r   r   r   fct  s    z4test_apply_function_returns_numpy_array.<locals>.fct)r0   r0   r1   noner<   rP   rQ   r   r{   r3   r4   r5   )r0   r1   r  rg  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   grr   r   r   r     r   c                 C   s   | j d d S rG   r   r  r   r   r   r     r   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<   rP   rP   rP   r<   rP   rQ   r<   rQ   r<   idr:   )r   rX   r[   r\   )r<   rP   rQ   rY   rZ   rV   rT   rg  r   r  )r  r+   r-   r,   r   r   r    test_apply_function_index_return  s     r  c                  C   s   t g dg dd} tjtdd( | jdddd	d
 }W d    n1 sR0    Y  t g dg dd}t|| d S )Nr   )r<   rP   rX   rX   rY   rZ   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>)r   r   r]   )r5   r6   r6   )r   r&   assert_produces_warningFutureWarningr$   r%   r'   r8  r   r   r   /test_apply_function_with_indexing_return_column  s    6r  udfc                 C   s   |   S r   r}   r   r   r   r   r     r   c                 C   s   |   dd S )Nc                 S   s   | d S rG   r   )yr   r   r   r     r   z<lambda>.<locals>.<lambda>)rb   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sVJ |jjdksJ n |jjdksxJ |jjdksJ d S )Nr0   r1   r<   rP   r   r{   r    )r   r$   r%   r^   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)rP   r<   rP   rT   r   r{   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   r}   r   r   r   r   r     r   r   r8  r   r   r   "test_result_order_group_keys_false  s    r  c                  C   s  t g dg dd} d}tjt|d$ | ddd }W d    n1 sR0    Y  t||  tjt|d( | dd	 d
d }W d    n1 s0    Y  t|| d	  tjt|d, | d	 | d dd }W d    n1 s0    Y  t|| d	  d S )N)r   r<   r<   rT   r   z-Not prepending group keys to the result indexr  r{   c                 S   s   | S r   r   r   r   r   r   r     r   z5test_groupby_apply_group_keys_warns.<locals>.<lambda>r^   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    26: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-01rP   z
2001-01-02z
2001-01-03UTC)tzrQ   rZ   )r   r  tr   Fr    c                 S   s   | ddg   S Nr   r  r}   rJ   r   r   r   r     r   z1test_apply_with_timezones_aware.<locals>.<lambda>c                 S   s   | ddg   S r  r}   rJ   r   r   r   r     r   )	r"   rs  r   r   r   r$   r%   r&   r'   )datesZindex_no_tzZindex_tzr2  r3  r   r   r   r   r   test_apply_with_timezones_aware
  s    
  r  c                 C   s   | dkrt nd }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j	|dd t
|| | }W d    n1 s0    Y  |t}t|| d S )Nmad)c   r  r  X   r  r  )r<   rP   rQ   rX   rY   rZ   )r  r  r   r:  r;  <   r`   i  i)     rZ      r  r  r  r0   rg  r   rJ  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 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 sJ qd S )N)r0   r0   r0   r1   i  r<   r  rP   r   r   )r   e   f   g   idxrg  r   r{   r^   c                 S   s
   |  dS rG   r   r   r   r   r   r   J  r   zRtest_apply_with_date_in_multiindex_does_not_convert_to_timestamp.<locals>.<lambda>)r   rP   rQ   )r{   r^   r  r:   )r   r   r   r$   r%   rI   r   r   Z
from_framer   r   r&   r'   levelstype)r+   r  r-   r,   valr   r   r   @test_apply_with_date_in_multiindex_does_not_convert_to_timestamp8  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 )NrZ   rX   r{   r^   r<   rP   r:   r   r?   r  c                 S   s   | j dddS )Nr   r  Z	droplevelr   r   r   r   r   b  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   d  r   )
r   r   r   r   r_  r"  r$   r%   r&   r'   )r+   Zby_rowsZby_colsr   r   r   2test_apply_by_cols_equals_apply_by_rows_transposedV  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 }| rN| n|jg d }t	|| d S )Nr<   rP   rQ   rX   rY   r0   r1   )colrd   Zxxyxzr   rd   F)r  r!   c                 S   s   | S r   r   r   r   r   r   r   u  r   z5test_apply_dropna_with_indexed_same.<locals>.<lambda>)r   rQ   r<   rP   rX   )
r   r   r   r   r$   r%   r  rI   r&   r'   )r  r+   r-   r,   r   r   r   #test_apply_dropna_with_indexed_samej  s    r  zas_index, expected)r<   r<   r<   )rP   rP   r<   )r0   r1   N)r   r   )rP   rP   r1   re   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<   r`   r0   r1   r   c                 S   s   dS rG   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_lambdaz  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  )rZ   r[   rV   r\   r   )r<   r<   r<   rP   rP   r   rY   r   r_   c                 S   s
   | j  S r   )r{   r  r   r   r   r   r     r   z(test_sort_index_groups.<locals>.<lambda>r<   rZ   )r   r   r   r  r   re   r{   r  )	r   r   r$   r%   r   r   r   r&   r)   r8  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12HrY   )r  r   r   )r   valsletFr    c                 S   s   | j dd  S ri   rH   r   r   r   r   r     r   z;test_positional_slice_groups_datetimelike.<locals>.<lambda>)r   r"   r?  r   r   r$   r  r   dtr%   r&   r'   rM   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)r0   r0   r1   rT   ra  r   r{   r^   r_   c                 S   s   |  t |   S r   )Zastypefloatr   r   r   r   r   r   r     r   z7test_groupby_apply_shape_cache_safety.<locals>.<lambda>r3   r   r4   rd  r0   r1   rg  r   rl  )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   rP   rY   r<   rP   )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*   )unitr`   r0   r1   c                 S   s
   | j d S Nr   rH   rJ   r   r   r   r     r   z8test_apply_empty_string_nan_coerce_bug.<locals>.<lambda>r<   r-  rP   rX   )r<   r-  )rP   r-  re   r  )	r   r"   r0  r$   r%   r   r   r&   r'   )r-   r,   r   r   r   &test_apply_empty_string_nan_coerce_bug  s"    &r  index_values)r3   r4   r5   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a3rT   rS   r   b_mean)r4   r5   r3   )r  r  r  r0   rg  c                 S   s   t | d  gdgdS )Nr1   r  r   )r   r   rJ   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<   rX   rQ   )r  rc  r  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   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<   rP   rg  r0   Fr    c                 S   s   | S r   r   r   r   r   r   r   2  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 )Nr1   r   rH   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 )	NrS   r0   Tr    r1   r=   r   )r   r   r   )r   r$   r  r   r   r&   r)   )methodopZempty_dfr  rd   r-   r,   r   r   r   test_empty_df8  s    
r  )ar   r   ior   numpyr   ZpytestZpandasr"   r   r   r   r   r	   Zpandas._testingZ_testingr&   Zpandas.core.apir
   Zpandas.tests.groupbyr   r.   rN   rO   markZparametrizer   r   rn   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r4  r9  r@  rK  rW  rZ  r]  r`  rf  rh  todayr   rm  rt  rx  r  rw  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   r   <module>   s`  )
"
-	
%#


5
&

	


	 



)


	

