o
    ҷh&V                     @   s
  d dl Zd dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ ejddgddd Zd	d
 Zdd Zdd Zejdddgdd Zdd Zejddi d fdddidfdi dfdddidfgdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zejd+d,d,ejgd,d-ejggd.d/ Z d0d1 Z!d2d3 Z"d4d5 Z#ejd6ed7d8 Z$d9d: Z%d;d< Z&ejd=e'd>d? gd@dA Z(dBdC Z)ejdDdEdFgdGdH Z*dIdJ Z+dKdL Z,ejdMdEi fdFddifdFddifgdNdO Z-dPdQ Z.ejdReddge/d dSgdTeej0ddggdd dUdVdWfej1dXdYeej0ddggdXd dUdVdWfgejdZddgd[d\ Z2ejd]dee3dXdVdWfd^gd_d` Z4dadb Z5ejdcej6gddgfej6ej7gdddegfe8ej6gddgfe8ej6ej7gdddegfgejdfdEi gdFddigdFddiggdgdh Z9ejdidjej6iej6ej7dkedjej6ieej6ej7dkgejdfdEi gdFddigdFddiggdldm Z:ejdcej;gdngfej<ej;gdodngfe8ej;gdngfe8ej<ej;gdodngfgdpdq Z=ejdrdsd? ged?g dtifdud? gedvgd?gdTfgdwdx Z>ejdidjej;iej;ej?dkedjej;ieej;ej?dkgdydz Z@ejdrdd{d? ieg dteAdgd| eBd|gdTfdd}d? iedvgdgdTfgd~d ZCdd ZDdd ZEdd ZFdS )    N)	DataFrameIndex
MultiIndexSeriesconcattimedelta_range)series_transform_kernelsFcompat)paramsc                 C   s   | j S N)param)request r   W/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/apply/test_series_apply.pyby_row   s   r   c                    sb   t tdddd} fdd}|j| d}|dd	 }t|| t g d
}t|| d S )Nz	1 day 1 s   h)periodsfreqc                    s    r|   S | j  S r   )total_secondsdtxr   r   r   f   s   z(test_series_map_box_timedelta.<locals>.fr   c                 S      |   S r   )r   r   r   r   r   <lambda>       z/test_series_map_box_timedelta.<locals>.<lambda>)g    @g    @g    @)r   r   applymaptmassert_series_equal)r   serr   resultexpectedr   r   r   test_series_map_box_timedelta   s   r%   c                 C   s  | j tj|d}tjdd t| }W d    n1 sw   Y  t|| | j tj|d}t| }t|| ttdt	g ddd}|j dd	 |d}t|| ||us\J |j
|j
u sdJ |j|jkslJ |j|jkstJ tg d
tjd}|j dd	 |d}t|| d S )Nr   ignoreallfoobarname)dtyper,   indexc                 S      | S r   r   r   r   r   r   r   3       ztest_apply.<locals>.<lambda>      r   r.   r-   c                 S   r/   r   r   r   r   r   r   r   >   r0   )r   npsqrterrstater    r!   expr   objectr   r.   r-   r,   float64)datetime_seriesr   r#   r$   srsr   r   r   
test_apply&   s$   
r>   c                  C   s<   t ddg} dd }| j|dd}| |}t|| d S )Nr2   r3   c                 S   s   | | d fS Nr2   r   r   r   r   r   r   E      z3test_apply_map_same_length_inference_bug.<locals>.fr	   r   )r   r   r   r    r!   )r<   r   r#   r$   r   r   r   (test_apply_map_same_length_inference_bugB   s
   
rA   convert_dtypeTc                 C   s^   t tjdd}dd }tt |j|| dd W d    d S 1 s(w   Y  d S )Nr3   
   c                 S   s   | dkr| S t jS )Nr   )r5   nanr   r   r   r   funcQ   s   z1test_apply_convert_dtype_deprecated.<locals>.funcr	   )rB   r   )	r   r5   randomdefault_rngstandard_normalr    assert_produces_warningFutureWarningr   )rB   r"   rE   r   r   r   #test_apply_convert_dtype_deprecatedM   s
   "rK   c                  C   sD   t dg} | jtjdd}|d ddgksJ t|d ts J d S )Nzfoo,bar),argsr   r)   r*   )r   r   strsplit
isinstancelist)r<   r#   r   r   r   test_apply_argsX   s   
rS   zargs, kwargs, incrementr   ar2   )r3   r       )r2   cr3      c                 C   sz   ddd}t ddg}d}tjt|d |j|dg| R i |}W d    n1 s,w   Y  || }t|| d S )	Nr   c                 S   s   | | d|  d|  S )NrC   d   r   )r   rT   brV   r   r   r   r   f   s   ztest_agg_args.<locals>.fr2   r3   zhin Series.agg cannot aggregate and has been deprecated. Use Series.transform to keep behavior unchanged.match)r   r   r   )r   r    rI   rJ   aggr!   )rN   kwargs	incrementr   r<   msgr#   r$   r   r   r   test_agg_args`   s   
r`   c                  C   s   t g d} ddd}ddd}d	}tjt|d
 | j|dddd W d    n1 s-w   Y  tjt|d
 | j||gdddd W d    n1 sOw   Y  tjt|d
 | j||ddddd W d    d S 1 ssw   Y  d S )Nr1   r2   r   c                 S      | | | S r   r   )r   rT   rV   r   r   r   foo1x   r@   z.test_agg_mapping_func_deprecated.<locals>.foo1r3   c                 S   ra   r   r   )r   rY   rV   r   r   r   foo2{   r@   z.test_agg_mapping_func_deprecated.<locals>.foo2z+using .+ in Series.agg cannot aggregate andrZ   r      )rV   )rT   rY   )r2   r   )r3   r   )r   r    rI   rJ   r\   )r<   rb   rc   r_   r   r   r    test_agg_mapping_func_deprecatedt   s   

"re   c                 C   s   t tjddd}dd }| s2d}tjt|d |j|| d W d    d S 1 s+w   Y  d S |j|| d}||}t	|| d S )	Nz1/1/2000rC   )r   c                 S   s   | j | j| jfS r   )hourdaymonthr   r   r   r   rE      s   z2test_series_apply_map_box_timestamps.<locals>.funcz&Series' object has no attribute 'hour'rZ   r   )
r   pd
date_rangepytestraisesAttributeErrorr   r   r    r!   )r   r"   rE   r_   r#   r$   r   r   r   $test_series_apply_map_box_timestamps   s   

rn   c                  C   sd  t dt dg} t| }|jdksJ |jdd dd}tdd	g}t|| t jdd
dt jdd
dg} t| }|jdksCJ |jdd dd}tddg}t|| t dt dg} t| }|jdksmJ |jdd dd}tddg}t|| t jdddt jdddg} t| }|jdksJ |jdd dd}tddg}t|| d S )N
2011-01-01
2011-01-02zdatetime64[ns]c                 S      t | j d| j d| j S N_type__name__rg   tzr   r   r   r   r          z test_apply_box.<locals>.<lambda>r	   r   Timestamp_1_NoneTimestamp_2_Nonez
US/Eastern)rw   zdatetime64[ns, US/Eastern]c                 S   rq   rr   rt   r   r   r   r   r      rx   zTimestamp_1_US/EasternzTimestamp_2_US/Easternz1 daysz2 daysztimedelta64[ns]c                 S      t | j d| j S rr   )ru   rv   daysr   r   r   r   r          Timedelta_1Timedelta_2Mr   z	Period[M]c                 S   r{   rr   )ru   rv   freqstrr   r   r   r   r      r}   Period_M)	ri   	Timestampr   r-   r   r    r!   	TimedeltaPeriod)valsr<   resr8   r   r   r   test_apply_box   s4   r   c                    s   t jddddd}t|dd}|jdd	  d
}t jddddd}t|dd}t|| |j fdd	 d
}tttddg d rJdndd}t||  fdd}|j| d
} rttdgd dd}t|| d S |dk d S )Nro   rp   Hr   z
Asia/TokyoXXr+   c                 S   s   | t j  S r   )ri   offsetsDayr   r   r   r   r          z'test_apply_datetimetz.<locals>.<lambda>r   z
2011-01-03c                    s    r| j S | jj S r   )rf   r   r   r   r   r   r      s       r   int64int32r,   r-   c                    s    rt | jS t | jjS r   )rO   rw   r   r   r   r   r   r      s   z test_apply_datetimetz.<locals>.f   )	ri   rj   tz_localizer   r   r    r!   rR   range)r   valuesr<   r#   
exp_valuesr8   r   r   r   r   test_apply_datetimetz   s&   $r   c                 C   s,  t jtdtddd}t|dtdd}| sHd}tjt|d	 |jd
d | d W d    n1 s4w   Y  |jdd | ddksFJ d S |jdd | d}t jtdtddd}t|dtdd}t	|| t
|j|j |dd }tdgd dtdd}t	|| |jtksJ d S )NABBABCDDCBAT)
categoriesorderedr   abcdefg)r,   r.   z&Series' object has no attribute 'lowerrZ   c                 S   r   r   lowerr   r   r   r   r      r   z(test_apply_categorical.<locals>.<lambda>r   c                 S      dS NAr   r   r   r   r   r      r0   r   c                 S   r   r   r   r   r   r   r   r      r   abbabcddcbac                 S   r   r   r   r   r   r   r   r      r0      )ri   CategoricalrR   r   rk   rl   rm   r   r    r!   assert_categorical_equalr   r-   r9   )r   r   r"   r_   r#   r8   r   r   r   test_apply_categorical   s$   r   seriesz1-1z1-2c                 C   s   t | dd}|s-d}tjt|d |jdd |d W d    d S 1 s&w   Y  d S |jdd |d}|t}t d	d	tjgdd}|t}t	
|| d S )
Ncategoryr-   z('Series' object has no attribute 'split'rZ   c                 S      |  dd S N-r   rP   r   r   r   r   r      r   z8test_apply_categorical_with_nan_values.<locals>.<lambda>r   c                 S   r   r   r   r   r   r   r   r      r   1)r   rk   rl   rm   r   astyper9   r5   rD   r    r!   )r   r   r<   r_   r#   r$   r   r   r   &test_apply_categorical_with_nan_values   s   


r   c                 C   s:   t g tjdddtd}|jdd | d}t|| d S )Nz
2018-01-01r   )startr   r4   c                 S   r/   r   r   r   r   r   r   r   	  r0   zEtest_apply_empty_integer_series_with_datetime_index.<locals>.<lambda>r   )r   ri   rj   intr   r    r!   )r   r<   r#   r   r   r   3test_apply_empty_integer_series_with_datetime_index  s   r   c                  C   sh   t tg ddgd} t g ddgd}dd }|d j|| fd}tg d	dd
d}t|| d S )N)r2   r3   r   rd      Numbers)columns)r3   r   r3   r2   r3   Indicesc                 S   s   |d j |  }|S )Nr   )iloc)	targetRowtargetDFvalr   r   r   retrieve  s   z+test_apply_dataframe_iloc.<locals>.retrieverM   )r   rd   r   r3   r   uint64r   )r   r5   r   r   r   r    r!   )uintDFindexDFr   r#   r$   r   r   r   test_apply_dataframe_iloc  s   r   c                 C   sF  t jdd t | }t | }| jt j|d}| }t|| | jt jg|d}|  }dg|_	t
|| | jdg|d}t
|| t||gdd}ddg|_	| jt jt jg|d}t
|| t||gdd}dd	g|_	| d
}| jt jt jd|d}t||| W d    d S 1 sw   Y  d S )Nr&   r'   r   r6   r2   axisabsoluter)   r*   r   )r)   r*   )r5   r7   r6   absr   copyr    r!   to_framer   assert_frame_equalr   unstackrenamereindex_like)string_seriesr   f_sqrtf_absr#   r$   r   r   r   test_transform  s,   



"r   opc                 C   s\  | dv r|j tjj|  dd tdtg }| dv r"t}d}n	t}d	dd	g}tj
||d
 || dg W d    n1 sDw   Y  tj
||d
 || dd W d    n1 scw   Y  tj
||d
 || gdgd W d    n1 sw   Y  tj
||d
 || dg| gd W d    d S 1 sw   Y  d S )N)ffillbfillpadbackfillshiftz is successful on any dtype)reasonr   )fillnangroupTransform function failed|z4not supported between instances of 'type' and 'type'zunsupported operand typerZ   r   r   B)node
add_markerrk   markxfailr   r9   
ValueError	TypeErrorjoinrl   	transform)r   r   r"   errorr_   r   r   r   test_transform_partial_failure@  s4   "r   c                  C   s(  dd } dd }t dtg }d}tjt|d || |g W d    n1 s*w   Y  tjt|d ||| d W d    n1 sIw   Y  tjt|d ||g| gd W d    n1 sjw   Y  tjt|d || |g| gd W d    d S 1 sw   Y  d S )	Nc                 S   r/   r   r   r   r   r   r   noopf     z7test_transform_partial_failure_valueerror.<locals>.noopc                 S   s   t r   )r   )rs   r   r   r   
raising_opi  r   z=test_transform_partial_failure_valueerror.<locals>.raising_opr   r   rZ   r   )r   r9   rk   rl   r   r   )r   r   r"   r_   r   r   r   )test_transform_partial_failure_valueerrord  s    "r   c                  C   sr   t tdddd} | ddg}t ddgddgdd	}t|| | d
di}t dgd
gdd	}t|| d S )N   r   r   )r-   r,   minmaxr   r   )r.   r,   r)   )r   r   r\   r    r!   r<   r#   r$   r   r   r   	test_demo|  s   r   rE   c                 C      t | S r   )rO   r   r   r   r   r     r   r   c                 C   s@   | j ||d}|r| |}t|| d S |t| ksJ d S )Nr   )r   r   r    r!   rO   )r   rE   r   r#   r$   r   r   r   (test_apply_map_evaluate_lambdas_the_same  s
   
r   c                 C   s   t t | dd }W d    n1 sw   Y  t|tr)t|t| ks+J t t | t}W d    n1 s@w   Y  t|trRt|t| ksTJ d S )Nc                 S   r   r   )ru   r   r   r   r   r     r   z+test_agg_evaluate_lambdas.<locals>.<lambda>)r    rI   rJ   r\   rQ   r   lenru   )r   r#   r   r   r   test_agg_evaluate_lambdas  s   "r   op_namer\   r   c                 C   s   d}|dkrt nd }tj||d t| |dd }W d    n1 s%w   Y  t| | d d}t|| tjt |d | dd }W d    n1 sRw   Y  t|| d S )	Nzcannot aggregater\   rZ   c                 S      t | | d gddgdS Nr3   r   x^2r.   r   r   r   r   r   r         z)test_with_nested_series.<locals>.<lambda>r3   )r   r   c                 S   r   r   r   r   r   r   r   r     r   )rJ   r    rI   getattrr   r   r\   )r;   r   r_   warningr#   r$   r   r   r   test_with_nested_series  s   r   c                 C   s<   |   }| dddddd ddd d	d
}t|| d S )Ncountmeanstdr   c                 S   
   |  dS )Ng      ?quantiler   r   r   r   r        
 z)test_replicate_describe.<locals>.<lambda>medianc                 S   r  )Ng      ?r  r   r   r   r   r     r  r   )r   r   r  r   z25%z50%z75%r   )describer   r    r!   )r   r$   r#   r   r   r   test_replicate_describe  s   r  c                 C   s>   |  ddg}t|  |  gddg| jd}t|| d S )Nsumr   r+   )r\   r   r	  r   r,   r    r!   )r   r#   r$   r   r   r   test_reduce  s   r
  z	how, kwdsc                 C   s   t g d}t|| d	i |}|j}||ksJ t|| g dfi |}t dddd}t|| t|| ddddfi |}t|| d S )
N)r2   r3   Nsize)r  r   r         @       @g      ?r   r   )r  )r   r   r  r    r!   )howkwdsr<   r#   r$   r   r   r   test_non_callable_aggregates  s   r  c                 C   sN   t dgd }|jddd dd g| d}t g dg dd	}t|| d S )
Nrd   r   r	  c                 S   r   r   r	  r   r   r   r   r     r   z3test_series_apply_no_suffix_index.<locals>.<lambda>r   )   r  r  )r	  r   r   r   )r   r   r    r!   )r   r<   r#   r$   r   r   r   !test_series_apply_no_suffix_index  s   r  zdti,expl    ,b/ r   r   r   r      nperawarec                 C   s:   |r	|  dj}n| j}t|dd }t|| d S )NUTCc                 S   s   t ddgS )Nr2   r3   r   r   r   r   r   r     s    zCtest_apply_series_on_date_time_index_aware_series.<locals>.<lambda>)r   r.   r   r   r    r   )dtir8   r  r.   r#   r   r   r   1test_apply_series_on_date_time_index_aware_series  s
   r  zby_row, expected)Fr2   c                 C   s:   t jddd}t|jjdd | d}t || d S )Nr  r  r  c                 S   r   r?   r   r   r   r   r   r     r0   zCtest_apply_scalar_on_date_time_index_aware_series.<locals>.<lambda>r   )r    makeTimeSeriesr   r   r.   r   assert_equal)r   r$   r   r#   r   r   r   1test_apply_scalar_on_date_time_index_aware_series  s   r  c                 C   s~   ddg}t |}t|jt j| d}tt|| dtjt jt jg}t |}t|}|jt j| d}tt|| d S )Nz00:00:01z00:00:02r   )	ri   to_timedeltar   r   r    r!   r5   rD   NaT)r   list_of_valid_stringsrT   rY   list_of_stringsr"   r   r   r   test_apply_to_timedelta  s   

r"  z
ops, namesr	  r   zhow, kwargsc           	         s   t  fddt||D }d|_|dkrtnd }dd| d}tj||d t ||fi |}W d    n1 s?w   Y  t|| d S )	Nc                       i | ]	\}}|| qS r   r   .0r,   r   r   r   r   
<dictcomp>4      z/test_apply_listlike_reducer.<locals>.<dictcomp>r   r\   zusing Series.[r   ]rZ   )	r   zipr,   rJ   r   r    rI   r   r!   )	r   opsnamesr  r]   r$   warnr_   r#   r   r&  r   test_apply_listlike_reducer%  s   r.  r+  r   r   c           	         s   t  fdd| D } j|_|dkrtnd }d}tj||d t ||fi |}W d    n1 s8w   Y  t|| d S )Nc                    r#  r   r   r$  r&  r   r   r'  L  r(  z/test_apply_dictlike_reducer.<locals>.<dictcomp>r\   zusing Series.[sum|mean]rZ   )r   itemsr,   rJ   r    rI   r   r!   )	r   r+  r  r]   r   r$   r-  r_   r#   r   r&  r   test_apply_dictlike_reducer=  s   r0  r6   r   c                    sl   t jdd& t fdd|D dd}||_ j||d}t|| W d    d S 1 s/w   Y  d S )Nr&   r'   c                    s   g | ]}| qS r   r   )r%  r   r&  r   r   
<listcomp>a  s    z3test_apply_listlike_transformer.<locals>.<listcomp>r2   r   r   )r5   r7   r   r   r   r    r   )r   r+  r,  r   r$   r#   r   r&  r   test_apply_listlike_transformerU  s   "r2  zops, expectedc                 C   r/   r   r   r   r   r   r   r   j  r0   r1   c                 C   r   r   r  r   r   r   r   r   k  r   r   c                 C   s*   t g d}|j| |d}t|| d S Nr1   r   r   r   r    r  )r+  r$   r   r"   r#   r   r   r   test_apply_listlike_lambdag  s   	r5  c                    sn   t jdd' t fdd| D } j|_ j||d}t|| W d    d S 1 s0w   Y  d S )Nr&   r'   c                    r#  r   r   r$  r&  r   r   r'    r(  z3test_apply_dictlike_transformer.<locals>.<dictcomp>r   )r5   r7   r   r/  r,   r   r    r!   )r   r+  r   r$   r#   r   r&  r   test_apply_dictlike_transformeru  s   "r6  c                 C   r/   r   r   r   r   r   r   r     r0   r   c                 C   r   r   r  r   r   r   r   r     r   c                 C   s*   t g d}|j| |d}t|| d S r3  r4  )r+  r   r$   r"   r#   r   r   r   test_apply_dictlike_lambda  s   r7  c                 C   s   t dtdittddd}|jdd }t dtjtjgddtjgg dgttdd	dttdddd
}t|| d S )Nr   r   r+   c                 S   s"   t t| d tt| d ddS )Nr2   yr+   )r   r   r   r   r   r   r   r     s   " z0test_apply_retains_column_name.<locals>.<lambda>              ?)r9  r:  r  r8  )r   r.   )	r   r   r   r   r   r5   rD   r    r   )r   dfr#   r$   r   r   r   test_apply_retains_column_name  s   r<  c                  C   sF   t ddtgg dd} | t}t tttgg dd}t|| d S )Nr   string)rT   rY   rV   r   )r   floatr   ru   r   rO   r    r!   r   r   r   r   test_apply_type  s   
r?  c                  C   sV   t g dg dg} | dd }tddgddgd	d
gtjdgd}t|| d S )Nr1   )rd   r   r   r   c                 S   r   r   r   r   r   r   r   r     r   z6test_series_apply_unpack_nested_data.<locals>.<lambda>r:  g      @r  g      @r  g      @r   )r   r2   r3   r   )r   r   r   r5   rD   r    r   )r"   r#   r$   r   r   r   $test_series_apply_unpack_nested_data  s   $r@  )Gnumpyr5   rk   pandasri   r   r   r   r   r   r   pandas._testing_testingr    pandas.tests.apply.commonr   fixturer   r%   r>   rA   r   parametrizerK   rS   r`   re   rn   r   r   r   rD   r   r   r   r   r   r   r   rO   r   r   r   r  r
  r  r  DatetimeIndexrepeatr  r  onesr  r"  r	  r   arrayr.  r0  r6   r   r2  r5  r8   r6  from_arraysr   r7  r<  r?  r@  r   r   r   r   <module>   s     


*
% 
&
#


	

		
		

		
"

