U
    f/e*                     @   s  d dl m Z  d dlmZ d dlZd dlZd dlZd dlm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dd Zdd Zejdddddgdd Zdd Zdd Zejddddddgejd ejg i d!d"ejd#gi d$d"ejg d%d#id&d"ejg d'd(id)d"ejd#dgd'd(id*d"gejd+d,d-gd.d/ Z 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,dHdI Z-dJdK Z.dLdM Z/dNdO Z0dPdQ Z1dRdS Z2dTdU Z3dVdW Z4dXdY Z5dZd[ Z6d\d] Z7d^d_ Z8d`da Z9dbdc Z:ddde Z;dfdg Z<dhdi Z=ejdjdkdldej>gdmdn Z?dodp Z@dqdr ZAdsdt ZBdudv ZCdwdx ZDdydz ZEd{d| ZFd}d~ ZGdd ZHejjddd dd dd gdddgddd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOejd+d,d-gdd ZPejd+d,d-gdd ZQdd ZRejdeeSe deddfdeddfdeddfdeeTdfdeeTdfdeddfdeddfdeddfdeddfdeddfg
eSeejUd#gd#dggdeddgfdeddgfdedd#gfded(d(gfded(d(gfded#dgfdeddgfdeejUdgfdeejUdgfded#dgfg
dd ZVejdeeSe de fde fgeSeejUd#gd#dggdeejUd#gd#dggfdeejUd#gd#dggfgdd ZWejd%d d#gejddi fdi fdi fdddifdd#ddfddd#dfdd#dddfgdd ZXejddddgdd ZYdd ZZejdeddgddgdĜgejddddgddǄ Z[ejdd#dd(dejUgddʄ Z\dd̄ Z]dd΄ Z^ddЄ Z_dd҄ Z`ejdddddddddgejd+dd-gdd݄ Zaejdddddgejd+d,d-gdd߄ Zbdd Zcdd ZddS )    datetime)chainN)CategoricalDtype)	DataFrame
MultiIndexSeries	Timestamp
date_range)
zip_framesc              	   C   s   t jdd t | d }| t jd }t|| | t jd }t | d }||ksbt| jd }| jt jdd}t | 	|}|| |kst|j| jkstW 5 Q R X t
ddddgddd	d	gd
}|dd }|jdkstt|d jtstt|d jtstd S )NignoreallAr      axisBCDc0c1c                 S   s
   |  dS )Ncategoryastype)ts r   G/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/apply/test_frame_apply.py<lambda>*       ztest_apply.<locals>.<lambda>)      r   r   )nperrstatesqrtapplytmassert_series_equalmeanAssertionErrorindexxsr   shape
isinstancedtyper   )float_frameresultexpectedddfr   r   r   
test_apply   s"    
r5   c                  C   s8   t dtdddgi} | jdd dd}t||  d S )	Nr   
2013-01-01UTCtzc                 S   s   | S Nr   xr   r   r   r   4   r    z*test_apply_axis1_with_ea.<locals>.<lambda>r   r   r   r	   r&   r'   assert_frame_equalr2   r1   r   r   r   test_apply_axis1_with_ea1   s    r@   c                  C   sH   t tdddtjtdddd} | jdd d	d
}t||  d S )N20130101   periodss)unitr   r   c                 S   s   | S r:   r   r;   r   r   r   r   A   r    z/test_apply_mixed_datetimelike.<locals>.<lambda>r   r   )	r   r
   pdZto_timedeltar#   Zaranger&   r'   r>   r?   r   r   r   test_apply_mixed_datetimelike8   s    
rI   c                 C   s   t  }|tj}|jst|tj}|js2t| d d }|dd }ttj| j	d}t
|| | jd d g f }|jdd dd}ttj| jd}t
|| t dgd}|jd	d dd}t
|| d S )
Nr   c                 S   s   |   S r:   r)   r;   r   r   r   r   P   r    z"test_apply_empty.<locals>.<lambda>r+   c                 S   s   |   S r:   rJ   r;   r   r   r   r   U   r    r   r   ac                 S   s   | d S )NrL   r   r;   r   r   r   r   [   r    )r   r&   r#   r%   emptyr*   r)   r   nancolumnsr'   r(   locr+   r>   )r0   empty_framer1   Zno_rowsr2   no_colsr   r   r   test_apply_emptyE   s     

rS   c                  C   s   t  } g }| j|jddd}t||  | j|jddd}tg tjg tdt	j
d}t|| t ddd	gd
}|j|jddd}t|| |j|jddd}tg tjg tdt	j
d}t|| |g kstd S )Nr   expandr   result_typereducer/   r+   r/   rL   bcrO   )r   r&   appendr'   r>   r   rH   Indexobjectr#   float64r(   r*   )rQ   r<   r1   r2   Zempty_with_colsr   r   r   test_apply_with_reduce_empty_   s    ra   funcsumprodanyr   c                 C   s<   t dddgd}|tt| }t||  }t|| d S )NrL   rZ   r[   r\   )r   r&   getattrr#   r'   r(   )rb   r4   r1   r2   r   r   r   test_apply_funcs_over_emptyu   s    rg   c                  C   sb   t dddgd} |  }td| jd}t|| | j }tg tg t	j
d}t|| d S )NrL   rZ   r[   r\   r   rK   rY   )r   Znuniquer   rO   r'   r(   TrH   r^   r#   r`   r4   r1   r2   r   r   r   test_nunique_empty   s    
rj   c                  C   s   t dddgdddgddd	ggd
d
dgd} | jdd dd}tdddgd
d
dg}t|| | jjdd dd}t|| d S )Nr   r"   rB   r!               	   rL   r[   rK   c                 S   s   | d S Nr   r   rE   r   r   r   r      r    z/test_apply_standard_nonunique.<locals>.<lambda>r   c                 S   s   | d S rp   r   rq   r   r   r   r      r    r   )r   r&   r   r'   r(   rh   ri   r   r   r   test_apply_standard_nonunique   s    *rr   r)   minmaxstdz	args,kwdsZno_args_or_kwds)idr   Zaxis_from_argsr   Zaxis_from_kwdsZnumeric_onlyTZoptional_kwdsZargs_and_kwdshowaggr&   c                 C   sb   t |dkr,|dkr,| jtjjtdd t|||f||}t||||}t	|| d S )Nr   rx   z>agg/apply signature mismatch - agg passes 2nd argument to func)Zraisesreason)
lennodeZ
add_markerpytestmarkZxfail	TypeErrorrf   r'   r(   )requestr0   rb   argskwdsrw   r1   r2   r   r   r   test_apply_with_string_funcs   s    r   c                    sp   j tjdd}t  g jd}t||  j tjddd} jddtfdd jD }t||  j  fd	d
ddd}tt	t
 jtgt
 j d j jd}t||  j  fdd
dd}tt	t
 jtfdd jD d jd}t|| |}|j dd
 ddd}t|| |}|j dd
 ddd}| }t|| d S )N	broadcastrV   rK   r   rU   r   c                    s   i | ]
}| qS r   r   .0r[   mr   r   
<dictcomp>   s      z(test_apply_broadcast.<locals>.<dictcomp>c                    s   t tt jS r:   )listrangerz   rO   r;   r0   r   r   r      r    z&test_apply_broadcast.<locals>.<lambda>r`   )r/   r+   rO   c                    s   t tt jS r:   )r   r   rz   r+   r;   r   r   r   r      r    c                    s   i | ]
}| qS r   r   r   r   r   r   r      s      )r/   r+   c                 S   s
   dddgS Nr   r"   rB   r   r;   r   r   r   r      r    c                 S   s   t dddgtddS )Nr   r"   rB   abcrK   )r   r   r;   r   r   r   r      r    )r&   r#   r)   r   r+   r'   r>   rO   r   r   rz   copy)r0   int_frame_const_colr1   r2   r4   r   )r0   r   r   test_apply_broadcast   sT    

 r   c                 C   s   dd }| j |dd | j |ddd | j tjdd}|  dd }t|| | j tjddd}| j d	d dd
}t|| | j dd dd}| d }t|| |j |dd |j |ddd d S )Nc                 S   s"   t | tjst| jdkstd S Nr   )r.   r#   ndarrayr*   ndimr;   r   r   r   _assert_raw   s    z#test_apply_raw.<locals>._assert_rawTrawr   r   r   c                 S   s
   | j  S r:   valuesr)   r;   r   r   r   r      r    z test_apply_raw.<locals>.<lambda>c                 S   s
   | j  S r:   r   r;   r   r   r   r      r    r   c                 S   s   | d S Nr"   r   r;   r   r   r   r      r    r"   )r&   r#   r)   r'   r(   r>   )r0   Zmixed_type_framer   r1   r2   r   r   r   test_apply_raw   s    r   c                 C   s>   | j d }| jtjdd| }t| |}||ks:td S )Nr   r   r   )r+   r&   r#   r)   r,   r*   )r0   r3   r1   r2   r   r   r   test_apply_axis1   s    
r   c                  C   s   t dgdgd} | d d jtjdd}ttjtjg ddd	}t	|| t dgdgd} | jd
d dd}tdgdgd	}t	|| | jdd dd}tdgdgd	}t	|| d S )Nfoo      ?rG   r   r   r   int64rX   rK   c                 S   s   | d S )Nr   r   r;   r   r   r   r     r    z/test_apply_mixed_dtype_corner.<locals>.<lambda>c                 S   s   | d S )Nr   r   r;   r   r   r   r     r    )
r   r&   r#   r)   r   rN   rH   r^   r'   r(   ri   r   r   r   test_apply_mixed_dtype_corner  s    r   c               	   C   s   t dddgd} t dddgd}dd }tjdd	> || d
d  || dd  ||dd  ||dd  W 5 Q R X | jdd dd}t|t std S )NrL   rZ   r[   rK   r\   c              	      s   t jdd$ t dt tjg dd}W 5 Q R X t|tj d fdd		}|  |d
d |dd |ddd d S )NT)recordr   Zf8rX   r   Fc                    sN    j | |d}r< | }t|ts,t|j|ksJtnt|tsJtd S )Nr   )r&   Z_get_agg_axisr.   r   r*   r+   r   )r   r   r1   Zagg_axisr4   fZis_reductionr   r   _checkit#  s    
z=test_apply_empty_infer_type.<locals>._check.<locals>._checkitr   r   r   r   )r   F)warningscatch_warningssimplefilterRuntimeWarningr#   arrayr.   r   )r4   r   Ztest_resr   r   r   r   _check  s    	

z+test_apply_empty_infer_type.<locals>._checkr   r   c                 S   s   | S r:   r   r;   r   r   r   r   2  r    z-test_apply_empty_infer_type.<locals>.<lambda>c                 S   s   |   S r:   rJ   r;   r   r   r   r   3  r    c                 S   s   | S r:   r   r;   r   r   r   r   4  r    c                 S   s   |   S r:   rJ   r;   r   r   r   r   5  r    c                 S   s   |   S r:   rJ   r;   r   r   r   r   7  r    r   r   )r   r#   r$   r&   r.   r*   )rR   no_indexr   r1   r   r   r   test_apply_empty_infer_type  s    r   c                 C   s   ddd}ddd}ddd}| j |d	d
}|  dd }t|| | j |d	d
}|  dd }t|| | j |dd	d}|  dd }t|| d S )Nr   c                 S   s   | | S r:   r   r<   howmuchr   r   r   add_some<  s    z+test_apply_with_args_kwds.<locals>.add_somec                 S   s   |   | S r:   rJ   r   r   r   r   agg_and_add?  s    z.test_apply_with_args_kwds.<locals>.agg_and_addr   c                 S   s   | | | S r:   r   )r<   subdivider   r   r   subtract_and_divideB  s    z6test_apply_with_args_kwds.<locals>.subtract_and_divider"   )r   c                 S   s   | d S r   r   r;   r   r   r   r   F  r    z+test_apply_with_args_kwds.<locals>.<lambda>c                 S   s   |   d S r   rJ   r;   r   r   r   r   J  r    r"   )r   r   c                 S   s   | d d S )N       @r   r;   r   r   r   r   N  r    )r   )r   )r   )r&   r'   r>   r(   )r0   r   r   r   r1   r2   r   r   r   test_apply_with_args_kwds;  s    


r   c                 C   s   |  t}t||  d S r:   )r&   r   r'   r>   )r0   r1   r   r   r   test_apply_yield_listR  s    
r   c                 C   s@   t j| d jd d d< | d}| jt jdd}t|| d S )Nr   r"   r   r   )r#   rN   Zilocr)   r&   r'   r(   )r0   r2   r1   r   r   r   test_apply_reduce_SeriesW  s    
r   c                  C   s   t ddgddggddgddgd	} | jtd
d}tddddddg| jd}t|| | jtdd}tddddddg| jd}t|| d S )Nr   r"   rB   r!   r   r   i0i1rO   r+   r   r   )r   r   rK   r   )r   r&   dictr   rO   r'   r(   r+   )datar1   r2   r   r   r   test_apply_reduce_to_dict^  s    "r   c                  C   s   t tjdd} | jtjdd}t dd |  D | jd}t	
|| | jtjdd}t d	d | j D | jdj}t	
|| d S )
N   
   r   r   c                 S   s   i | ]\}}||  qS r   describer   ivr   r   r   r   o  s      z2test_apply_differently_indexed.<locals>.<dictcomp>r\   r   c                 S   s   i | ]\}}||  qS r   r   r   r   r   r   r   s  s      )r   r#   randomrandnr&   r   r   itemsrO   r'   r>   rh   r+   ri   r   r   r   test_apply_differently_indexedk  s     r   c               
   C   s   t dddgdddgdddgdddgdd	dgdd
dggdddgd} dd }| j|dd}t tdddddgtdddddgtdddddgtdddddgtdddd	dgtdddd
dggdddgd} | j|dd}t|| d S )Nr   ZABC02   ZYUM0r   ZDEF0r"   ZABC1ZYUM1ZDEF1rL   marketpositionr\   c                 S   s   | d S )Nr   r   )rr   r   r   r     s    ztest_apply_bug.<locals>.fr   i  rB   r!   rk   rl   )r   r&   r   r'   r(   )Z	positionsr   r2   r1   r   r   r   test_apply_bugw  s0    r   c                  C   s   t dddddddddddgdddddddddddgdddddddddddgtjdtjdtjdd} | jd	d
 ddjdd}t||  d S )Nr   barZoneZtwoZdullZshiny   )r   r   r   r   EFc                 S   s   | S r:   r   r;   r   r   r   r     r    z,test_apply_convert_objects.<locals>.<lambda>r   r   Tr   )r   r#   r   r   r&   _convertr'   r>   r?   r   r   r   test_apply_convert_objects  sX    


/r   c                    s     dd }t j jd}t||  j dd dd}t j jd}t||   dd }tt jt	 jdf j jd}t
||  j d	d dd}t fd
d  D } j|_t|| d S )Nc                 S   s   | j S r:   namer;   r   r   r   r     r    z(test_apply_attach_name.<locals>.<lambda>rK   c                 S   s   | j S r:   r   r;   r   r   r   r     r    r   r   c                 S   s   t | jt| S r:   r#   repeatr   rz   r;   r   r   r   r     r    r+   rO   c                 S   s   t | jt| S r:   r   r;   r   r   r   r     r    c                 3   s$   | ]}t |d  t jV  qdS )r   N)r#   r   rz   rO   r   tr   r   r   	<genexpr>  s    z)test_apply_attach_name.<locals>.<genexpr>)r&   r   rO   r'   r(   r+   r   r#   Ztilerz   r>   
itertuples)r0   r1   r2   r   r   r   test_apply_attach_name  s&    r   c                 C   s   t dddgdddgg}tddgddgd	d
gg|ddgd}|dd d}tddgddgd	d
gg|ddgd}tj||dd d S )NrL   rZ   r[   r3   r   r"   rB   r!   rk   rl   Zcol1Zcol2r   c                 S   s   t t| t| dS )N)rs   rt   )r   rs   rt   r;   r   r   r   r     r    z(test_apply_multi_index.<locals>.<lambda>rs   rt   TZ
check_like)r   Zfrom_arraysr   r&   r'   r>   )r0   r+   rE   r1   r2   r   r   r   test_apply_multi_index  s
    $$r   c            
      C   s   t ddgddgg} tddddddg}t ddgdd	gg}tddddd	dg}d
d }| |f||ffD ]R\}}|j|dd}|j|dd}||}	t|| t|| t|	| qpd S )Nr   r   Zspameggs)r   r   r   r   r"   rB   c                 S   s   |   S r:   )Zto_dictr;   r   r   r   r     r    z!test_apply_dict.<locals>.<lambda>rW   r   rT   )r   r   r&   r'   r(   r>   )
r   ZA_dictsr   ZB_dictsfnr4   ZdictsZreduce_trueZreduce_falseZreduce_noner   r   r   test_apply_dict  s    
r   c           
      C   s  |  dd }t|| d  |  t |  dd d d }t|tsLttddgd	}| d
d jd }|t	kszttddgd	}| dd jd }|t	ksttt
jd}| }ddddg}||_| t}||_| t}t|| td|d< td|d< | t}dD ],}|jd|f t|jd|f ks tq t ttddttddtg g g dg}|D ]0}tdd fD ]}	| |	}t|| qqd S )Nc                 S   s   | d S r   r   r;   r   r   r   r     r    ztest_applymap.<locals>.<lambda>r"   c                 S   s   | | fS r:   r   r;   r   r   r   r   	  r    r   r   r   rL   )r   c                 S   s   | S r:   r   r;   r   r   r   r     r    r   c                 S   s   | S r:   r   r;   r   r   r   r     r    )rB   r!   rA   r   z1 min	timedelta)r   r   ABCr\   rK   r   r   r   c                 S   s   | S r:   r   r;   r   r   r   r   /  r    )applymapr'   r>   typer.   tupler*   r   dtypesr_   r#   r   r   rO   strr	   rH   	TimedeltarP   r   round)
r0   Zappliedr1   r4   Zdf2colsr2   r   Zempty_framesrb   r   r   r   test_applymap  sB    



*
r   c                  C   sF   t ddgddggjdd dd} t ddgdd	gg}t| | d S )
Nr   r"   rB   r!   c                 S   s   | | S r:   r   r<   yr   r   r   r   6  r    z&test_applymap_kwargs.<locals>.<lambda>r   rk   rl   )r   r   r'   r>   )r1   r2   r   r   r   test_applymap_kwargs4  s    "r   c                 C   sj   |  dd }|  }tjjdd| jtd}tj||< |j dd dd}| }tj||< t	
|| d S )	Nc                 S   s   t t| S r:   rz   r   r;   r   r   r   r   =  r    z)test_applymap_na_ignore.<locals>.<lambda>r   r"   )sizer/   c                 S   s   t t| S r:   r   r;   r   r   r   r   B  r    r   )Z	na_action)r   r   r#   r   randintr-   boolrH   ZNAr'   r>   )r0   Zstrlen_frameZfloat_frame_with_namaskZstrlen_frame_na_ignoreZstrlen_frame_with_nar   r   r   test_applymap_na_ignore;  s    
 
r   c                  C   s*   t tddd} dd }t| | d S )Nz1/1/2000r   rC   c                 S   s   | j | j| jfS r:   )hourdaymonthr;   r   r   r   rb   M  s    z*test_applymap_box_timestamps.<locals>.func)r   r
   r   r   )Zserrb   r   r   r   test_applymap_box_timestampsI  s    r   c               	   C   s   t tdtdgtdddtdddgtdtdgtjdddtjdddgd	} | d
d }t ddgddgddgddgd	}t|| d S )Nz
2011-01-01z
2011-01-02z
US/Easternr8   z1 daysz2 daysM)freqrL   rZ   r[   r3   c                 S   s
   t | jS r:   )r   __name__r;   r   r   r   r   e  r    z#test_applymap_box.<locals>.<lambda>r	   r   Period)r   r	   rH   r   r  r   r'   r>   ri   r   r   r   test_applymap_boxT  s(    

r  c                     s^   ddl m  tdtdddgi} |  fdd} |  fdd} | jj}|d	ksZtd S )
Nr   BDayx1i  r   c                    s
   |    S r:   r   r;   r  r   r   r   v  r    z:test_frame_apply_dont_convert_datetime64.<locals>.<lambda>c                    s
   |    S r:   r   r;   r  r   r   r   w  r    zM8[ns])Zpandas.tseries.offsetsr  r   r   r   r  r/   r*   r4   r1   r   r  r   (test_frame_apply_dont_convert_datetime64q  s    r	  c                  C   s   t dtddddi} | dd }t||  | dd }t dtd	dddi}t|| t dd
ddd
gidd} | dd }t||  d S )Ndtz
2015-01-01rB   zEurope/Brussels)rD   r9   c                 S   s   | S r:   r   r;   r   r   r   r     r    z,test_apply_non_numpy_dtype.<locals>.<lambda>c                 S   s   | t d S )NZ1day)rH   r   r;   r   r   r   r     r    z
2015-01-02rL   rZ   r[   r   rX   c                 S   s   | S r:   r   r;   r   r   r   r     r    )r   r
   r&   r'   r>   ri   r   r   r   test_apply_non_numpy_dtype}  s    r  c                  C   sR   t ddgddggddgd} t ddggddgdgd}| dg}t|| d S )	Nr   r   r"   rB   rL   r\   rs   r   )r   rx   r'   r>   r4   r2   r1   r   r   r   test_apply_dup_names_multi_agg  s    r  c                  C   sd   dd } t tdtdd}|j| dd}tdddgdddgdddgdddgg}t|| d S )	Nc                 S   s"   d| d  d| d  d| d  gS )Nr"   r   r   r   r   rowr   r   r   
apply_list  s    z3test_apply_nested_result_axis_1.<locals>.apply_list)r!   r!   ABCDr\   r   r           )r   r#   zerosr   r&   r   r'   r(   )r  r4   r1   r2   r   r   r   test_apply_nested_result_axis_1  s    "r  c                  C   sR   t dtdddgidd} | dd }t||  | d	d }t||  d S )
Nr   Z2020r7   r8   zdatetime64[ns, UTC]rX   c                 S   s   | S r:   r   r;   r   r   r   r     r    z7test_apply_noreduction_tzaware_object.<locals>.<lambda>c                 S   s   |   S r:   )r   r;   r   r   r   r     r    r=   r?   r   r   r   %test_apply_noreduction_tzaware_object  s     r  c                     sj   t ddddgi} g   fdd} fdd}||fD ].} d d = | j|dd	  t| jks6tq6d S )
NrL   r   r"   rB   c                    s     | j d S r:   r]   r   r  namesr   r   reducing_function  s    z8test_apply_function_runs_once.<locals>.reducing_functionc                    s     | j | S r:   r  r  r  r   r   non_reducing_function  s    z<test_apply_function_runs_once.<locals>.non_reducing_functionr   )r   r&   r   r+   r*   r4   r  r  rb   r   r  r   test_apply_function_runs_once  s    
r  c                     sp   t ddddgi} g   fdd} fdd}||fD ]4} d d = | j|d	dd
  t| j ks6tq6d S )NrL   r   r"   rB   c                    s     |  d S r:   extendr  r   r   r   r    s    z<test_apply_raw_function_runs_once.<locals>.reducing_functionc                    s     |  | S r:   r  r  r  r   r   r    s    
z@test_apply_raw_function_runs_once.<locals>.non_reducing_functionT)r   r   )r   r&   r   rL   to_listr*   r  r   r  r   !test_apply_raw_function_runs_once  s    
r!  c                     sf   t ddddgi} g   fdd} fdd}||fD ]*} d d = | |  | j ks6tq6d S )	NrL   r   r"   rB   c                    s     |  d S r:   r]   valr  r   r   r    s    z;test_applymap_function_runs_once.<locals>.reducing_functionc                    s     |  | S r:   r"  r#  r  r   r   r    s    
z?test_applymap_function_runs_once.<locals>.non_reducing_function)r   r   rL   r   r*   r  r   r  r    test_applymap_function_runs_once  s    

r%  c                  C   sP   t tddgdgd} t tddgdgtd}| dd }t|| d S )Ns   abcds   efghcolr\   )rO   r/   c                 S   s
   |  dS )Nr_   r   r;   r   r   r   r     r    z-test_apply_with_byte_string.<locals>.<lambda>)r   r#   r   r_   r&   r'   r>   r  r   r   r   test_apply_with_byte_string  s    r'  r$  asd   c                    s`   dd dddt jg}td|idd}|j fdd}t fd	d
|D dd}t|| d S )Nr(  r)  ZcderL   r   rX   c                    s   |  kS r:   r   r;   r#  r   r   r     r    z/test_apply_category_equalness.<locals>.<lambda>c                    s$   g | ]}t |rtjn| kqS r   )rH   Zisnullr#   NaN)r   r<   r#  r   r   
<listcomp>  s     z1test_apply_category_equalness.<locals>.<listcomp>r   )r#   r*  r   rL   r&   r   r'   r(   )r$  Z	df_valuesr4   r1   r2   r   r#  r   test_apply_category_equalness  s     r,  c                  C   sV   t tjdd} | jtjjddj}|dks2t| jtjjddj}|dksRtd S )Nr   r"   r   r   )r   r"   )rl   r"   )	r   r#   r   Zrandr&   Zfftr-   r*   Zrfftr  r   r   r   test_infer_row_shape  s
    r-  c                  C   s"  t ddgddggddgd} | jdd dd}td	d
 |  D }t|| tdtdg| d< | jdd dd}t|| | d | d  dd }tddiddig}t|| t  } dddg| d< dddg| d< tdddg| d< | jdd dd}ti i i g}t|| d S )Nr   r"   rL   rZ   r\   c                 S   s   d| d | d  iS NrE   rL   rZ   r   r;   r   r   r   r     r    z,test_with_dictlike_columns.<locals>.<lambda>r   c                 S   s   g | ]}d diqS )rE   rB   r   r   r   r   r   r+    s     z.test_with_dictlike_columns.<locals>.<listcomp>2017-05-01 00:00:002017-05-02 00:00:00r'   c                 S   s   d| d | d  iS r.  r   r;   r   r   r   r     r    c                 S   s   d| iS )NrE   r   r;   r   r   r   r      r    rE   rB   XYZauthorZBBCZNBCZN24Z	publisherz17-10-2010 07:15:30z13-05-2011 08:20:35z15-01-2013 09:09:09datec                 S   s   i S r:   r   r;   r   r   r   r   +  r    )	r   r&   r   r   r'   r(   r	   rH   Zto_datetimeri   r   r   r   test_with_dictlike_columns  s*    r6  c                  C   s   t ddgddggddgd} | jdd ddd	}t d
ddgi}t|| tdtdg| d< | jdd ddd	}t|| d S )Nr   r"   rL   rZ   r\   c                 S   s   d| d | d  iS r.  r   r;   r   r   r   r   3  r    z7test_with_dictlike_columns_with_infer.<locals>.<lambda>rT   rU   rE   rB   r/  r0  r'   c                 S   s   d| d | d  iS r.  r   r;   r   r   r   r   ;  r    )r   r&   r'   r>   r	   ri   r   r   r   %test_with_dictlike_columns_with_infer0  s    r7  c                  C   s  t ttjdddddgtddddd	} | dd
g jtdd}tdd | dd
g  D }t	
|| | ddg jtdd}tdd | ddg  D }t	
|| t tdd
gdggtdgddggd} tddg| _| jdd dd}tg dgg| jd}t	
|| d S )Nr!   rL   r   Zofwordsz
2016-10-01H)rD   r   )rL   rZ   r   rZ   r   r   c                 S   s   g | ]}|d d qS r   Nr   r   r   r   r   r+  J  s     z.test_with_listlike_columns.<locals>.<listcomp>r   c                 S   s   g | ]}|d d qS r:  r   r   r   r   r   r+  N  s     qzr   r   )r   Zj0)r   Zj1c                    s    fdd d D S )Nc                    s   g | ]}| d  kr|qS r   r   )r   elr  r   r   r+  U  s      z@test_with_listlike_columns.<locals>.<lambda>.<locals>.<listcomp>r<   r   r  r   r  r   r   U  r    z,test_with_listlike_columns.<locals>.<lambda>rK   )r   r   r#   r   r   r
   r&   r   r   r'   r(   r   from_tuplesr+   ri   r   r   r   test_with_listlike_columns?  s"    
*r?  c                  C   s\   t ddgddgtdtdgd} | jdd	 d
d}tdd |  D }t|| d S )Nr   r   r   r   z2017-11-29 03:30:00z2017-11-29 03:45:00)numberstringr   c                 S   s   | j | jfS r:   r@  rA  r  r   r   r   r   g  r    z1test_infer_output_shape_columns.<locals>.<lambda>r   r   c                 S   s   g | ]}|j |jfqS r   rB  r   r   r   r   r+  h  s     z3test_infer_output_shape_columns.<locals>.<listcomp>)r   r	   r&   r   r   r'   r(   ri   r   r   r   test_infer_output_shape_columnsZ  s    
rC  c                  C   s  t tjdddddgd} | jdd d	d
}tdd |  D }t|| | jdd d	d
}tdd |  D }t|| t dd	ddgit	dd} | jdd d	d
}tdd |  D | j
d}t|| | jdd d	d
}tdd |  D | j
d}t|| t tdtdtdtdgddddgddddgd	dddgd} dd  }| j|d	d
}td!d |  D }t|| d S )"Nrl   rB   r   r   r   r\   c                 S   s
   dddgS r   r   r;   r   r   r   r   q  r    z:test_infer_output_shape_listlike_columns.<locals>.<lambda>r   r   c                 S   s   g | ]}d ddgqS r   r"   rB   r   r   r   r   r   r+  r  s     z<test_infer_output_shape_listlike_columns.<locals>.<listcomp>c                 S   s   ddgS Nr   r"   r   r;   r   r   r   r   u  r    c                 S   s   g | ]}d dgqS r   r"   r   r   r   r   r   r+  v  s     rL   r"   r   rK   c                 S   s
   t dS r   r#   Zonesr  r   r   r   r   |  r    c                 S   s   g | ]}t d qS r   rG  r   r   r   r   r+  }  s     c                 S   s
   t dS r   rG  r  r   r   r   r     r    c                 S   s   g | ]}t d qS r   rG  r   r   r   r   r+    s     z
2010-02-01z
2010-02-04z
2010-02-05z
2010-02-06ro   rk   r!   r  c                 S   s   dS )NrF  r   r;   r   r   r   fun  s    z5test_infer_output_shape_listlike_columns.<locals>.func                 S   s   g | ]}d qS )rF  r   r   r   r   r   r+    s     )r   r#   r   r   r&   r   r   r'   r(   r   r+   r	   )r4   r1   r2   rI  r   r   r   (test_infer_output_shape_listlike_columnsl  s:    


rJ  c                  C   s   t tjdddddgd} | jdd d	d
}tdd |  D }t|| | jdd d	d
}tdd |  D }t|| d S )Nr!   rB   r   r   r   r\   c                 S   s
   dddgS r   r   r;   r   r   r   r     r    z3test_consistent_coerce_for_shapes.<locals>.<lambda>r   r   c                 S   s   g | ]}d ddgqS rD  r   r   r   r   r   r+    s     z5test_consistent_coerce_for_shapes.<locals>.<listcomp>c                 S   s   ddgS rE  r   r;   r   r   r   r     r    c                 S   s   g | ]}d dgqS rF  r   r   r   r   r   r+    s     )	r   r#   r   r   r&   r   r   r'   r(   ri   r   r   r   !test_consistent_coerce_for_shapes  s    rK  c                 C   sd   | }|j dd dd}| jddddd	}t|| |j d
d dd}|ddg }t|| d S )Nc                 S   s   t dddgdddgdS )Nr   r"   rB   testotherr   rK   r   r;   r   r   r   r     r    z'test_consistent_names.<locals>.<lambda>r   r   rL  rM  r   r   r\   c                 S   s   t ddgddgdS )Nr   r"   rL  rM  rK   rN  r;   r   r   r   r     r    )r&   renamer'   r>   r   r4   r1   r2   r   r   r   test_consistent_names  s     
rQ  c                    s4  | }|j dd ddd}| }dddg|_t|| |j dd ddd}|d	d
g  }ddg|_t|| |j dd ddd}| }t|| dddg |j  fddddd}| }t|| |j dd dd}| }t|| dddg |j  fdddd}| } |_t|| d S )Nc                 S   s
   dddgS r   r   r;   r   r   r   r     r    z"test_result_type.<locals>.<lambda>r   rT   rU   r   r"   c                 S   s   ddgS rE  r   r;   r   r   r   r     r    r   r   c                 S   s
   dddgS r   r   r;   r   r   r   r     r    r   rM  r&  r  c                    s   t dddg dS Nr   r"   rB   rK   rN  r;   r\   r   r   r     r    c                 S   s   t dddg| jdS rR  )r   r+   r;   r   r   r   r     r    r   c                    s   t dddg dS rR  rN  r;   r\   r   r   r     r    )r&   r   rO   r'   r>   rP  r   r\   r   test_result_type  s8    


  
rS  boxc                 C   s   t | S r:   )r   r;   r   r   r   r     r    r   c                 C   s   t | S r:   )r   r;   r   r   r   r     r    c                 C   s   t j| ddS )Nr   rX   )r#   r   r;   r   r   r   r     r    r   r   r   )idsc                    s   |}|j  fdddd}t fdd| D }t|| |j  fddddd	}|d
dg jdddd}t|| d S )Nc                    s    ddgS rE  r   r;   rT  r   r   r     r    z,test_consistency_for_boxed.<locals>.<lambda>r   r   c                    s   g | ]} d dgqS rF  r   r   rV  r   r   r+    s     z.test_consistency_for_boxed.<locals>.<listcomp>c                    s    ddgS rE  r   r;   rV  r   r   r     r    rT   rU   r   r   r   rG   r\   )r&   r   r   r'   r(   rO  r>   )rT  r   r4   r1   r2   r   rV  r   test_consistency_for_boxed  s    rW  c              	   C   s$  | dkrdnd}t jdd t |}t |}| }|jt j| d}t|| |jt jg| d}| }| dkrt	|j
dgg|_
nt	|jdgg|_t|| |jt jt jg| d}t||g|d}| dkrt	|j
ddgg|_
nt	|jddgg|_t|| W 5 Q R X d S )	N   r   r+   r   r   r   r   r   r%   absolute)r#   r$   absr%   r   r&   r'   r>   r   Zfrom_productrO   r+   r   )r   r0   
other_axisZf_absZf_sqrtr2   r1   r   r   r   test_agg_transform  s.    

r\  c                  C   s   t tddd} | ddg}t ddgddgdddgddgd	}t|| | ddgd
dgd}t ddtjgdtjdgdddgddd
gd	}t||| d S )Nrk   rG   rs   rt   r   r!   r   r   r   rc         @r        @g      9@)r   r   rx   r'   r>   r#   rN   Zreindex_likeri   r   r   r   	test_demo  s      r_  c                  C   sl   dddgi} t | }|ddi}tddi}t|| |d ddi}tddidd}t|| d S )Nr   r   r   countr"   r   )r   rx   r   r'   r(   )r   r4   r1   r2   r   r   r   !test_agg_with_name_as_column_name-  s    ra  c               	   C   s   t dddgdddgddd	gtd
ddd} t ddgddgddgtdtjgdddgd}td  | ddg}W 5 Q R X t|| td   | ddddg ddg}W 5 Q R X |ddddg 	ddg}t|| d S )Nr   r"   rB   r   r         @r   r   bazrA   rC   r   r   r   r   rl         @	foobarbazr6   rs   rc   rK   r   r   r   r   )
r   r
   r	   rH   ZNaTr'   assert_produces_warningrx   r>   Zreindex)Zmdfr2   r1   r   r   r   "test_agg_multiple_mixed_no_warning=  s,    

$rh  c              	   C   s$  | dkrdnd}|j |  d d  \}}tj|j| d|j| d|j| dgdd}dddg|_| dkrt|j	n|}|j
dddg| d}t|| |d|di}|j
|| d}t|||  |||  g||gd	}t|| |dg|dgi}|j
|| d}t|t|||  gdgd	|t|||  gdgd	i}| d
kr`|j	n|}t|| |ddg|ddgi}|j
|| d}tj|t|||  |||  gddgd	|t|||  |||  gddgd	idd}| d
kr|j	n|}t|| d S )NrX  r   r   r"   r   r)   rt   rc   rK   >   r   rO   )ZaxesuniqueZsort_valuesrH   concatr)   rt   rc   rO   rh   rx   r'   r>   r   rP   r(   r   )r   r0   r[  Zname1Zname2r2   r1   rb   r   r   r   test_agg_reduce_  sn    


    rk  c               	   C   s  t dddgdddgddd	gtd
ddd} | d}tdddtd
g| jd}t|| | dg}t dddtd
ggdg| jd}t|| tj	t
ddd | d}W 5 Q R X tdddgdddgd}t|| | dg}t dddggdgdddgd}t|| d S )Nr   r"   rB   r   r   rb  r   r   rc  rA   rC   rd  rs   rK   r   Select only validF)matchZcheck_stacklevelrc   rl   re  rf  r   r   r   )r   r
   rx   r   r	   rO   r'   r(   r>   rg  FutureWarningri   r   r   r   test_nuiscance_columns  s@    
	
  
  ro  c                 C   s  t d ddgdtjdgdd dgd}t|| dd	i}tddi}t|| t|| dd
i}tddi}t|| t|| d	d
g}t|| d	d
gd	d
gd	d
gd}t dddddddddd}tj||dd tj||dd t|| d	}| }t|| d S )Nr"   rB   r   rb  r   r   r   r   r`  r   )r`  r   Tr   )	r   r#   rN   rf   r   r'   r(   r>   r`  )rw   r4   r1   r2   Zresult1Zresult2r   r   r   test_non_callable_aggregates  s0    rp  c                 C   s   t d ddgdtjdgdd dgd}t|| d|d	}|d
ksF|dkr\t|jd
 |jd}nt|jd |jd}t	|| d S )Nr"   rB   r   rb  r   r   r   r   r   r   r+   rK   r   )
r   r#   rN   rf   r   r-   rO   r+   r'   r(   )rw   r   r4   r1   r2   r   r   r   test_size_as_str  s    rq  c                  C   s   t dddgdtjdgdd dgd} dd }| |}tddgdgddggd	d
dgd}t|| | |g}|dj}t	|| d S )Nr"   rB         ?r   r   r   c                 S   s   t |   S r:   )r   Zdropnari  )Z	group_colr   r   r   rb     s    z&test_agg_listlike_result.<locals>.funcr   r   r   rK   rb   )
r   r#   rN   rx   r   r'   r(   Zto_framerh   r>   )r4   rb   r1   r2   r   r   r   test_agg_listlike_result  s    $
"rs  zdf, func, expectedr`   rX   varZmedianr"   r   rB   rr  g۞?g      ?c                 C   s   | j ||d}t|| d S )Nr   )rx   r'   r(   r4   rb   r2   r   r1   r   r   r   test_agg_cython_table  s    'rv  ZcumprodZcumsumc                 C   s8   |dks|dkr| d}| j||d}t|| d S )NrO   r   r`   r   )r   rx   r'   r>   ru  r   r   r   test_agg_cython_table_transformC  s    
rw  zargs, kwargsrD  )rn   rm      rF  rH  rZ   r   rL   rZ   )rL   rZ   r[   c                 C   sd   ddd}t ddgddgg}| dkr4tdd	g}ntd
dg}|j|| f||}t|| d S )NrB   c                 S   s   |   || |  S r:   rc   )r<   rL   rZ   r[   r   r   r   r   l  s    ztest_agg_args_kwargs.<locals>.fr   r"   r!   r   r^  g      @r]  g       @)rB   )r   r   rx   r'   r(   )r   r   kwargsr   r4   r2   r1   r   r   r   test_agg_args_kwargs^  s    
r|  num_colsrk   c                 C   sL   t dddg}| }td|t| d}|dd  |j|jksHtd S )Nz
1950-06-30z
1952-10-24z
1953-05-29r   r   c                 S   s   | S r:   r   r;   r   r   r   r     r    z,test_frequency_is_original.<locals>.<lambda>)rH   ZDatetimeIndexr   r   r   r&   r   r*   )r}  r+   originalr4   r   r   r   test_frequency_is_original{  s
    r  c                  C   sb   t dddt dddt dddg} tdddg| d	}|jd
d dd}t| | d}t|| d S )Nz2019-03-15 12:34:31.909000+0000r7   r8   z2019-03-15 12:34:34.359000+0000z2019-03-15 12:34:34.660000+0000r   r   r"   )r   r+   c                 S   s   | j S r:   r   r;   r   r   r   r     r    z.test_apply_datetime_tz_issue.<locals>.<lambda>r   )r+   r   )r	   r   r&   r   r'   r(   )Z
timestampsr4   r1   r2   r   r   r   test_apply_datetime_tz_issue  s    


r  r4   rL   r[   r3   rG   methodc              	   C   sR   t jtdd. t| ddg | }t| ddg | }W 5 Q R X t || d S )Nrl  )rm  r   r   )r'   rg  rn  rf   r(   )r4   r  Znone_in_first_column_resultZnone_in_second_column_resultr   r   r   =test_consistency_of_aggregates_of_columns_with_missing_values  s    r  r&  c                 C   s:   t d| ggddgd}|dd }|j}t|| d S )Nr   rL   rZ   r\   c                 S   s   | j S r:   rX   r;   r   r   r   r     r    z"test_apply_dtype.<locals>.<lambda>)r   r&   r   r'   r(   )r&  r4   r1   r2   r   r   r   test_apply_dtype  s    r  c                 C   s|   t tdtddd}| }dd }| }|d  d7  < |j|dd}t|| | slt|| nt|| d S )	Nd      ry  c                 S   s*   | j }| jd  d7  < | j |k	s&t| S )NrL   r   )Z_mgrrP   r*   )r  Zmgrr   r   r   rb     s    z!test_apply_mutating.<locals>.funcrL   r   r   )r   r   r   r&   r'   r>   )Zusing_array_managerr4   Zdf_origrb   r2   r1   r   r   r   test_apply_mutating  s    r  c                  C   sb   t ddgddgddgddgd	d
ggddgd} | jdd dd}tg g dtd}t|| d S )Nr   r"   rB   r!   rk   rl   rm   rn   ro   r   rL   rZ   r\   c                 S   s   g S r:   r   r;   r   r   r   r     r    z.test_apply_empty_list_reduce.<locals>.<lambda>rW   r   ry  rX   )r   r&   r   r_   r'   r(   ri   r   r   r   test_apply_empty_list_reduce  s    .r  c                  C   sf   t ddggd ddgd} | ddd	 dd	 g}t d
d
d
gdddgddddgd}t|| d S )Nr!   ro   rB   r   r   r\   rc   c                 S   s   |   S r:   rz  r;   r   r   r   r     r    z,test_apply_no_suffix_index.<locals>.<lambda>r)     rG   r   rK   )r   r&   r'   r>   )Zpdfr1   r2   r   r   r   test_apply_no_suffix_index  s     r  c                  C   s@   t dddgi} | jdd ddd}tddg}t|| d S )	Nr   Zaabbbc                 S   s   | d S rp   r   r;   r   r   r   r     r    z/test_apply_raw_returns_string.<locals>.<lambda>r   Tr   r   r&   r   r'   r(   ri   r   r   r   test_apply_raw_returns_string  s    r  oprZ  ceilcosexplogr%   ZsquareZ	transformc                 C   s,   t | ||}t t|| }t|| d S r:   )rf   r#   r'   r>   )r0   r  rw   r1   r2   r   r   r   test_apply_np_transformer  s    r  c                 C   sl   t ddgddgd} t| ||}|dkr4ddini }ttt|| fdd	i|| jd
}t|| d S )Nr   r"   rB   r!   ry  )ru   rt  Zddofr   r   rK   )r   rf   r   r#   rO   r'   r(   )r0   r  rw   r1   r{  r2   r   r   r   test_apply_np_reducer  s     r  c                  C   s   t ddddddgdd} d	d
 }d|ddg}| |}t dtjddgddddgddddgddddgdddddgd}t|| d S )N)1r   r   r   )2r"   r   r   )3rB   r   r   )4r!   rk   r!   )5rk   rl   rl   )6rl   rm   rm   )itemZatt1Zatt2Zatt3r\   c                 S   s   |   d S r   rz  rq   r   r   r   r     s    z/test_aggregation_func_column_order.<locals>.foorc   r`  rs   Z123456rl   r  g      5@g      %@re  r   g      2@g      "@r  g      1@g      !@r   rK   )r   rx   r#   rN   r'   r>   )r4   r   Zaggsr1   r2   r   r   r   "test_aggregation_func_column_order  s,    




	r  c                  C   sR   t dddgdddgd} | ddg jdd dd	}tddd
g}t|| d S )Nr   r   r"   rB   ry  rL   c                 S   s   | d | d  S )Nr   r   r   r;   r   r   r   r     r    z+test_apply_getitem_axis_1.<locals>.<lambda>r   r!   r  ri   r   r   r   test_apply_getitem_axis_1  s    r  )er   	itertoolsr   r   Znumpyr#   r|   Zpandas.core.dtypes.dtypesr   ZpandasrH   r   r   r   r	   r
   Zpandas._testingZ_testingr'   Zpandas.tests.frame.commonr   r5   r@   rI   rS   ra   r}   Zparametrizerg   rj   rr   paramr   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'  r*  r,  r-  r6  r7  r?  rC  rJ  rK  rQ  rS  rW  r\  r_  ra  rh  rk  ro  rp  rq  rs  Zget_cython_table_paramsr   rN   rv  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   sZ  
	
5"#41	

/(
&"E&
-
#
 


	 	
		  