3
Ud                 @   s   d dl mZ 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	Z	d dl
mZ d dlZd dlmZmZmZmZmZmZ d dljZd dlmZ d dlmZ e	jd	d
 ZG dd dZG dd dZdddZG dd dZ dd Z!dd Z"dd Z#dd Z$dS )    )OrderedDict)datetime)chainN)CategoricalDtype)	DataFrame
MultiIndexSeries	Timestamp
date_rangenotna)frame_apply)SpecificationErrorc              C   s4   t tjtjddddjdd
d dddgd	} | S )z
    Fixture for DataFrame of ints which are constant per column

    Columns are ['A', 'B', 'C'], with values (per column): [1, 2, 3]
       int64)dtype      ABC)columns)r   nptilearangereshape)df r   ]/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/frame/apply/test_frame_apply.pyint_frame_const_col   s     r   c               @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
dddddgdd Zdd Zdd Zej	j
ddddddgej	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d&d' Zd(d) Zd*d+ Zd,d- Z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 Z#dPdQ Z$dRdS Z%dTdU Z&dVdW Z'dXdY Z(dZd[ Z)d\d] Z*d^d_ Z+d`da Z,dbdc Z-ej	j
dddedfd$e.j/gdgdh Z0d$S )iTestDataFrameApplyc             C   sn  t jdd |jt j}tjt j|d |d  |jt j}|d t j|d ksZt|jd }|jt jdd}|| t j|j	|kst|j|jkstW d Q R X t
dddgd	d
dgdddggdddgd}d}tjt|d |jdd d W d Q R X t
ddddgddddgd}|jdd }|jdks>tt|d jtsTtt|d jtsjtd S )Nignore)allr   r   r   )axis   r         r         	   ac)indexz)No axis named 2 for object type DataFrame)matchc             S   s   | S )Nr   )xr   r   r   <lambda>5   s    z/TestDataFrameApply.test_apply.<locals>.<lambda>r   r   D)c0c1c             S   s
   | j dS )Ncategory)astype)tsr   r   r   r/   9   s    r1   r2   )r%   r$   )r   errstateapplysqrttmassert_series_equalmeanAssertionErrorr,   xsr   pytestraises
ValueErrorshape
isinstancer   r   )selffloat_frameapplieddr   msgr   r   r   
test_apply"   s$    
*zTestDataFrameApply.test_applyc             C   s8   t dtdddgi}|jdd dd}tj|| d S )	Nr   z
2013-01-01UTC)tzc             S   s   | S )Nr   )r.   r   r   r   r/   B   s    z=TestDataFrameApply.test_apply_axis1_with_ea.<locals>.<lambda>r   )r#   )r   r	   r7   r9   assert_frame_equal)rC   r   resultr   r   r   test_apply_axis1_with_ea?   s    z+TestDataFrameApply.test_apply_axis1_with_eac             C   sH   t tdddtjtjdddd}|jdd d	d
}tj|| d S )N20130101r   )periodss)unit)r   r   c             S   s   | S )Nr   )r.   r   r   r   r/   N   s    zBTestDataFrameApply.test_apply_mixed_datetimelike.<locals>.<lambda>r   )r#   )	r   r
   pdZto_timedeltar   r   r7   r9   rK   )rC   r   rL   r   r   r   test_apply_mixed_datetimelikeE   s
    
z0TestDataFrameApply.test_apply_mixed_datetimelikec             C   s   t  }|jtj}|jst|jtj}|js2t|d d }|jdd }ttj|j	d}t
j|| |jd d g f }|jdd dd}ttj|jd}t
j|| t dgd}|jd	d dd}t
j|| d S )
Nr   c             S   s   | j  S )N)r;   )r.   r   r   r   r/   \   s    z5TestDataFrameApply.test_apply_empty.<locals>.<lambda>)r,   c             S   s   | j  S )N)r;   )r.   r   r   r   r/   a   s    r   )r#   r*   c             S   s   | d S )Nr*   r   )r.   r   r   r   r/   g   s    )r   r7   r   r8   emptyr<   r;   r   nanr   r9   r:   locr,   rK   )rC   rD   empty_framerE   Zno_rowsrL   expectedno_colsr   r   r   test_apply_emptyQ   s     

z#TestDataFrameApply.test_apply_emptyc             C   s   t  }g }|j|jddd}tj|| |j|jddd}tg tjg tdt	j
d}tj|| t ddd	gd
}|j|jddd}tj|| |j|jddd}tg tjg tdt	j
d}tj|| |g kstd S )Nr   expand)r#   result_typereduce)r   )r,   r   r*   br+   )r   )r   r7   appendr9   rK   r   rR   Indexobjectr   float64r:   r<   )rC   rW   r.   rL   rX   Zempty_with_colsr   r   r   test_apply_with_reduce_emptyj   s    z/TestDataFrameApply.test_apply_with_reduce_emptyfuncsumprodanyr"   c             C   s<   t dddgd}|jtt|}t|| }tj|| d S )Nr*   r^   r+   )r   )r   r7   getattrr   r9   r:   )rC   rd   r   rL   rX   r   r   r   test_apply_funcs_over_empty   s    z.TestDataFrameApply.test_apply_funcs_over_emptyc             C   sb   t dddgd}|j }td|jd}tj|| |jj }tg tjg t	j
d}tj|| d S )Nr*   r^   r+   )r   r   )r,   )r,   r   )r   Znuniquer   r   r9   r:   TrR   r`   r   rb   )rC   r   rL   rX   r   r   r   test_nunique_empty   s    
z%TestDataFrameApply.test_nunique_emptyc             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jdd dd}tj|| d S )Nr   r$   r   r%   r&   r   r'   r(   r)   r*   r+   )r,   c             S   s   | d S )Nr   r   )rP   r   r   r   r/      s    zBTestDataFrameApply.test_apply_standard_nonunique.<locals>.<lambda>)r#   c             S   s   | d S )Nr   r   )rP   r   r   r   r/      s    r   )r   r7   r   r9   r:   rj   )rC   r   rL   rX   r   r   r   test_apply_standard_nonunique   s    *z0TestDataFrameApply.test_apply_standard_nonuniquer;   minmaxstdz	args,kwdsZno_args_or_kwds)idr   Zaxis_from_argsr#   Zaxis_from_kwdsZnumeric_onlyTZoptional_kwdsNZargs_and_kwdsc             C   s2   |j |f||}t||||}tj|| d S )N)r7   rh   r9   r:   )rC   rD   rd   argskwdsrL   rX   r   r   r   test_apply_with_string_funcs   s    z/TestDataFrameApply.test_apply_with_string_funcsc                sp   j tjdd}t j g jd}tj||  j tjddd} jddtfdd jD }tj||  j  fd	d
ddd}tt	t
 jtgt
 j d j jd}tj||  j  fdd
dd}tt	t
 jtfdd jD d jd}tj|| |}|j dd
 ddd}tj|| |}|j dd
 ddd}|j }tj|| d S )N	broadcast)r\   )r,   r   )r#   r\   )r#   c                s   i | ]
} |qS r   r   ).0r+   )mr   r   
<dictcomp>   s    z;TestDataFrameApply.test_apply_broadcast.<locals>.<dictcomp>c                s   t tt jS )N)listrangelenr   )r.   )rD   r   r   r/      s    z9TestDataFrameApply.test_apply_broadcast.<locals>.<lambda>rb   )r   r,   r   c                s   t tt jS )N)rx   ry   rz   r,   )r.   )rD   r   r   r/      s    c                s   i | ]
} |qS r   r   )ru   r+   )rv   r   r   rw      s    )r   r,   c             S   s
   dddgS )Nr   r$   r   r   )r.   r   r   r   r/      s    c             S   s   t dddgtddS )Nr   r$   r   abc)r,   )r   rx   )r.   r   r   r   r/      s    )r7   r   r;   r   r,   r9   rK   r   rx   ry   rz   copy)rC   rD   r   rL   rX   r   r   )rD   rv   r   test_apply_broadcast   sH    


z'TestDataFrameApply.test_apply_broadcastc             C   s   |}d}t jt|d |jdd ddd W d Q R X d}t jt|d |jd	d ddd W d Q R X t jt|d |jd
d ddd W d Q R X d S )Nztoo many dims to broadcast)r-   c             S   s   t jddgjddS )Nr   r$   r   )r   arrayr   )r.   r   r   r   r/      s    z?TestDataFrameApply.test_apply_broadcast_error.<locals>.<lambda>r   rt   )r#   r\   zcannot broadcast resultc             S   s   ddgS )Nr   r$   r   )r.   r   r   r   r/      s    c             S   s   t ddgS )Nr   r$   )r   )r.   r   r   r   r/      s    )r>   r?   r@   r7   )rC   r   r   rG   r   r   r   test_apply_broadcast_error   s    z-TestDataFrameApply.test_apply_broadcast_errorc       
      C   s   dd }|j |dd |j |ddd |j tjdd}|j tjddd}|j dd }|j d	d dd
}tj|| tj|| |j dd dd}|d }	tj||	 |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   )rB   r   ndarrayr<   ndim)r.   r   r   r   _assert_raw   s    z6TestDataFrameApply.test_apply_raw.<locals>._assert_rawT)rawr   )r#   r   c             S   s
   | j j S )N)valuesr;   )r.   r   r   r   r/     s    z3TestDataFrameApply.test_apply_raw.<locals>.<lambda>c             S   s
   | j j S )N)r   r;   )r.   r   r   r   r/     s    )r#   c             S   s   | d S )Nr$   r   )r.   r   r   r   r/     s    r$   )r7   r   r;   r9   r:   rK   )
rC   rD   Zmixed_type_framer   result0result1	expected0	expected1rL   rX   r   r   r   test_apply_raw   s    z!TestDataFrameApply.test_apply_rawc             C   s:   |j d }|jtjdd}|| tj|j|ks6td S )Nr   r   )r#   )r,   r7   r   r;   r=   r<   )rC   rD   rF   Ztappliedr   r   r   test_apply_axis1  s    
z#TestDataFrameApply.test_apply_axis1c             C   s6   t |tjdddj }|j jtj}tj|| d S )Nr   T)Zignore_failures)r   r   r;   Zapply_standardZ_get_numeric_datar7   r9   r:   )rC   Zfloat_string_framerL   rX   r   r   r   test_apply_ignore_failures  s    z-TestDataFrameApply.test_apply_ignore_failuresc             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j	|| t dgdgd}|jd
d dd}tdgdgd	}tj	|| |jdd dd}tdgdgd	}tj	|| d S )Nfoog      ?)r   r   r   r   )r#   r   )r   )r,   c             S   s   | d S )Nr   r   )r.   r   r   r   r/   %  s    zBTestDataFrameApply.test_apply_mixed_dtype_corner.<locals>.<lambda>c             S   s   | d S )Nr   r   )r.   r   r   r   r/   )  s    )
r   r7   r   r;   r   rU   rR   r`   r9   r:   )rC   r   rL   rX   r   r   r   test_apply_mixed_dtype_corner  s    z0TestDataFrameApply.test_apply_mixed_dtype_cornerc             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 d Q R X |jdd dd}t|t std S )Nr*   r^   r+   )r,   )r   c                s   t jdd$ t jdt tjg dd}W d Q R X t|tj d fdd		}|  |d
d |dd |ddd d S )NT)recordr!   Zf8)r   r   Fc                sN    j | |d}r< j| }t|ts,t|j|ksJtnt|tsJtd S )N)r#   r   )r7   Z_get_agg_axisrB   r   r<   r,   r   )r#   r   rL   Zagg_axis)r   fis_reductionr   r   _checkit7  s    
zPTestDataFrameApply.test_apply_empty_infer_type.<locals>._check.<locals>._checkitr   )r#   )r   )r#   r   )r   F)warningscatch_warningssimplefilterRuntimeWarningr   r~   rB   r   )r   r   Ztest_resr   r   )r   r   r   r   _check1  s    	

z>TestDataFrameApply.test_apply_empty_infer_type.<locals>._checkr!   )r"   c             S   s   | S )Nr   )r.   r   r   r   r/   F  s    z@TestDataFrameApply.test_apply_empty_infer_type.<locals>.<lambda>c             S   s   | j  S )N)r;   )r.   r   r   r   r/   G  s    c             S   s   | S )Nr   )r.   r   r   r   r/   H  s    c             S   s   | j  S )N)r;   )r.   r   r   r   r/   I  s    c             S   s   | j  S )N)r;   )r.   r   r   r   r/   K  s    rt   )r\   )r   r   r6   r7   rB   r<   )rC   rY   no_indexr   rL   r   r   r   test_apply_empty_infer_type-  s    z.TestDataFrameApply.test_apply_empty_infer_typec             C   s   ddd}ddd}ddd}|j |d	d
}|j dd }tj|| |j |d	d
}|j dd }tj|| |j |dd	d}|j dd }tj|| d S )Nr   c             S   s   | | S )Nr   )r.   howmuchr   r   r   add_someO  s    z>TestDataFrameApply.test_apply_with_args_kwds.<locals>.add_somec             S   s   | j  | S )N)r;   )r.   r   r   r   r   agg_and_addR  s    zATestDataFrameApply.test_apply_with_args_kwds.<locals>.agg_and_addr   c             S   s   | | | S )Nr   )r.   subdivider   r   r   subtract_and_divideU  s    zITestDataFrameApply.test_apply_with_args_kwds.<locals>.subtract_and_divider$   )r   c             S   s   | d S )Nr$   r   )r.   r   r   r   r/   Y  s    z>TestDataFrameApply.test_apply_with_args_kwds.<locals>.<lambda>c             S   s   | j  d S )Nr$   )r;   )r.   r   r   r   r/   ]  s    )rq   r   c             S   s   | d d S )Ng       @r   )r.   r   r   r   r/   a  s    )r   )r   )r   )r$   )r7   r9   rK   r:   )rC   rD   r   r   r   rL   rX   r   r   r   test_apply_with_args_kwdsN  s    


z,TestDataFrameApply.test_apply_with_args_kwdsc             C   s   |j t}tj|| d S )N)r7   rx   r9   rK   )rC   rD   rL   r   r   r   test_apply_yield_listd  s    
z(TestDataFrameApply.test_apply_yield_listc             C   s@   t j|d jd d d< |jd}|jt jdd}tj|| d S )Nr   r$   r   )r#   )r   rU   Zilocr;   r7   r9   r:   )rC   rD   rX   rL   r   r   r   test_apply_reduce_Seriesh  s    
z+TestDataFrameApply.test_apply_reduce_Seriesc             C   sJ   t jddgddgg}t jddddddg}|jt}tj|| d S )Nr   r$   r   r%   )r   r   )rR   r   r   r7   dictr9   r:   )rC   datarX   rL   r   r   r   test_apply_reduce_rows_to_dictn  s    
z1TestDataFrameApply.test_apply_reduce_rows_to_dictc             C   s   t tjjdd}|jtjdd}t dd |j D |jd}t	j
|| |jtjdd}t d	d |jj D |jdj}t	j
|| d S )
N   
   r   )r#   c             S   s   i | ]\}}|j  |qS r   )describe)ru   ivr   r   r   rw   z  s    zETestDataFrameApply.test_apply_differently_indexed.<locals>.<dictcomp>)r   r   c             S   s   i | ]\}}|j  |qS r   )r   )ru   r   r   r   r   r   rw     s    )r   r   randomrandnr7   r   r   itemsr   r9   rK   rj   r,   )rC   r   r   r   r   r   r   r   r   test_apply_differently_indexedu  s    z1TestDataFrameApply.test_apply_differently_indexedc             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jdtjjdtjjdd}tj|jd< dd }dd }d}tjt|d |j	|dd W d Q R X d S )Nr   baronetwodullshiny   )r   r   r   r0   EFr%   r   c             S   s&   | d j dr"| d dkr"d| d< | S )Nr   shinr   r   r'   r0   )
startswith)rowr   r   r   	transform  s    zATestDataFrameApply.test_apply_modify_traceback.<locals>.transformc             S   s2   t | d r.| d jdr.| d dkr.d| d< | S )Nr   r   r   r   r'   r0   )r   r   )r   r   r   r   
transform2  s    &zBTestDataFrameApply.test_apply_modify_traceback.<locals>.transform2z,'float' object has no attribute 'startswith')r-   r   )r#   )r%   r   )
r   r   r   r   rU   rV   r>   r?   AttributeErrorr7   )rC   r   r   r   rG   r   r   r   test_apply_modify_traceback  sV    

z.TestDataFrameApply.test_apply_modify_tracebackc          
   C   s   t j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j|| d S )Nr   ZABC02   ZYUM0r   ZDEF0r$   ZABC1ZYUM1ZDEF1r*   marketposition)r   c             S   s   | d S )Nr   r   )rr   r   r   r     s    z,TestDataFrameApply.test_apply_bug.<locals>.f)r#   i  r   r%   r&   r   )rR   r   r7   r   r9   r:   )rC   Z	positionsr   rX   rL   r   r   r   test_apply_bug  s(    
z!TestDataFrameApply.test_apply_bugc             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jdtjjdtjjdd}|jd	d
 dd}tj|jdd| d S )Nr   r   r   r   r   r   r   )r   r   r   r0   r   r   c             S   s   | S )Nr   )r.   r   r   r   r/     s    z?TestDataFrameApply.test_apply_convert_objects.<locals>.<lambda>r   )r#   T)r   )r   r   r   r   r7   r9   rK   _convert)rC   r   rL   r   r   r   test_apply_convert_objects  sN    

z-TestDataFrameApply.test_apply_convert_objectsc                s    j dd }t j jd}tj||  j dd dd}t j jd}tj||  j dd }ttj jt	 jdf j jd}tj
||  j d	d dd}t fd
d j D } j|_tj|| d S )Nc             S   s   | j S )N)name)r.   r   r   r   r/     s    z;TestDataFrameApply.test_apply_attach_name.<locals>.<lambda>)r,   c             S   s   | j S )N)r   )r.   r   r   r   r/     s    r   )r#   c             S   s   t j| jt| S )N)r   repeatr   rz   )r.   r   r   r   r/   #  s    )r,   r   c             S   s   t j| jt| S )N)r   r   r   rz   )r.   r   r   r   r/   +  s    c             3   s$   | ]}t j|d  t jV  qdS )r   N)r   r   rz   r   )ru   t)rD   r   r   	<genexpr>-  s    z<TestDataFrameApply.test_apply_attach_name.<locals>.<genexpr>)r7   r   r   r9   r:   r,   r   r   r   rz   rK   
itertuples)rC   rD   rL   rX   r   )rD   r   test_apply_attach_name  s"    
z)TestDataFrameApply.test_apply_attach_namec             C   s   t jdddgdddgg}tddgddgd	d
gg|ddgd}|jdd d}tddgddgd	d
gg|ddgd}tj||dd d S )Nr*   r^   r+   rF   r   r$   r   r%   r&   r   Zcol1Zcol2)r,   r   c             S   s   t t| t| dS )N)rm   rn   )r   rm   rn   )r.   r   r   r   r/   5  s    z;TestDataFrameApply.test_apply_multi_index.<locals>.<lambda>rm   rn   T)
check_like)r   Zfrom_arraysr   r7   r9   rK   )rC   rD   r,   rP   rL   rX   r   r   r   test_apply_multi_index2  s    $"z)TestDataFrameApply.test_apply_multi_indexc             C   s   t ddgddgg}ttddgtddgg}t ddgddgg}ttddgtddgg}d	d
 }xf||f||fgD ]R\}}|j|dd}|j|dd}	|j|}
tj|| tj|	| tj|
| qzW d S )Nr   r   spameggsr   r   r$   r   c             S   s   | j  S )N)to_dict)r.   r   r   r   r/   D  s    z4TestDataFrameApply.test_apply_dict.<locals>.<lambda>r]   )r\   r[   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r$   )r   r   )r   r   )r   r   r   r7   r9   r:   rK   )rC   r   ZA_dictsr   ZB_dictsfnr   ZdictsZreduce_trueZreduce_falseZreduce_noner   r   r   test_apply_dict;  s    
z"TestDataFrameApply.test_apply_dictc             C   s  |j dd }tj||d  |j t |j dd }t|d d tsLttddgd	}|j d
d }|jd t	kszttddgd	}|j dd }|jd t	ksttt
jjd}|j }ddddg}||_|j t}||_|j t}tj|| td|d< tjd|d< |j t}x4dD ],}|jd|f t|jd|f ks"tq"W tj tjtddtjtddtjg g g dg}	x<|	D ]4}
x,tdd gD ]}|
j |}tj||
 qW qW d S )Nc             S   s   | d S )Nr$   r   )r.   r   r   r   r/   P  s    z2TestDataFrameApply.test_applymap.<locals>.<lambda>r$   c             S   s   | | fS )Nr   )r.   r   r   r   r/   U  s    r   r   r   r*   )r   c             S   s   | S )Nr   )r.   r   r   r   r/   Z  s    g      ?c             S   s   | S )Nr   )r.   r   r   r   r/   ^  s    r   r%   rN   r   z1 min	timedeltaABC)r   )r,   )r   r   r   c             S   s   | S )Nr   )r.   r   r   r   r/   {  s    )r   r%   )r   r   )applymapr9   rK   typerB   tupler<   r   dtypesra   r   r   r|   r   strr	   rR   	TimedeltarV   rx   round)rC   rD   rE   rL   r   Zdf2colsrX   r   Zempty_framesframerd   r   r   r   test_applymapO  s@    




,

z TestDataFrameApply.test_applymapc             C   s.   t jtddd}dd }t j|j| d S )Nz1/1/2000r   )rO   c             S   s   | j | j| jfS )N)hourdaymonth)r.   r   r   r   rd     s    z=TestDataFrameApply.test_applymap_box_timestamps.<locals>.func)rR   r   r
   r   r   )rC   Zserrd   r   r   r   test_applymap_box_timestamps  s    z/TestDataFrameApply.test_applymap_box_timestampsc          	   C   s   t jt jdt jdgt jdddt jdddgt jdt jdgt jdddt jdddgd	}|jd
d }t jddgddgddgddgd	}tj|| d S )Nz
2011-01-01z
2011-01-02z
US/Eastern)rJ   z1 daysz2 daysM)freq)r*   r^   r+   rF   c             S   s
   t | jS )N)r   __name__)r.   r   r   r   r/     s    z6TestDataFrameApply.test_applymap_box.<locals>.<lambda>r	   r   Period)rR   r   r	   r   r   r   r9   rK   )rC   r   rL   rX   r   r   r   test_applymap_box  s    z$TestDataFrameApply.test_applymap_boxc                sZ   ddl m  tdtdddgi}|j fdd}|j fdd}|jjd	ksVtd S )
Nr   )BDayx1i  r   c                s
   |    S )Nr   )r.   )r   r   r   r/     s    zMTestDataFrameApply.test_frame_apply_dont_convert_datetime64.<locals>.<lambda>c                s
   |    S )Nr   )r.   )r   r   r   r/     s    zM8[ns])Zpandas.tseries.offsetsr   r   r   r   r   r   r<   )rC   r   r   )r   r   (test_frame_apply_dont_convert_datetime64  s
    z;TestDataFrameApply.test_frame_apply_dont_convert_datetime64c             C   s   t dtjddddi}|jdd }tj|| |jdd }t dtjd	dddi}tj|| t dd
ddd
gidd}|jdd }tj|| d S )Ndtz
2015-01-01r   zEurope/Brussels)rO   rJ   c             S   s   | S )Nr   )r.   r   r   r   r/     s    z?TestDataFrameApply.test_apply_non_numpy_dtype.<locals>.<lambda>c             S   s   | t jd S )NZ1day)rR   r   )r.   r   r   r   r/     s    z
2015-01-02r*   r^   r+   r3   )r   c             S   s   | S )Nr   )r.   r   r   r   r/     s    )r   rR   r
   r7   r9   rK   )rC   r   rL   rX   r   r   r   test_apply_non_numpy_dtype  s    z-TestDataFrameApply.test_apply_non_numpy_dtypec             C   sV   t jddgddggddgd}t jddggddgdgd}|jdg}tj|| d S )	Nr   r   r$   r   r*   )r   rm   )r   r,   )rR   r   aggr9   rK   )rC   r   rX   rL   r   r   r   test_apply_dup_names_multi_agg  s    z1TestDataFrameApply.test_apply_dup_names_multi_aggc             C   sf   dd }t jtj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j|| d S )
Nc             S   s"   d| d  d| d  d| d  gS )Nr$   r   r   r   r   )r   r   r   r   
apply_list  s    zFTestDataFrameApply.test_apply_nested_result_axis_1.<locals>.apply_listr%   ABCD)r   r   )r#   g        )r%   r%   )	rR   r   r   Zzerosrx   r7   r   r9   r:   )rC   r   r   rL   rX   r   r   r   test_apply_nested_result_axis_1  s    &z2TestDataFrameApply.test_apply_nested_result_axis_1c             C   sV   t jdt jdddgidd}|jdd }tj|| |jd	d }tj|| d S )
Nr   Z2020rI   )rJ   zdatetime64[ns, UTC])r   c             S   s   | S )Nr   )r.   r   r   r   r/     s    zJTestDataFrameApply.test_apply_noreduction_tzaware_object.<locals>.<lambda>c             S   s   | j  S )N)r|   )r.   r   r   r   r/     s    )rR   r   r	   r7   r9   rK   )rC   r   rL   r   r   r   %test_apply_noreduction_tzaware_object  s    z8TestDataFrameApply.test_apply_noreduction_tzaware_objectc                sp   t jddddgi}g   fdd} fdd}x:||gD ].} d d = |j|dd	  t|jks:tq:W d S )
Nr*   r   r$   r   c                s    j | j d S )N)r_   r   )r   )namesr   r   reducing_function  s    zKTestDataFrameApply.test_apply_function_runs_once.<locals>.reducing_functionc                s    j | j | S )N)r_   r   )r   )r   r   r   non_reducing_function  s    zOTestDataFrameApply.test_apply_function_runs_once.<locals>.non_reducing_function)r#   )rR   r   r7   rx   r,   r<   )rC   r   r   r   rd   r   )r   r   test_apply_function_runs_once  s    
z0TestDataFrameApply.test_apply_function_runs_oncec                sv   t jddddgi}g   fdd} fdd}x@||gD ]4} d d = |j|d	dd
  t|jj ks:tq:W d S )Nr*   r   r$   r   c                s    j |  d S )N)extend)r   )r   r   r   r     s    zOTestDataFrameApply.test_apply_raw_function_runs_once.<locals>.reducing_functionc                s    j |  | S )N)r   )r   )r   r   r   r     s    
zSTestDataFrameApply.test_apply_raw_function_runs_once.<locals>.non_reducing_functionT)r   r#   )rR   r   r7   rx   r*   to_listr<   )rC   r   r   r   rd   r   )r   r   !test_apply_raw_function_runs_once  s    
z4TestDataFrameApply.test_apply_raw_function_runs_oncec                sl   t jddddgi}g   fdd} fdd}x6||gD ]*} d d = |j|  |jj ks:tq:W d S )	Nr*   r   r$   r   c                s    j |  d S )N)r_   )val)r   r   r   r   
  s    zNTestDataFrameApply.test_applymap_function_runs_once.<locals>.reducing_functionc                s    j |  | S )N)r_   )r   )r   r   r   r     s    
zRTestDataFrameApply.test_applymap_function_runs_once.<locals>.non_reducing_function)rR   r   r   r*   r   r<   )rC   r   r   r   rd   r   )r   r    test_applymap_function_runs_once  s    

z3TestDataFrameApply.test_applymap_function_runs_oncec             C   sT   t jtjddgdgd}t jtjddgdgtd}|jdd }tj|| d S )Ns   abcds   efghcol)r   )r   r   c             S   s
   | j dS )Nra   )r4   )r.   r   r   r   r/     s    z@TestDataFrameApply.test_apply_with_byte_string.<locals>.<lambda>)rR   r   r   r~   ra   r7   r9   rK   )rC   r   rX   rL   r   r   r   test_apply_with_byte_string  s
    z.TestDataFrameApply.test_apply_with_byte_stringr   asd   c                sd   dd dddt jg}tjd|idd}|jj fdd}tj fd	d
|D dd}tj|| d S )Nr   r   Zcder*   r3   )r   c                s   |  kS )Nr   )r.   )r   r   r   r/   (  s    zBTestDataFrameApply.test_apply_category_equalness.<locals>.<lambda>c                s$   g | ]}t j|rtjn| kqS r   )rR   Zisnullr   NaN)ru   r.   )r   r   r   
<listcomp>*  s    zDTestDataFrameApply.test_apply_category_equalness.<locals>.<listcomp>)r   )	r   r   rR   r   r*   r7   r   r9   r:   )rC   r   Z	df_valuesr   rL   rX   r   )r   r   test_apply_category_equalness"  s    z0TestDataFrameApply.test_apply_category_equalness)1r   
__module____qualname__rH   rM   rS   rZ   rc   r>   markparametrizeri   rk   rl   paramrs   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   r   r   r   r   r   r    !   s^   	
&4!@"3	0


r    c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zejjdddgdd Zejjddd dd dd gdddgd d!d" Zd#S )$TestInferOutputShapec             C   sX   t jtjjdd}|jtjjdd}|jdks4t|jtjj	dd}|jdksTtd S )Nr   r$   r   )r#   r   )r   r$   )r   r$   )
rR   r   r   r   Zrandr7   ZfftrA   r<   Zrfft)rC   r   rL   r   r   r   test_infer_row_shape4  s
    z)TestInferOutputShape.test_infer_row_shapec             C   s&  t ddgddggddgd}|jdd dd}td	d
 |j D }tj|| tjdtjdg|d< |jdd dd}tj|| |d |d  jdd }tddiddig}tj|| t  }dddg|d< dddg|d< tjdddg|d< |jdd dd}ti i i g}tj|| d S )Nr   r$   r*   r^   )r   c             S   s   d| d | d  iS )NrP   r*   r^   r   )r.   r   r   r   r/   A  s    zATestInferOutputShape.test_with_dictlike_columns.<locals>.<lambda>)r#   c             S   s   g | ]}d diqS )rP   r   r   )ru   r   r   r   r   r   B  s    zCTestInferOutputShape.test_with_dictlike_columns.<locals>.<listcomp>z2017-05-01 00:00:00z2017-05-02 00:00:00r9   c             S   s   d| d | d  iS )NrP   r*   r^   r   )r.   r   r   r   r/   I  s    c             S   s   d| iS )NrP   r   )r.   r   r   r   r/   M  s    rP   r   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 )Nr   )r.   r   r   r   r/   X  s    )	r   r7   r   r   r9   r:   rR   r	   to_datetime)rC   r   rL   rX   r   r   r   test_with_dictlike_columns>  s&    z/TestInferOutputShape.test_with_dictlike_columnsc             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j|| tjdtjdg|d< |jdd ddd	}tj|| d S )Nr   r$   r*   r^   )r   c             S   s   d| d | d  iS )NrP   r*   r^   r   )r.   r   r   r   r/   `  s    zLTestInferOutputShape.test_with_dictlike_columns_with_infer.<locals>.<lambda>r[   )r#   r\   rP   r   z2017-05-01 00:00:00z2017-05-02 00:00:00r9   c             S   s   d| d | d  iS )NrP   r*   r^   r   )r.   r   r   r   r/   j  s    )r   r7   r9   rK   rR   r	   )rC   r   rL   rX   r   r   r   %test_with_dictlike_columns_with_infer\  s    z:TestInferOutputShape.test_with_dictlike_columns_with_inferc             C   s  t ttj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 j D }t	j
|| |ddg jtdd}tdd |ddg j D }t	j
|| t tdd
gdggtdgddggd}tjddg|_|jdd dd}tg dgg|jd}t	j
|| d S )Nr%   r*   rx   Zofwordsz
2016-10-01H)rO   r   )r*   r^   r5   r^   r   )r#   c             S   s   g | ]}|d d qS )r   Nr   )ru   r   r   r   r   r   y  s    zCTestInferOutputShape.test_with_listlike_columns.<locals>.<listcomp>r5   c             S   s   g | ]}|d d qS )r   Nr   )ru   r   r   r   r   r   }  s    qzr   )r.   yi0j0i1j1c                s    fdd d D S )Nc                s   g | ]}| d  kr|qS )r  r   )ru   el)r   r   r   r     s    zUTestInferOutputShape.test_with_listlike_columns.<locals>.<lambda>.<locals>.<listcomp>r.   r   )r   r   )r   r   r/     s    zATestInferOutputShape.test_with_listlike_columns.<locals>.<lambda>)r,   )r  r  )r  r  )r   r   r   r   r   r
   r7   r   r   r9   r:   r   from_tuplesr,   )rC   r   rL   rX   r   r   r   test_with_listlike_columnsn  s     
(z/TestInferOutputShape.test_with_listlike_columnsc             C   s`   t ddgddgtjdtjdgd}|jdd	 d
d}tdd |j D }tj|| d S )Ng      ?g       @r   r   z2017-11-29 03:30:00z2017-11-29 03:45:00)numberstringr   c             S   s   | j | jfS )N)r  r  )r   r   r   r   r/     s    zFTestInferOutputShape.test_infer_output_shape_columns.<locals>.<lambda>r   )r#   c             S   s   g | ]}|j |jfqS r   )r  r  )ru   r   r   r   r   r     s    zHTestInferOutputShape.test_infer_output_shape_columns.<locals>.<listcomp>)r   rR   r	   r7   r   r   r9   r:   )rC   r   rL   rX   r   r   r   test_infer_output_shape_columns  s    z4TestInferOutputShape.test_infer_output_shape_columnsc             C   s  t tjjdddddgd}|jdd d	d
}tdd |j D }tj|| |jdd d	d
}tdd |j D }tj|| t dd	ddgit	dd}|jdd d	d
}tdd |j D |j
d}tj|| |jdd d	d
}tdd |j D |j
d}tj|| tj tjdtjdtjdtj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 |j D }tj|| d S )"Nr   r   r   r   r   )r   c             S   s
   dddgS )Nr   r$   r   r   )r.   r   r   r   r/     s    zOTestInferOutputShape.test_infer_output_shape_listlike_columns.<locals>.<lambda>r   )r#   c             S   s   g | ]}d ddgqS )r   r$   r   r   )ru   r   r   r   r   r     s    zQTestInferOutputShape.test_infer_output_shape_listlike_columns.<locals>.<listcomp>c             S   s   ddgS )Nr   r$   r   )r.   r   r   r   r/     s    c             S   s   g | ]}d dgqS )r   r$   r   )ru   r   r   r   r   r     s    r*   r$   r{   )r,   c             S   s
   t jdS )Nr   )r   ones)r   r   r   r   r/     s    c             S   s   g | ]}t jd qS )r   )r   r  )ru   r   r   r   r   r     s    c             S   s
   t jdS )Nr$   )r   r  )r   r   r   r   r/     s    c             S   s   g | ]}t jd qS )r$   )r   r  )ru   r   r   r   r   r     s    z
2010-02-01z
2010-02-04z
2010-02-05z
2010-02-06r)   r&   r%   )r*   r^   r+   rF   c             S   s   dS )Nr   r$   )r   r$   r   )r.   r   r   r   fun  s    zJTestInferOutputShape.test_infer_output_shape_listlike_columns.<locals>.func             S   s   g | ]}dqS )r   r$   )r   r$   r   )ru   r   r   r   r   r     s    )r   r   r   r   r7   r   r   r9   r:   rx   r,   rR   r	   )rC   r   rL   rX   r   r   r   r   (test_infer_output_shape_listlike_columns  s4    


z=TestInferOutputShape.test_infer_output_shape_listlike_columnsc             C   s   t tjjdddddgd}|jdd d	d
}tdd |j D }tj|| |jdd d	d
}tdd |j D }tj|| d S )Nr%   r   r   r   r   )r   c             S   s
   dddgS )Nr   r$   r   r   )r.   r   r   r   r/     s    zHTestInferOutputShape.test_consistent_coerce_for_shapes.<locals>.<lambda>r   )r#   c             S   s   g | ]}d ddgqS )r   r$   r   r   )ru   r   r   r   r   r     s    zJTestInferOutputShape.test_consistent_coerce_for_shapes.<locals>.<listcomp>c             S   s   ddgS )Nr   r$   r   )r.   r   r   r   r/     s    c             S   s   g | ]}d dgqS )r   r$   r   )ru   r   r   r   r   r     s    )	r   r   r   r   r7   r   r   r9   r:   )rC   r   rL   rX   r   r   r   !test_consistent_coerce_for_shapes  s    z6TestInferOutputShape.test_consistent_coerce_for_shapesc             C   sd   |}|j dd dd}|jddddd	}tj|| |j d
d dd}|ddg }tj|| d S )Nc             S   s   t dddgdddgdS )Nr   r$   r   testotherr   )r,   )r   )r.   r   r   r   r/     s    z<TestInferOutputShape.test_consistent_names.<locals>.<lambda>r   )r#   r#  r$  r   )r   r   r   )r   c             S   s   t ddgddgdS )Nr   r$   r#  r$  )r,   )r   )r.   r   r   r   r/     s    )r7   renamer9   rK   )rC   r   r   rL   rX   r   r   r   test_consistent_names  s    z*TestInferOutputShape.test_consistent_namesc                s4  |}|j dd ddd}|j }dddg|_tj|| |j dd ddd}|d	d
g j }ddg|_tj|| |j dd ddd}|j }tj|| dddg |j  fddddd}|j }tj|| |j dd dd}|j }tj|| dddg |j  fdddd}|j } |_tj|| d S )Nc             S   s
   dddgS )Nr   r$   r   r   )r.   r   r   r   r/     s    z7TestInferOutputShape.test_result_type.<locals>.<lambda>r   r[   )r#   r\   r   r$   c             S   s   ddgS )Nr   r$   r   )r.   r   r   r   r/     s    r   r   c             S   s
   dddgS )Nr   r$   r   r   )r.   r   r   r   r/     s    rt   r$  r   r   c                s   t dddg dS )Nr   r$   r   )r,   )r   )r.   )r   r   r   r/     s    c             S   s   t dddg| jdS )Nr   r$   r   )r,   )r   r,   )r.   r   r   r   r/     s    )r#   c                s   t dddg dS )Nr   r$   r   )r,   )r   )r.   )r   r   r   r/     s    )r7   r|   r   r9   rK   )rC   r   r   rL   rX   r   )r   r   test_result_type  s2    


z%TestInferOutputShape.test_result_typer\   r   r   c             C   s:   |}d}t jt|d |jdd d|d W d Q R X d S )NzUinvalid value for result_type, must be one of {None, 'reduce', 'broadcast', 'expand'})r-   c             S   s
   dddgS )Nr   r$   r   r   )r.   r   r   r   r/     s    z=TestInferOutputShape.test_result_type_error.<locals>.<lambda>r   )r#   r\   )r>   r?   r@   r7   )rC   r\   r   r   rG   r   r   r   test_result_type_error  s    z+TestInferOutputShape.test_result_type_errorboxc             C   s   t | S )N)rx   )r.   r   r   r   r/     s    zTestInferOutputShape.<lambda>c             C   s   t | S )N)r   )r.   r   r   r   r/     s    c             C   s   t j| ddS )Nr   )r   )r   r~   )r.   r   r   r   r/     s    rx   r   r~   )idsc                s   |}|j  fdddd}t fdd|j D }tj|| |j  fddddd	}|d
dg jdddd}tj|| d S )Nc                s    ddgS )Nr   r$   r   )r.   )r)  r   r   r/   "  s    zATestInferOutputShape.test_consistency_for_boxed.<locals>.<lambda>r   )r#   c                s   g | ]} d dgqS )r   r$   r   )ru   r   )r)  r   r   r   #  s    zCTestInferOutputShape.test_consistency_for_boxed.<locals>.<listcomp>c                s    ddgS )Nr   r$   r   )r.   )r)  r   r   r/   &  s    r[   )r#   r\   r   r   r   )r   r   )r   )r7   r   r   r9   r:   r%  rK   )rC   r)  r   r   rL   rX   r   )r)  r   test_consistency_for_boxed  s    z/TestInferOutputShape.test_consistency_for_boxedN)r   r  r  r  r  r  r  r  r!  r"  r&  r'  r>   r  r  r(  r+  r   r   r   r   r  /  s   
.'r  r   c                s\   |dkr2 d j } fdd|D }tj|ddS  d j} fdd|D }tj|S dS )z
    take a list of frames, zip them together under the
    assumption that these all have the first frames' index/columns.

    Returns
    -------
    new_frame : DataFrame
    r   r   c                s(   g | ] } D ]}|j d d |f qqS )N)rV   )ru   r+   r   )framesr   r   r   6  s    zzip_frames.<locals>.<listcomp>)r#   c                s(   g | ] } D ]}|j |d d f qqS )N)rV   )ru   r   r   )r,  r   r   r   :  s    N)r   rR   concatr,   r   )r,  r#   r   Zzippedr,   r   )r,  r   
zip_frames+  s    	

r.  c               @   s`  e Zd Zdd Zdd Zejjddddd	d
gdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zejjdeeje deddfdeddfd eddfd!eedfd"eedfd#eddfd$eddfd%eddfd&eddfd'eddfg
ejeejd(gd(d)ggded*d+gfded*d)gfd ed*d(gfd!ed,d,gfd"ed,d,gfd#ed(d-gfd$ed*d)gfd%eejd.gfd&eejd/gfd'ed(d-gfg
d0d1 Zejjdeeje d2e fd	e fgejeejd(gd(d)ggd2eejd(gd(d)ggfd	eejd(gd(d+ggfgd3d4 Zejjdejed5d6gd6d5ggd2eggd7d8 Zejjd9d:d(gejjd;dSi fdTi fdUi fdVd6d)iff d(d)d?ff d)d(d?ff d(d)d+d@fgdAdB ZejjdCd)d+dDgdEdF ZdGdH ZejjdIejd5dJgdKdLgdMgejjdd ddgdNdO Z ejjdPd(d*d,d5ejgdQdR Z!dJS )WTestDataFrameAggregatec             C   s  |d	krdnd}t jdd~ t j|}t j|}|jt j|d}|j }tj|| |jt j|d}tj|| |jt j|d}tj|| |jt jg|d}|j }|d
krt	j
j|jdgg|_nt	j
j|jdgg|_tj|| |jt jg|d}tj|| |jt jt jg|d}t||g|d}|dkrTt	j
j|jddgg|_nt	j
j|jddgg|_tj|| |jt jdg|d}tj|| W d Q R X d S )Nr   r,   r   r!   )r"   )r#   r8   absolute>   r   r,   >   r   r,   >   r   r,   )r   r6   absr8   r   r|   r9   rK   r7   rR   r   Zfrom_productr   r,   r.  )rC   r#   rD   
other_axisZf_absZf_sqrtrL   rX   r   r   r   test_agg_transform?  s>    


z)TestDataFrameAggregate.test_agg_transformc          '      s   d}t jt|d |jddg d W d Q R X d}t jt|d0 tjdd |jdd	g d W d Q R X W d Q R X t jt|d0 tjdd |jdd	g d W d Q R X W d Q R X tjt	d
d
d fdd}d S )Nz,transforms cannot produce aggregated results)r-   rn   rm   )r#   z3cannot combine transform and aggregation operationsr!   )r"   r8   r&   )r   r   c                  s8   t jdd" jddgddgd d W d Q R X d S )	Nr!   )r"   r1  re   r;   rn   )r   r   )r#   )r   r6   r   r   )r#   r   r   r   r     s    z<TestDataFrameAggregate.test_transform_and_agg_err.<locals>.f)
r>   r?   r@   r   r   r6   r   rR   r   ry   )rC   r#   rD   rG   r   r   )r#   r   r   test_transform_and_agg_errt  s    &&z1TestDataFrameAggregate.test_transform_and_agg_errmethodr1  shiftZ
pct_changeZcumsumZrankc             C   s:   t jdddgi}|j|}tj||}tj|| d S )Nr   r   r$   r   )rR   r   r   operatormethodcallerr9   rK   )rC   r5  r   rL   rX   r   r   r   test_transform_method_name  s    
z1TestDataFrameAggregate.test_transform_method_namec             C   s   t jtddd}|jddg}tddgddgdddgddgd	}tj|| |j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j|j|| d S )Nr&   )r   r   rm   rn   r   r%   r   r   )r   r,   re   g      @g        g      @g      9@)	rR   r   ry   r   r9   rK   r   rU   Zreindex_like)rC   r   rL   rX   r   r   r   	test_demo  s    "z TestDataFrameAggregate.test_democ             C   s   t jdddgdddgddd	gt jd
ddd}t jddgddgddgt jdt jgdddgd}tjd  |jddg}W d Q R X tj|| tjd   |ddddg jddg}W d Q R X |ddddg }tj|| d S )Nr   r$   r   g      ?g       @g      @r   r   bazrN   )rO   )r   r   r   r0   r   g      @	foobarbazz
2013-01-01rm   re   )r,   r0   r   r   r   )	rR   r   r
   r	   ZNaTr9   Zassert_produces_warningr   rK   )rC   ZmdfrX   rL   r   r   r   "test_agg_multiple_mixed_no_warning  s$    $z9TestDataFrameAggregate.test_agg_multiple_mixed_no_warningc             C   sN   t jtddd}d}tjt|d |jddiddid W d Q R X d S )	Nr&   )r   r   znested renamer is not supported)r-   r   rm   r   rn   )rR   r   ry   r>   r?   r   r   )rC   r   rG   r   r   r   "test_agg_dict_nested_renaming_depr  s    z9TestDataFrameAggregate.test_agg_dict_nested_renaming_deprc       	      C   s>  |dkrdnd}|j | j d d j \}}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j|| t|df|dfg}|j
||d}t|j|| j |j|| j g||gd	}tj|| t|dgf|dgfg}|j
||d}t|t|j|| j gdgd	|t|j|| j gdgd	i}|dkrp|j	n|}tj|| t|ddgf|ddgfg}|j
||d}tt|t|j|| j |j|| j gddgd	f|t|j|| j |j|| j gddgd	fg}|dkr*|j	n|}tj|| d S )Nr   r,   r   r$   )r#   r;   rn   re   )r,   r   >   r   r,   >   r   r,   >   r   r   >   r   r   )ZaxesuniqueZsort_valuesrR   r-  r;   rn   re   r   rj   r   r9   rK   r   r   rV   r:   r   )	rC   r#   rD   r2  Zname1Zname2rX   rL   rd   r   r   r   test_agg_reduce  sV    

 z&TestDataFrameAggregate.test_agg_reducec             C   s  t dddgdddgddd	gtjd
ddd}|jd}tdddtjd
g|jd}tj|| |jdg}t dddtjd
ggdg|jd}tj	|| |jd}tdddgdddgd}tj|| |jdg}t dddggdgdddgd}tj	|| d S )Nr   r$   r   g      ?g       @g      @r   r   r;  rN   )rO   )r   r   r   r0   rm   )r,   )r,   r   re   r   g      @r<  r   r   r   )
r   rR   r
   r   r   r	   r   r9   r:   rK   )rC   r   rL   rX   r   r   r   test_nuiscance_columns  s*    


z-TestDataFrameAggregate.test_nuiscance_columnsc             C   s   t d ddgdtjdgdd dgd}|jdd	i}tddi}tj|| |jdd
i}tddi}tj|| |jd	d
g}|jd	d
gd	d
gd	d
gd}tj dddddddddd}tj||dd tj||dd |jd	}|j	 }tj|| |jd
}|j
}||kstd S )Nr$   r   g      ?g      @r   r   )r   r   r   r   countsize)rB  rC  T)r   )r   r   rU   r   r   r9   r:   rR   rK   rB  rC  r<   )rC   r   rL   rX   r   Zresult2r   r   r   test_non_callable_aggregates?  s.    "

z3TestDataFrameAggregate.test_non_callable_aggregatesc             C   s   t dddgdtjdgdd dgd}dd }|j|}tjddgdgddggd	d
dgd}tj|| |j|g}|jdj	}tj
|| d S )Nr$   r   g      ?r   r   )r   r   r   c             S   s   t | j j S )N)rx   Zdropnar?  )Z	group_colr   r   r   rd   v  s    z=TestDataFrameAggregate.test_agg_listlike_result.<locals>.funcr   r   r   )r,   rd   )r   r   rU   r   rR   r   r9   r:   Zto_framerj   rK   )rC   r   rd   rL   rX   r   r   r   test_agg_listlike_resultp  s    "
$z/TestDataFrameAggregate.test_agg_listlike_resultzdf, func, expectedre   rb   )r   rn   rm   r"   rg   r;   rf   ro   varZmedianr   r$   g      ?r   Tg      ?g۞?g      ?c             C   s   |j ||d}tj|| d S )N)r#   )r   r9   r:   )rC   r   rd   rX   r#   rL   r   r   r   test_agg_cython_table  s    'z,TestDataFrameAggregate.test_agg_cython_tableZcumprodc             C   s8   |dks|dkr|j d}|j||d}tj|| d S )Nr   r   rb   )r#   )r4   r   r9   rK   )rC   r   rd   rX   r#   rL   r   r   r   test_agg_cython_table_transform  s    
z6TestDataFrameAggregate.test_agg_cython_table_transformr*   r^   c             C   s0   d}t j||d |j||d W d Q R X d S )Nz0can't multiply sequence by non-int of type 'str')r-   )r#   )r>   r?   r   )rC   r   rd   rX   r#   rG   r   r   r   test_agg_cython_table_raises  s    z3TestDataFrameAggregate.test_agg_cython_table_raisesr#   r   zargs, kwargsr(   r'      )r*   r^   )r*   r^   r+   c             C   sj   ddd}t jddgddgg}|dkr8t jdd	g}nt jd
dg}|j||f||}tj|| d S )Nr   c             S   s   | j  || |  S )N)re   )r.   r*   r^   r+   r   r   r   r     s    z6TestDataFrameAggregate.test_agg_args_kwargs.<locals>.fr   r$   r%   r   g      @g      @g      @g       @)r   )rR   r   r   r   r9   r:   )rC   r#   rq   kwargsr   r   rX   rL   r   r   r   test_agg_args_kwargs  s    
z+TestDataFrameAggregate.test_agg_args_kwargsnum_colsr&   c             C   sL   t jdddg}|j }td|t|d}|jdd  |j|jksHtd S )Nz
1950-06-30z
1952-10-24z
1953-05-29r   )r,   r   c             S   s   | S )Nr   )r.   r   r   r   r/     s    zCTestDataFrameAggregate.test_frequency_is_original.<locals>.<lambda>)rR   ZDatetimeIndexr|   r   ry   r7   r   r<   )rC   rM  r,   originalr   r   r   r   test_frequency_is_original  s
    z1TestDataFrameAggregate.test_frequency_is_originalc             C   sj   t jdddt jdddt jdddg}tdddg|d	}|jd
d dd}t j||d}tj|| d S )Nz2019-03-15 12:34:31.909000+0000rI   )rJ   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 )N)r   )r.   r   r   r   r/     s    zETestDataFrameAggregate.test_apply_datetime_tz_issue.<locals>.<lambda>)r#   )r,   r   )rR   r	   r   r7   r   r9   r:   )rC   Z
timestampsr   rL   rX   r   r   r   test_apply_datetime_tz_issue  s    z3TestDataFrameAggregate.test_apply_datetime_tz_issuer   Nr+   rF   )r   r   c             C   s8   t |ddg | }t |ddg | }tj|| d S )Nr   r   )rh   r9   r:   )rC   r   r5  Znone_in_first_column_resultZnone_in_second_column_resultr   r   r   =test_consistency_of_aggregates_of_columns_with_missing_values  s    zTTestDataFrameAggregate.test_consistency_of_aggregates_of_columns_with_missing_valuesr   c             C   s<   t jd|ggddgd}|jdd }|j}tj|| d S )Ng      ?r*   r^   )r   c             S   s   | j S )N)r   )r.   r   r   r   r/     s    z9TestDataFrameAggregate.test_apply_dtype.<locals>.<lambda>)rR   r   r7   r   r9   r:   )rC   r   r   rL   rX   r   r   r   test_apply_dtype  s    z'TestDataFrameAggregate.test_apply_dtype)r   r$   r   )r(   r'   rJ  )r   r$   )r   )"r   r  r  r3  r4  r>   r  r  r9  r:  r=  r>  r@  rA  rD  rE  r   r9   Zget_cython_table_paramsr   r   boolr   rU   rG  rH  	TypeErrorrI  rL  rO  rP  rR   rQ  rR  r   r   r   r   r/  >  s   5 "	O"1 *(	
	"
r/  c              C   sd   t jtdtddd} dd }| j }|d  d7  < | j|dd}tj|| tj| | d S )	Nd      )r*   r^   c             S   s*   | j }| jd  d7  < | j |k	s&t| S )Nr*   r   )Z_mgrrV   r<   )r   Zmgrr   r   r   rd     s    z!test_apply_mutating.<locals>.funcr*   r   )r#   )rR   r   ry   r|   r7   r9   rK   )r   rd   rX   rL   r   r   r   test_apply_mutating  s    rW  c              C   sf   t j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 jg g dtd}tj|| d S )Nr   r$   r   r%   r&   r   r'   r(   r)   r   r*   r^   )r   c             S   s   g S )Nr   )r.   r   r   r   r/   0  s    z.test_apply_empty_list_reduce.<locals>.<lambda>r]   )r\   )r*   r^   )r   )rR   r   r7   r   ra   r9   r:   )r   rL   rX   r   r   r   test_apply_empty_list_reduce,  s    0rX  c              C   sj   t jddggd ddgd} | jddd	 dd	 g}t jd
d
d
gdddgddddgd}tj|| d S )Nr%   r)   r   r   r   )r   re   c             S   s   | j  S )N)re   )r.   r   r   r   r/   8  s    z,test_apply_no_suffix_index.<locals>.<lambda>r      )r   r   z<lambda>)r,   )rR   r   r7   r9   rK   )ZpdfrL   rX   r   r   r   test_apply_no_suffix_index5  s
    "rZ  c              C   sD   t jdddgi} | jdd ddd}t jddg}tj|| d S )	Nr   Zaabbbc             S   s   | d S )Nr   r   )r.   r   r   r   r/   C  s    z/test_apply_raw_returns_string.<locals>.<lambda>r   T)r#   r   )rR   r   r7   r   r9   r:   )r   rL   rX   r   r   r   test_apply_raw_returns_string@  s    r\  )r   )%collectionsr   r   	itertoolsr   r7  r   Znumpyr   r>   Zpandas.core.dtypes.dtypesr   ZpandasrR   r   r   r   r	   r
   r   Zpandas._testingZ_testingr9   Zpandas.core.applyr   Zpandas.core.baser   Zfixturer   r    r  r.  r/  rW  rX  rZ  r\  r   r   r   r   <module>   s>    
       }
   ^	