o
    $j                    @   sp  d dl mZ d dlmZmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlmZmZmZ d dlm  m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m Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z' d
Z(G dd dZ)G dd dZ*dd Z+dZ,dZ-G dd dZ.G dd dZ/d$ddZ0e	j12de3dfej4ej5ddfgd$ddZ6d d! Z7G d"d# d#Z8dS )%    )
namedtuple)datetime	timedeltaDecimalN)using_string_dtype)iNaT)InvalidIndexErrorPerformanceWarningSettingWithCopyError)
is_integer)Categorical	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestamp
date_rangeisnanotnato_datetimezBslice indices must be integers or None or have an __index__ methodc                	   @   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
ejdg dg dg 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d%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Ze j!d9d: Z"d;d< Z#d=d> Z$d?d@ Z%e j!dAdB Z&dCdD Z'e j!dEdF Z(dGdH Z)dIdJ Z*dKdL Z+dMdN Z,dOdP Z-dQdR Z.dSdT Z/ejj0e1 dUdVdWdX Z2ejj0e1 dUdVdYdZ Z3ejj0e1 dUdVd[d\ Z4d]d^ Z5d_d` Z6dadb Z7dcdd Z8dedf Z9ejdgdhdigdjdk Z:dldm Z;dndo Z<dpdq Z=drds Z>dtdu Z?dvdw Z@dxdy ZAdzd{ ZBd|d} ZCd~d ZDdd ZEdd ZFdd ZGdd ZHdd ZIejJdejdeKjLeKjLMdeKjLMdgdd ZNdd ZOdd ZPejddddgfdddgfgdd ZQe j!dd ZRdd ZSejdddgeKjTeKjTggdd ZUejddeKjTgdd ZVejdeWeXeYjZgdd Z[dd Z\ejddgdgejdi ddigdd Z]ejJdejddhdigejdi ddigdd Z^dd Z_dd Z`dd Zaejddhdgejdebdgdd Zcejddidhgejdddggdd ZdejdeejfdfeejgdfgddƄ ZhdS )TestDataFrameIndexingc                 C   s   |d d }t |jdksJ | D ]\}}t |jdks J t|j|j q|j D ]\}}|| d us:J q.d|vsAJ tjtdd |d  W d    d S 1 sXw   Y  d S )N   randommatch)	lenindexitemstmassert_index_equalZ_seriespytestraisesKeyError)selffloat_framesl_serieskey r+   j/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/pandas/tests/frame/indexing/test_indexing.pytest_getitem-   s   
"z"TestDataFrameIndexing.test_getitemc                 C   sl   |}t g d|d}tg dg dg|d}|d }tddgdd	ggt ddg|dd}tj||d
d d S )N   r   r/   dtyper/                  columnsr/   r4   r6   r8   TZcheck_exactr   r   r    assert_frame_equal)r%   any_numeric_dtyper1   idxdfresultexpectedr+   r+   r,   6test_getitem_numeric_should_not_fallback_to_positional>   s   $zLTestDataFrameIndexing.test_getitem_numeric_should_not_fallback_to_positionalc                 C   s   |  }tjdt||d< tjdt|}||d< tjtt	
dd |d W d    n1 s:w   Y  |d }t||j d S )Nr3   z$10z@awesome_domainz'df["$10"]'r   z	df["$10"])copynpr   default_rngstandard_normalr   r"   r#   r$   reescape__getitem__r    Zassert_numpy_array_equalvalues)r%   r&   r@   adresr+   r+   r,   test_getitem2G   s   z#TestDataFrameIndexing.test_getitem2c                 C   s`   |}t g d|d}tg dg dg|d}d|d< tg dg d	g|d}tj||d
d d S )Nr.   r0   r2   r5   r9   
   r/   )rO   r3   rO   )rO   r7   rO   Tr;   r<   )r%   r>   r1   r?   r@   rB   r+   r+   r,   6test_setitem_numeric_should_not_fallback_to_positionalT   s   zLTestDataFrameIndexing.test_setitem_numeric_should_not_fallback_to_positionalc                 C   s   d|d< |ddg }||ddg< t j|d |d dd t j|d |d dd d}tjt|d |ddg |dg< W d    n1 sEw   Y  tt|jd	 }d
t| dt| d}tjt|d ||d< W d    d S 1 sww   Y  d S )NfooEABFZcheck_namesz"Columns must be same length as keyr   r/   zLength of values \(z$\) does not match length of index \(z\))r    assert_series_equalr"   r#   
ValueErrorranger   r   )r%   r&   datamsgZnewcolumndatar+   r+   r,   test_setitem_list]   s"   
"z'TestDataFrameIndexing.test_setitem_listc                 C   s   t dtdddgtd}ddg|jdddgf< |j|jd ddgf }tddg|jtdd}t|| d	 |d< |d< d
dg|j|jd ddgf< |j|jd ddgf }td
dg|jdd}t|| d S )Nr   r4   Ztt1Ztt2)r   r:   r1   r/   r3   )r1   name012r\   )	r   rX   intlocr   r   r:   r    rV   r%   r@   rA   rB   r+   r+   r,   test_setitem_list2p   s   z(TestDataFrameIndexing.test_setitem_list2c                    s  |j d }|j |k}|t}|j | }|| }t||j  tjtdd ||d d   W d    n1 s9w   Y  || }	t|	| tjtdd ||  W d    n1 s^w   Y  t	||j }|| }	t|	| t
t ||j d d d }|| }	t|	| W d    n1 sw   Y  |||fD ]X}
|
  |
|
dk }t fdd jD  j  jd	}|
jD ]}||vr|
| ||< q|j|
jd
}tj||dd |
jD ]}|| j|| jkr|| j|
| jksJ qqd S )NrO   zItem wrong lengthr   zBoolean array expectedr   c                    s*   i | ]}|t  | d k | t jqS r   )rE   wherenan).0crY   r+   r,   
<dictcomp>   s   * z>TestDataFrameIndexing.test_getitem_boolean.<locals>.<dictcomp>r   r:   r9   F)Zcheck_dtype)r   astypeobjectr    r!   r"   r#   rW   r=   r   assert_produces_warningUserWarningreindexZ_get_numeric_datar   r:   r1   )r%   Zmixed_float_frameZmixed_int_framedatetime_framedindexerZindexer_objZsubindexZsubframeZsubframe_objr@   ZbifZbifwrj   r+   rk   r,   test_getitem_boolean~   sZ   






z*TestDataFrameIndexing.test_getitem_booleanc                 C   s@  |  }d|d< |d d|d< |d   |d< d|d< |d d|d< |d   |d< ||dk }|j}ttd	gd
 tdgd  tdgd  g dd}t|| d|j|j	dd ddgf< ||dk }|j}ttd	gd
 tdg td	g tdg td	g g dd}t|| d S )Nr/   rR   Zint32E1Fint64F1r   float64r6   r3   )rS   rT   CDrR   rw   rx   rz   r   r4   )
rD   rn   dtypesr   rE   r1   r    rV   rb   r   )r%   rs   r@   ZcastedrA   rB   r+   r+   r,   test_getitem_boolean_casting   sD   



z2TestDataFrameIndexing.test_getitem_boolean_castinglstTFT)TTT)FFFc                 C   s>   t tddd}|| }|j|j|  }t|| d S )N   r4   r6   )r   rE   arangereshaperb   r   r    r=   )r%   r   r@   rA   rB   r+   r+   r,   test_getitem_boolean_list   s   z/TestDataFrameIndexing.test_getitem_boolean_listc                 C   s`   t jdd}t| g dd}||dk   d7  < ||dk   d7  < t|j| d S )Nr3   r7   r7   )rS   rT   r|   r}   rR   r9   r   r/   )	rE   r   rF   rG   r   rD   r    assert_almost_equalrK   )r%   arrr@   r+   r+   r,   test_getitem_boolean_iadd   s
   z/TestDataFrameIndexing.test_getitem_boolean_iaddc                 C   s>   t tddgdgtg d}tg t}||  d||< d S )Nr   r/   rS   r:   r   )r   rE   emptyr   arraybool)r%   Zblahkr+   r+   r,   test_boolean_index_empty_corner   s   z5TestDataFrameIndexing.test_boolean_index_empty_cornerc                 C   s   t tjddg dg dd}|jd d }|j|jd d  }t	|| |jddg }|jt
ddg }t	|| d S )	Nr3   )r6   r4   )r/   rO   r|   rR   r2   rm   re   r/   rO   )r   rE   r   rF   rG   ilocrb   r   r    r=   r   rc   r+   r+   r,   test_getitem_ix_mixed_integer   s   z3TestDataFrameIndexing.test_getitem_ix_mixed_integerc                 C   s~   t dg dg dg ddg dd}|dg }|jd d dgf }t|| |d	g }|jd d d
gf }t|| d S )N)      ?g@g	@      @)      $   (   )rO      +   "   )r   rO   r      )Zrnar     r9   r   r4   r   r/   r   r   r    r=   rc   r+   r+   r,   test_getitem_ix_mixed_integer2  s   
	
z4TestDataFrameIndexing.test_getitem_ix_mixed_integer2c                 C   sP   t |j|d  d}tjt|d |j W d    d S 1 s!w   Y  d S )NrS   z6'DataFrame' object has no attribute 'NONEXISTENT_NAME'r   )r    rV   rS   r"   r#   AttributeErrorZNONEXISTENT_NAME)r%   r&   rZ   r+   r+   r,   test_getattr  s
   "z"TestDataFrameIndexing.test_getattrc                 C   s0   t dditdd}d|_|jdk sJ d S )Nfoobarr/   rO   r~   r7   )r   rX   r   allr%   r@   r+   r+   r,   test_setattr_column  s   z)TestDataFrameIndexing.test_setattr_columnc           
      C   s  |d d d d }||d< d|v sJ t |dksJ t |dks#J tt|jtjgd f}t||jdd}t	|d | |d }||d< tj	||d dd	 tj
dt |}||d
< |d
 |k smJ d|d< |d dk s{J d|d< |d dk sJ d|d< |d dk sJ |d d }d}	|s|rddg|d< ntjt|	d ddg|d< W d    n1 sw   Y  |r|d jdksJ n
|d jtjksJ |d ddgk sJ d S )NrS   r3   Zcol5   r   r   r\   Zcol6FrU   Zcol9r7   Zcol7gQ	@Zcol0rQ   Zcol8zC\nA value is trying to be set on a copy of a slice from a DataFramer^   r_   Zcol10r   str)r   rE   ZravelZcolumn_stackrK   rh   r   r   r    rV   r   rF   rG   r   r"   r#   r   r1   object_)
r%   r&   using_copy_on_writewarn_copy_on_writeusing_infer_stringr)   expr   ZsmallerrZ   r+   r+   r,   test_setitem%  s>   z"TestDataFrameIndexing.test_setitemc                 C   sb   t ddgg}tj|jd< t tjtjgg}t|| t ddgg}tj|jd< t|| d S )Nr   )r   rE   rh   r   r    r=   rb   r%   r@   rB   r+   r+   r,   test_setitem2X  s   z#TestDataFrameIndexing.test_setitem2c           	      C   sB  |  }|j  }d||d dk< d||d d df dk< t|j| |d dk}||jd d d }d||< d||d d df dk< t|j| d||dk< d||dk< t|j| d||dk< d||dk< t|j| d||d d dk < t|d d |d d dk d t|j| d||d d d dk< d||dk< t|j| d	}tj	t
|d
 d||d < W d    n1 sw   Y  |  }|t|k}tj||t|k< |j  }tj||j< t||j|jd}t|| |d ||t|k< t||j|jd  t||j|jd}t|| d S )Nr6   rS   r   re   r/   r7   r3   r4   z;Must pass DataFrame or 2-d ndarray with boolean values onlyr   rm   )rD   rK   r    r   rr   r   rE   Zputmaskr"   r#   	TypeErrorabsrh   r   r:   r=   )	r%   r&   r@   rK   r)   rZ   Zdf_origmaskrB   r+   r+   r,   test_setitem_booleanc  sJ   
"
z*TestDataFrameIndexing.test_setitem_booleanc                 C   s  |d  d|d< |d jtjksJ d|d< |d jtjks!J tt||d< t|d jjtjs6J d|d< d|d< |d jtjksHJ d|d< d|d< |d jtj	ksZJ d|d< |d jtjkshJ d	|d< |d jtjksvJ d|d< |d jtj	ksJ d S )
Nr}   i8r   rT   barrQ         @Z	somethingr3   )
rn   r1   rE   ry   r   r   
issubclasstypeintegerr{   r%   r&   r+   r+   r,   test_setitem_cast  s$   z'TestDataFrameIndexing.test_setitem_castc                 C   s  t g dg ddtdd}|d= g d|d< d|v sJ t|jdks(J d|d	< d
|d< d|d< d|t < d|t < t |jd}d
|d	< d|d< t|jdksWJ |jj	tj
ks`J d|d< |d j	tjksnJ d|d< |d j	tjks|J d|d	< d|d	 jd ksJ t tdd}d|d	< d|d
< |d
= d|d
< |r|d
 j	dksJ n
|d
 j	tj
ksJ g d|d< |r|d j	dksJ d S |d j	tj
ksJ d S )N)      ?       @      @abrj   )rT   r|   r4   r~   rT   r3   Z	beginningrS   rQ   rR   r   r}   date      @r/   r|   r   r   r   r^   r_   3Z	coercible)r   rE   r   r   r:   r   nowr   rK   r1   r   ry   r{   r   )r%   r&   r   r@   dmr+   r+   r,   test_setitem_corner  sB    z)TestDataFrameIndexing.test_setitem_cornerc                 C   s   g ddgd  t jddd}t|}||d dk j}d|j|dgf< d	|j|d
gf< |jd dks9J |jd d	ksBJ d S )N)r   r   r   r      r3   r   )titlecruftr   r   r   r   )r/   r   )r/   r   )rE   r   rF   r   r   rb   )r%   rY   r@   ixr+   r+   r,   test_setitem_corner2  s   z*TestDataFrameIndexing.test_setitem_corner2c                 C   s   t tdtdd}tdd tdD tdd}tg dtdd}td|d< t|jdks3J ||d< t|jdks@J ||d	< t|jdksMJ |rZ|d	 jd
ksXJ d S |d	 jtjksdJ d S )Nr4   rm   c                 S   s   g | ]}t d qS )r/   r   )ri   r(   r+   r+   r,   
<listcomp>  s    z<TestDataFrameIndexing.test_setitem_ambig.<locals>.<listcomp>r~   )rQ   bzrbazr   r/   r3   r   )	r   rX   r   rE   onesr   r:   r1   r   )r%   r   r   Zcoercable_seriesZuncoercable_seriesr+   r+   r,   test_setitem_ambig  s   z(TestDataFrameIndexing.test_setitem_ambigc                 C   sl   |d |d < t j|jd d df |d dd t j|jd d d f |d dd t j|d  |d dd d S )NrS   re   FrU   )r    rV   r   rb   r   r+   r+   r,   test_setitem_None  s   z'TestDataFrameIndexing.test_setitem_Nonec                 C   sN   t g dg dg dd}| }|j |j|j df< t|| d S )Nr   )Z11Z22Z33)Z111Z222Z333r   r   )r   rD   r   rb   r   r   r    r=   )r%   r@   rA   r+   r+   r,   &test_loc_setitem_boolean_mask_allfalse  s   z<TestDataFrameIndexing.test_loc_setitem_boolean_mask_allfalsec                 C   sZ   t tjdd}|jd dd  tj|jd dd< t|jd dd j	 s+J d S )Nr3   rO   r7      )
r   rE   r   rF   rG   r   rh   r   rK   r   r   r+   r+   r,   &test_getitem_fancy_slice_integers_step  s   "z<TestDataFrameIndexing.test_getitem_fancy_slice_integers_stepc                 C   sp  t tjddtdddd}| }d|jdd< |jdd dkj	 s*J | }d|jdd	< |jdd	 dkj	 sCJ |jdd
 }|j
dd	 }|g d}t|| t|| |jttdttddd d d   }tjtdd |j
dd	  W d    n1 sw   Y  tjtdd d|j
dd	< W d    d S 1 sw   Y  d S )Nr3   r   r   r   r~   r6   rO   r4   r   r8   )r6   r8   r   rO   r7   re   z^3$r   )r   rE   r   rF   rG   rX   rD   r   rK   r   rb   rr   r    r=   listr"   r#   r$   )r%   r@   cprA   result2rB   df2r+   r+   r,   ,test_getitem_setitem_integer_slice_keyerrors%  s*   *"zBTestDataFrameIndexing.test_getitem_setitem_integer_slice_keyerrorsc                 C   s   |j d d dd f }|d jtjksJ | }|j d d dd f }t|d j|d js2J t| d|j	d d df< W d    n1 sKw   Y  |sj|d dk
 s\J t|d j|d j d S t|| d S )Nr}   r|         @r6   )r   r1   rE   r{   rD   shares_memory_valuesr    assert_cow_warningrb   r   r=   )r%   r&   float_string_framer   r   Zslicedoriginalr+   r+   r,   test_fancy_getitem_slice_mixedB  s   z4TestDataFrameIndexing.test_fancy_getitem_slice_mixedc                 C   s   t tdtdddd}|jddg \}}|j|| }||| }|dd }t|| t|| | }d|j||< | }d|||< | }d|dd< t|| t|| d S )	Nr   z
2020-01-01periodsr~   r7   rO   r   r   )r   rX   r   r   rb   r    r=   rD   )r%   r@   startendrA   r   rB   r+   r+   r,   "test_getitem_setitem_non_ix_labelsZ  s   z8TestDataFrameIndexing.test_getitem_setitem_non_ix_labelsc                 C   s   t tjdd}|j|jdkd d f }|dg}t	|| t tjdd}|j|jdk|j
dkf }|jdgdgd}t	|| d S )Nr3   r4   r3   r   r/   rm   )r   rE   r   rF   rG   rb   r   rr   r    r=   r:   )r%   r@   rsZxpr+   r+   r,   test_ix_multi_taken  s   z(TestDataFrameIndexing.test_ix_multi_takec                 C   sP   |}|j }|jD ]}|| }|jd d d D ]}|||f || ks$J qqd S )Nr7   )rb   r:   r   )r%   r&   fr   coltsr?   r+   r+   r,   test_getitem_fancy_scalarz  s   
z/TestDataFrameIndexing.test_getitem_fancy_scalarc           
      C   s   |}|  }|j}t|jD ]4\}}||  |jd d d D ]#}|j|}tjd	 }	|	|j
||f< |	|||f< t|| qqd S )Nr7   r3   )rD   rb   	enumerater:   r   Zget_locrE   r   rF   rG   r   r    r=   )
r%   r&   r   rB   r   jr   r?   ivalr+   r+   r,   test_setitem_fancy_scalar  s   z/TestDataFrameIndexing.test_setitem_fancy_scalarc                 C   s  |}|j }|jddgd}|d d g df }t|| |j|jdd ddgd}||jdd g df }t|| |j|jd k}|j|j| d	}|| }t|| ||d d f }t|| |||jd
d  f }|j|j| ddgd}t|| d S )NrT   r}   r9   )FTFTr7   rO   rm      r~   r3   r|   )rb   rr   r    r=   r   r:   )r%   r&   r   r   rB   rA   Zboolvecr+   r+   r,   test_getitem_fancy_boolean  s"   z0TestDataFrameIndexing.test_getitem_fancy_booleanc                 C   s   |  }|  }|j  }|d dk}d|j|< d||j< t||j|jd}t|| |  }|  }|j  }d|j|ddgf< d||jd df< t||j|jd}t|| d S )NrS   r           rm   rT   r3   )rD   rK   rb   r   r   r:   r    r=   )r%   r&   framerB   rK   r   r+   r+   r,   test_setitem_fancy_boolean  s   



z0TestDataFrameIndexing.test_setitem_fancy_booleanc                 C   sp   |j g d }|j|jg d  }t|| |j d d g df }|jd d |jg d f }t|| d S )N)r/   r6   r   )r3   r   r/   )r   rb   r   r    r=   r:   )r%   r&   rA   rB   r+   r+   r,   test_getitem_fancy_ints  s   z-TestDataFrameIndexing.test_getitem_fancy_intsc                 C   st   |d d d d dk}|j | }|j |d d d  }t|| | }| }d|j |< d|j |< t|| d S )NrS   re   r/   r   )rb   r    r=   rD   )r%   r&   r   rA   rB   r   r+   r+   r,   'test_getitem_setitem_boolean_misaligned  s   


z=TestDataFrameIndexing.test_getitem_setitem_boolean_misalignedc                 C   s   t tjdd}tg d}tddg}|j||f }|jddgdgf }t|| |	 }d|jtg dtddgf< d|jddgdgf< t|| d S )	Nr3   r   r   FTr   r/   r7   )
r   rE   r   rF   rG   r   rb   r    r=   rD   )r%   r@   Zk1Zk2rA   rB   r+   r+   r,   "test_getitem_setitem_boolean_multi  s   "z8TestDataFrameIndexing.test_getitem_setitem_boolean_multic                 C   s"  t g d}ttjdd|d}|jdd }|g d}t	|| t
|dks/J |jdd }|ddg}tj	||d	d
 t
|dksMJ |jdd }|ddg}t	|| t
|dksiJ |jdd }|jdd }t	|| |jdd }d}tjt|d |dd }W d    n1 sw   Y  t	|| t g d}ttjdd|d}d}tjt|d |jdd  W d    n1 sw   Y  |jdd }|dg}t	|| t
|dksJ | }tjttd d|jdd< W d    n	1 sw   Y  tjt|d |jdd dk}W d    n	1 s6w   Y  |j sCJ |jdd |jdd kj sWJ | }d|jdd< |jdd dkj sqJ |jdd |jdd kj sJ |jdd }|}t	|| t
|dksJ |jdd }|g d}t	|| t
|dksJ |jdd }|dg}t	|| t
|dksJ |jdd }|g d}t	|| t
|dksJ | }d|jdd< |jdd }|dkj sJ d S )N)r   r3   r4   r6   r7   r3   r   r~   r   r6   )r   r3   r4   r6   r7   F)Zcheck_index_typer   r   r/   r   z3The behavior of obj\[i:j\] with a float-dtype indexr   )r   r         @r   r   zPcannot do positional indexing on Index with these indexers \[1.0\] of type floatr   g?)r   r   r   r   g
ףp=
@)r   r   rE   r   rF   rG   rb   rr   r    r=   r   r   rp   FutureWarningr"   r#   r   rD   
_slice_msgrK   r   )r%   using_array_managerr   r@   rA   rB   rZ   r   r+   r+   r,   !test_getitem_setitem_float_labels  s   ((z7TestDataFrameIndexing.test_getitem_setitem_float_labelsc                 C   s.  t tjddg dg dd}td|d< |j}ttdgd	 td
g g dd}t	
|| t	jtdd t|jd< W d    n1 sLw   Y  t|jd rZJ |d jtjksdJ |jd tksmJ tj|jd< t|jd s|J tj|jdd d f< t|jdd d f  rJ d S )Nr3   r7   r4   )r   r   rj   rt   e)rQ   r   r   rm   Z20010102	timestampr{   r4   zdatetime64[s])rQ   r   r   r  r~   %Setting an item of incompatible dtyper   )r   r  )rj   r  rt   rj   )r   rE   r   rF   rG   r   r   r   r1   r    rV   rp   r  r   rb   r   r   rh   r   rc   r+   r+   r,   )test_setitem_single_column_mixed_datetime@  s0   "z?TestDataFrameIndexing.test_setitem_single_column_mixed_datetimec                 C   s   t g dtddddddtdddtdddgd}t d	td
tdd}tj|d< tddd|jd< tjt	dd d|jd< W d    n1 sKw   Y  d|jddgdf< t
dt
dgdt
dgg}||jddgddgf< t|| d S )N)r   r   r   r         i  r/   xyi  i  r   r   r   abr8   r   r   r   r   r  r   )r/   r   r  r  r3   r4   r
  z2013-01-01T00:00:00r  z2014-01-01T00:00:00r6   r7   r   )r   r   r   rX   pdNaTrb   r    rp   r  rE   r   
datetime64r=   )r%   rB   r@   rS   r+   r+   r,   test_setitem_mixed_datetimeb  s6   



z1TestDataFrameIndexing.test_setitem_mixed_datetimec                 C   sn   |j |jd d ddgf }|j|j |jd d ddgf< |j |jdd  ddgf j}|j}t|| d S Nr3   rS   rT   )rb   r   rK   r    r   r%   r&   piecerA   rB   r+   r+   r,   test_setitem_frame_float  s
   z.TestDataFrameIndexing.test_setitem_frame_floatzTODO(infer_string))reasonc                 C   s~   |  }tddgddgg|jdd ddgd	}|jtd d ddgf}||j|< t|j|jdd ddgf j|j d S )
Nr   r   r   r   r   r3   rS   rT   rm   )rD   r   r   slicerb   r    r   rK   r%   r   r   r  r*   r+   r+   r,   test_setitem_frame_mixed  s    
,z.TestDataFrameIndexing.test_setitem_frame_mixedc                 C   s   |  }tddgddgddgddggt|jd	d
 ddg ddgd}|jtd d
 ddgf}||j|< t|j|jd	d
 ddgf j|jd	d
  d S )Nr   r   r   r   r   g      @g      @g       @r   r3   rQ   r   rS   rT   rm   )	rD   r   r   r   r  rb   r    r   rK   r  r+   r+   r,   'test_setitem_frame_mixed_rows_unaligned  s   
(z=TestDataFrameIndexing.test_setitem_frame_mixed_rows_unalignedc                 C   s   |  }|j|jd d dgf }|jdd  |_|jtdd  ddgf}||j|< tj|d< t|j|jdd  ddgf j|j d S )Nr3   rS   r  rT   )	rD   rb   r   r  rE   rh   r    r   rK   r  r+   r+   r,   &test_setitem_frame_mixed_key_unaligned  s   

,z<TestDataFrameIndexing.test_setitem_frame_mixed_key_unalignedc                 C   st   |  }|j|jd d ddgf }|jtdd  ddgf}|j|j|< t|j|jdd  ddgf j|j d S r  )rD   rb   r   r  rK   r    r   r  r+   r+   r,    test_setitem_frame_mixed_ndarray  s
   ,z6TestDataFrameIndexing.test_setitem_frame_mixed_ndarrayc                 C   s   t g dg dgg dd}| }tjtdd |jd d ddgf d	 |jd d ddgf< W d    n1 s:w   Y  |jddgd}|d	7 }|d
 |d
< t|| d S )N)r/   r3   rQ   )r4   r6   r   rS   rT   r|   r9   incompatible dtyper   rS   rT         ?r|   )r   rD   r    rp   r  rb   rr   r=   )r%   r@   r   rB   r+   r+   r,   test_setitem_frame_upcast  s   .z/TestDataFrameIndexing.test_setitem_frame_upcastc                 C   s   |j |jd d ddgf }|jdd  |_ddg|_||j |jdd  ddgf< |j |jdd  ddgf j}|j}t|| d S r  )rb   r   r:   rK   r    r   r  r+   r+   r,   test_setitem_frame_align  s   
z.TestDataFrameIndexing.test_setitem_frame_alignc                 C   s   t tjddg dd}|jd }|d d }t|| |jd }|jddg }t|| |jd }|jd	 }t	|| d S )
Nr3   r  rQ   rQ   r   r   r   r~   rQ   r   r6   r   r4   )
r   rE   r   rF   rG   rb   r    r=   r   rV   rc   r+   r+   r,   "test_getitem_setitem_ix_duplicates  s   



z8TestDataFrameIndexing.test_getitem_setitem_ix_duplicatesc                 C   s   t tjddg dd}|jdg }|jddg }t|| |j|d dk }||d dk }t|| |j|d dk }||d dk }t|| d S )	Nr3   r  r'  r~   r   r6   r/   r   )	r   rE   r   rF   rG   rb   r   r    r=   )r%   r@   rA   r   r+   r+   r,   +test_getitem_ix_boolean_duplicates_multiple  s   zATestDataFrameIndexing.test_getitem_ix_boolean_duplicates_multiple
bool_valueTFc                 C   s   t dg di}| d}tjt|d |j|  W d    n1 s$w   Y  d}tjt|d d|j|< W d    d S 1 sCw   Y  d S )Nr   r2   z7: boolean label can not be used without a boolean indexr   z.cannot use a single bool to index into setitemr   )r   r"   r#   r$   rb   )r%   r*  r@   messagerZ   r+   r+   r,   %test_getitem_setitem_ix_bool_keyerror  s   
"z;TestDataFrameIndexing.test_getitem_setitem_ix_bool_keyerrorc                 C   s   d|d< t |d jjttjfsJ |j|jd df }t|s"J t	ddgi}d|d< |jd }t|s8J t
dgd	gdd
}|jd	gdf }t|| d S )Nr/   rR   r7   r   gGz?i  r   r  r   r`   )r   r1   r   ra   rE   r   rb   r   r   r   r   r    rV   )r%   r&   rA   r@   rB   r+   r+   r,   "test_single_element_ix_dont_upcast  s   
z8TestDataFrameIndexing.test_single_element_ix_dont_upcastc                 C   s   t tdddtdddd}d}tjt|d	 |jd
d   W d    n1 s,w   Y  tjt|d	 d|jdd < W d    d S 1 sKw   Y  d S )Nr   rO   r6   r   r   r3   r~   zcallable with ilocr   c                 S      dS Nrf   r+   r(   r+   r+   r,   <lambda>      zMTestDataFrameIndexing.test_iloc_callable_tuple_return_value.<locals>.<lambda>r/   c                 S   r.  r/  r+   r0  r+   r+   r,   r1    r2  )	r   rE   r   r   rX   r    rp   r  r   )r%   r@   rZ   r+   r+   r,   %test_iloc_callable_tuple_return_value  s   ""z;TestDataFrameIndexing.test_iloc_callable_tuple_return_valuec                 C   s   t tjddtdddd}|jd }|jd }t	|| |jd }|jd }t	|| |jt
dd }|jdd	 }t|| |jg d
 }||jg d
 }t|| d S )Nr3   rO   r6   r   r   r~   r/   r6   r   r  r/   r3   r6   r8   )r   rE   r   rF   rG   rX   r   rb   r    rV   r  r=   rr   r   r%   r@   rA   r   rB   r+   r+   r,   test_iloc_row  s   



z#TestDataFrameIndexing.test_iloc_rowc                 C   s   t tjddtdddd}| }|jtdd }t	|d |d s)J |d  }t
| d|jd d df< W d    n1 sHw   Y  |sbd|jdd< t	|d |d sbJ t
|d | d S )	Nr3   r4  r   r   r~   r6   r   r   )r   rE   r   rF   rG   rX   rD   r   r  r   r    r   rb   r   rV   )r%   r   r   r@   r   subsetZexp_colr+   r+   r,   test_iloc_row_slice_view4  s   z.TestDataFrameIndexing.test_iloc_row_slice_viewc                 C   s   t tjddtdddd}|jd d df }|jd d df }t	|| |jd d df }|jd d df }t	|| |jd d t
ddf }|jd d dd	f }t|| |jd d g d
f }|j|jg d
 d}t|| d S )Nr3   r6   rO   r   r   r9   r/   r6   r   r  r5  )r   rE   r   rF   rG   rX   r   rb   r    rV   r  r=   rr   r:   r6  r+   r+   r,   test_iloc_colJ  s   z#TestDataFrameIndexing.test_iloc_colc                 C   s"  t tjddtdddd}| }|jd d tddf }|sk|skt	|d j
|d j
s3J t| d|jd d df< W d    n1 sLw   Y  |d dk s[J t	|d j
|d j
siJ d S |r{t	|d j
|d j
s{J d|d< |d dk sJ t|| d S )	Nr3   r:  r   r   r9   r6   r   r   )r   rE   r   rF   rG   rX   rD   r   r  r   r   r    r   rb   r   r=   )r%   r  r   r   r@   r   r8  r+   r+   r,   test_iloc_col_slice_viewa  s"    z.TestDataFrameIndexing.test_iloc_col_slice_viewc                 C   s   t tddddtddddd}|jdtddddd}td|dd	gd
}tg d}d|j|| df< tg dg dd|d}t|| td|dd	gd
}|j|| df  d7  < t|| d S )Ni  r/   )yearmonthdayr7   )r   r   )rb   itemr   rS   rT   rm   )FFFFFTr8   )r   r   r   r   r8   r8   )r   r   r   r   r   r   rS   rT   r~   )	r   r   insertr   rE   r   rb   r    r=   )r%   Ztranger@   Zbool_idxrB   r+   r+   r,   test_loc_duplicates  s   z)TestDataFrameIndexing.test_loc_duplicatesc                 C   s|   t tdddddd}td|i}|g d |d< t|d | td|i}|g d |jg ddf< t|d | d S )	Nz
2015-01-01r4   utc)r   tzdatesr`   )r/   r   r3   )r   r/   r3   )r   r   r   r    rV   rb   )r%   columnr@   r+   r+   r,   4test_setitem_with_unaligned_tz_aware_datetime_column  s   zJTestDataFrameIndexing.test_setitem_with_unaligned_tz_aware_datetime_columnc                 C   s  t dd}ttdddd}tjd| gd dd|d	< tjd
| gd dd|jd d df< tjd| gd dd|j|jd d df< tjd| gd dd|jd d df< tjd| gd dd|j|jd d df< td|d< tjd| gd dd|j|jd d df< tddd|j|jd d df< td|d< |j	}t
tdgd tdgd
  tdd}t|| d S )Nr/   )hoursZ20130101r6   r   r~   m8[ns]r0   rS   r3   rT   r4   r|   r}   r7   rR   r  rx   r8   re   r   GHztimedelta64[ns]zdatetime64[ns]ZABCDEFGH)r   r   r   rE   r   rb   r   timedelta64r  r   r   r1   r   r    rV   )r%   Zone_hourr@   rA   rB   r+   r+   r,   ,test_loc_setitem_datetimelike_with_inference  s"   
&,&,, zBTestDataFrameIndexing.test_loc_setitem_datetimelike_with_inferencec                 C   s"  t tjtjtjtjtjdtjdtjdddtjtjdtjtjdtjtjtjtjtjddtjtjtjtjdddddddd}| }d||d	k< | }d|jd
< d|jd< d|jd< d|jd< t|| d|d< d}tjt	|d d||d	k< W d    d S 1 sw   Y  d S )N)#   r   r   1   2   gjBz?g% t?gk?g?r   r/   )r   r/   r3   r4   r6   r  g333333?)r   r/   )rP  r/   )rQ  r/   )rO  r6   testrQ   zDnot supported between instances|unorderable types|Invalid comparisonr   )
r   rE   rh   rD   rb   r    r=   r"   r#   r   )r%   r@   r   rB   rZ   r+   r+   r,   #test_getitem_boolean_indexing_mixed  sJ   



"z9TestDataFrameIndexing.test_getitem_boolean_indexing_mixedc                 C   s:  t jddgddggd dgd}tg dg dg|tddgd	d
d}tjtdd |d d df  W d    n1 s<w   Y  ttdd	d
}t ddgddggddgddggd dgd}tddgddgg||d}|jd d t	d dff }t
|| d}ttdd	d
}tddg||d}|d }t
|| d S )Nr  r  r   r/   rj   names)r/   r/   r3   r3   )r4   r4   r6   r6   r   r`   r   r  r   r3   )ZlevelscodesrU  r4   r6   )r  r   r   )r   from_productr   r   r"   r#   r	   rX   rb   r  r    r=   r   rV   )r%   midgr   r:   rB   rA   r\   r+   r+   r,   test_type_error_multiindex  s&   "z0TestDataFrameIndexing.test_type_error_multiindexc                 C   sh   t tdtjtdd}|jd d df }|d }t	|| |j
d d df }t	|| d S )Nr4   r6   r7   r9   r   r$  )r   rE   r   r  ZIntervalIndexZfrom_breaksr   r   r    rV   rb   )r%   r@   rB   rM   r+   r+   r,   ,test_getitem_interval_index_partial_indexing  s   zBTestDataFrameIndexing.test_getitem_interval_index_partial_indexingc                 C   sZ   t ddgtd}tdtdd|jd< t tdgtdgd}t|| d S )Nr   r   )r:   r1   )r3   )r3   r3   r  r   )r   ro   rE   Zzerosrb   r    r=   r   r+   r+   r,    test_setitem_array_as_cell_value  s   z6TestDataFrameIndexing.test_setitem_array_as_cell_valuec                 C   s   t dg didd}| }|jd d d d df |jd d < t|| tjj	|jd d d d df |jd d < t|| |j
d d d d f  |j
d d < t|| d S )NrS   r2   Int64r0   re   )r   rD   rK   rb   r    r=   r  coreZarraysZNumpyExtensionArrayr   )r%   r@   origr+   r+   r,   $test_iloc_setitem_nullable_2d_values  s   ",$z:TestDataFrameIndexing.test_iloc_setitem_nullable_2d_valuesc                 C   s2   t tjdtd}t|d |d< |dg  d S )Nr/   r/   r0   r   )r   rE   r   ro   Z
empty_liker   r+   r+   r,   ,test_getitem_segfault_with_empty_like_object&  s   zBTestDataFrameIndexing.test_getitem_segfault_with_empty_like_objectz.ignore:Setting a value on a view:FutureWarningnullM8[ns]rJ  c                 C   s  t dg di|d}|d  }|j}dg d}tjt|d ||d< W d    n1 s0w   Y  tjt|d ||g|d d< W d    n1 sOw   Y  tjt|d ||d< W d    n1 sjw   Y  tjt|d ||g|d d< W d    n1 sw   Y  tjt|d ||jd< W d    n1 sw   Y  tjt|d ||g|jd d< W d    n1 sw   Y  tjt|d ||jd	< W d    n1 sw   Y  tjt|d ||g|jd ddf< W d    n	1 sw   Y  | }| |d
< tjt|d ||jd	< W d    n	1 s+w   Y  tjt|d ||g|jd ddf< W d    d S 1 sOw   Y  d S )NrS   r2   r0   |)z@timedelta64\[ns\] cannot be converted to (Floating|Integer)Dtypez?datetime64\[ns\] cannot be converted to (Floating|Integer)Dtypez 'values' contains non-numeric NAz3Invalid value '.*' for dtype '(U?Int|Float)\d{1,2}'r   r   r3   r   r   rT   )r   rD   r   joinr"   r#   r   r   )r%   rd  Zany_numeric_ea_dtyper@   serr   rZ   r   r+   r+   r,   .test_setting_mismatched_na_into_nullable_fails-  sL   

$zDTestDataFrameIndexing.test_setting_mismatched_na_into_nullable_failsc                 C   sL   t dgtg ddd}d|jd< t ddgitdgddd}t|| d S )Nr   r   r`   r   r/   r   r~   )r   r   rb   r    r=   r   r+   r+   r,   +test_loc_expand_empty_frame_keep_index_nameb  s   
zATestDataFrameIndexing.test_loc_expand_empty_frame_keep_index_namec                 C   sX   t dgtjg g ddd}d|jd< t ddgitjdgg ddd}t|| d S )Nrt   r   rT  r   rQ   r2   r~   r   r   from_tuplesrb   r    r=   r   r+   r+   r,   +test_loc_expand_empty_frame_keep_midx_namesi  s   
zATestDataFrameIndexing.test_loc_expand_empty_frame_keep_midx_namesz	val, idxr)r  r   r  r   )r/   r   r/   c                 C   s   t dddgi}tjtdd t d|dgiddgd|jd d |f< W d    n1 s-w   Y  t dtj|gi}t|| d S )Nr   r/   r3   r  r   r   r~   )r   r    rp   r  rb   rE   rh   r=   )r%   idxrr   r@   rB   r+   r+   r,   test_loc_setitem_rhs_frameu  s   (z0TestDataFrameIndexing.test_loc_setitem_rhs_framec                 C   sT   t ddgd}| }|d d  }tjddgtjd|jd d df< t|| d S )Nr   r   r9   r/   r3   r0   r   )r   rD   rE   r   r{   r   r    r=   )r%   r   r@   rB   viewr+   r+   r,   $test_iloc_setitem_enlarge_no_warning  s
   "z:TestDataFrameIndexing.test_iloc_setitem_enlarge_no_warningc                 C   s   t ddddtjddgddggddgdd	}d
g}d|d< d|j|df< |j|df  |j|ddgf  d|j|df< |j|df }tdtjdgdggddgddd }}t|| d S )NTr/   r   )Zbool_colr   r   r3   idx1idx2rT  r~   rb  r4   rj   r   r   r   r   r   )r   r   from_arraysrb   r   r    rV   )r%   r@   r?   rA   rB   r+   r+   r,   (test_loc_internals_not_updated_correctly  s"   

z>TestDataFrameIndexing.test_loc_internals_not_updated_correctlyr   Nc                 C   sP   t dg didd}||jdgd d f< t dtjddgidd}t|| d S Nr   r   stringr0   r   r   rj   r   r   r  NAr    r=   r%   r   r@   rB   r+   r+   r,    test_iloc_setitem_string_list_na  s   z6TestDataFrameIndexing.test_iloc_setitem_string_list_nac                 C   sN   t dg didd}||jdd d f< t dtjddgidd}t|| d S rw  ry  r{  r+   r+   r,   test_iloc_setitem_string_na  s   z1TestDataFrameIndexing.test_iloc_setitem_string_nafuncc                 C   sP   t dg didd}d|jd d |dgf< t dg didd}t|| d S )Nr   r2   r^  r0   r7   r   )r7   r7   r7   r   )r%   r~  r@   rB   r+   r+   r,   /test_iloc_setitem_ea_null_slice_length_one_list  s   zETestDataFrameIndexing.test_iloc_setitem_ea_null_slice_length_one_listc                 C   s   t tjddgg dgddgdd}td|jj}|dd	d
gd}|j|d d f }t tjddgddgdd}t	|| d S )NrS   rT   r   firstsecondrT  r~   ZIndexerr   r   )r  r  )rS   r   )rS   r   )
r   r   rW  r   r   rU  rb   rm  r    r=   )r%   r@   Zindexer_tuplero  rA   rB   r+   r+   r,   test_loc_named_tuple_for_midx  s   z3TestDataFrameIndexing.test_loc_named_tuple_for_midxru   r   r   c                 C   sh   t dtdtdgi|}|d tjdd |jdg|f< t dtdtdgi|}t|| d S )Nr   z
2022-12-29z
2022-12-30r/   )daysz
2022-12-31)r   r   r  	Timedeltarb   r    r=   )r%   r   ru   r@   rB   r+   r+   r,   test_set_2d_casting_date_to_int  s    z5TestDataFrameIndexing.test_set_2d_casting_date_to_inthas_refr\   c                 C   sr   d}t i |t|t|d}|ddg  }| }|r%|d d  }||j|dg ddgf< t|| d S )Nr   r  r  r  T)r   rX   rD   rb   r    r=   )r%   r   r  nr@   valuerB   rq  r+   r+   r,   1test_loc_setitem_reordering_with_all_true_indexer  s   zGTestDataFrameIndexing.test_loc_setitem_reordering_with_all_true_indexerc                 C   sn   t ddgd}| }t dgd}td  ||jd d df< W d    n1 s*w   Y  t|| d S )Nr   r   r9   )r   rD   r    rp   rb   r=   )r%   r@   rB   rhsr+   r+   r,   test_loc_rhs_empty_warning  s   z0TestDataFrameIndexing.test_loc_rhs_empty_warningc                 C   s   t g dg dg}tddgdd}tdgdd}|j||f }t ddggdgd	}t|| |j|j|jf }t|| d S )
Nr   r/   r3   r4   r6   r7   r8   r   r   	   r   r/   r^  r0   r7   r8   r~   )r   r   r   r    r=   rK   )r%   r@   ru   Zrow_indexerrA   rB   r+   r+   r,   test_iloc_ea_series_indexer  s   z1TestDataFrameIndexing.test_iloc_ea_series_indexerc                 C   s   t g dg dg}tdtjgdd}d}tjt|d |jd d |f  W d    n1 s0w   Y  tjt|d |jd d |jf  W d    d S 1 sRw   Y  d S )Nr  r  r   r^  r0   zcannot convertr   )	r   r   r  rz  r"   r#   rW   r   rK   )r%   r@   ru   rZ   r+   r+   r,   #test_iloc_ea_series_indexer_with_na  s   "z9TestDataFrameIndexing.test_iloc_ea_series_indexer_with_na)Tr1   booleanc                 C   s   t jtg d|dtg d|dgddgd}tdg di|d	}ttt|t |j	| }W d    n1 s:w   Y  tdd
dgit
ddgd|dd	}t|| d S )N)TTFFr0   )TFTFr   r   rT  rj   )r/   r3   r4   r6   r~   r/   r3   TF)r\   r1   )r   ru  r   r   r    Zmaybe_produces_warningr
   
isinstancetuplerb   r   r=   )r%   r1   ru   Zmidxr@   rA   rB   r+   r+   r,   test_loc_bool_multiindex  s   z.TestDataFrameIndexing.test_loc_bool_multiindexrD  r   c                 C   sl   t ttdddtdddg|dddgd}|jdd	}||d
  }|d |j|d
 |f< t|| d S )Ni  r/   r   r   )rD  TF)r   update)deepr  r   )r   r   r   rD   rb   r    r=   )r%   rD  ru   r@   rB   Z	update_dfr+   r+   r,   2test_loc_datetime_assignment_dtype_does_not_change  s   zHTestDataFrameIndexing.test_loc_datetime_assignment_dtype_does_not_changezindexer, idxr3   c                 C   s   t dtjgdtjgdtjggtd}t dtjgdtjgg}|||d |d d f< t dtjgdtjgdtjggtd}t|| d S )Nr^   r_   r   r0   r/   r3   )r   rE   rh   ro   r    r=   )r%   ru   r?   r@   r  rB   r+   r+   r,   "test_setitem_value_coercing_dtypes3  s
   $$z8TestDataFrameIndexing.test_setitem_value_coercing_dtypes)i__name__
__module____qualname__r-   rC   rN   rP   r[   rd   rv   r   r"   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   tdZskip_array_manager_invalid_testr   r   r   r   r   r   r   r   r   r   r  r	  r  r  Zxfailr   r  r  r   r!  r%  r&  r(  r)  r,  r-  r3  r7  r9  r;  r<  rC  rH  rN  rS  rZ  r\  r]  ra  rc  filterwarningsr  r  Zto_numpyrj  rk  rn  rp  rr  rv  rz  r|  r}  r   r   rE   r   r  r  r  r  r  r  r  r   r  r  r    rb   r   r  r+   r+   r+   r,   r   ,   s    		;"


340




	Y" 



	
	.
1
	




	
r   c                   @   s   e Zd Zdd ZdS )TestDataFrameIndexingUInt64c              	   C   s>  t tdg ddtjd}|d d}d|jvsJ ||d< t|d t|dd d	|jvs4J d|d	< ||d	< t|d	 t|d	d |d	= |	 }tj
td
d tj|jd< tj|jd< W d    n1 smw   Y  |d }tt|tg ddd t|jttdtdtdgg dd d S )Nr4   )l            l           l   
        rA  r0   rS   rQ   r|   r`   r}   r#  r   rb  r/   r3   rT   r   uint64Or"  r~   )r   rE   r   r  renamer:   r    rV   r   rD   rp   r  r  r  r   r   r   r1   )r%   r@   r?   r   rA   r+   r+   r,   r   >  s6   z(TestDataFrameIndexingUInt64.test_setitemN)r  r  r  r   r+   r+   r+   r,   r  =  s    r  c                 C   s  t ddgtdddtjdddd}|jd }t|jd ts"J t|jd tjs-J |j	d }t|jd ts<J t|jd tjsGJ |j
ddd}t|jd tsXJ t|jd tjscJ | rgd S |j}|  |dj}t|d ts}J t|d tjsJ |j|jd  }|jd	ksJ |d
}t|tsJ |j|jd  }|jdksJ |d
}t|tjsJ d S )Nr/   r3   2000r   z1 Dayr"  r   )Zaxisre  rg  rJ  )r   r   r  Ztimedelta_rangerb   r  rK   r   r  r   ZxsZ_mgrZ_rebuild_blknos_and_blklocsZfast_xsr   blocksZblknosr1   iget)r  r@   ri  Zmgrr   Zblkr   r+   r+   r,   /test_object_casting_indexing_wraps_datetimelikea  s<   




r  zFCannot setitem on a Categorical with a new category( \(.*\))?, set thezCCannot set a Categorical with another, without identical categoriesc                   @   s8  e Zd Zejdd Zejdd Zejdd Zejdd Zejd	d
 Z	ej
dejejgdd Zej
dejejejejgdd Zej
dejejgdd Zej
dejejgdd Zej
dejejgdd Zej
dejejgdd Zej
dejejejgdd Zdd ZdS )TestLocILocDataFrameCategoricalc                 C   >   t g dddgd}tg d}g d}t||d|d}|S )	N)r   r   r   r   r   r   r   r   r   
categorieshr   r   r   lmr  r/   r/   r/   r/   r/   r/   r/   catsrK   r~   r   r   r   )r%   r  r?   rK   r`  r+   r+   r,   r`    s
   z$TestLocILocDataFrameCategorical.origc                 C   r  )	Nr   r   r   r   r   r   r   r   r   r  r  )r/   r/   r3   r/   r/   r/   r/   r  r~   r  )r%   Zcats1rs  Zvalues1exp_single_rowr+   r+   r,   r    
   z.TestLocILocDataFrameCategorical.exp_single_rowc                 C   r  )	Nr   r   r   r   r   r   r   r   r   r  r  )r/   r/   r3   r3   r/   r/   r/   r  r~   r  )r%   Zcats2rt  Zvalues2exp_multi_rowr+   r+   r,   r    s
   z-TestLocILocDataFrameCategorical.exp_multi_rowc                 C   r  )	Nr  r   r   r  r  r  r  r~   r  )r%   Zcats3Zidx3Zvalues3exp_parts_cats_colr+   r+   r,   r    r  z2TestLocILocDataFrameCategorical.exp_parts_cats_colc                 C   r  )	Nr  r   r   r  r  r  r  r~   r  )r%   Zcats4Zidx4Zvalues4exp_single_cats_valuer+   r+   r,   r    s   
z5TestLocILocDataFrameCategorical.exp_single_cats_valueru   c                 C   s   |  }tdd}|tju rtdd}ddgddgg|||d d f< t|| |  }tjttd ddgddgg|||d d f< W d    d S 1 sPw   Y  d S )Nr3   r6   r   r   r   r   rj   )	rD   r  r    rb   r=   r"   r#   r   msg1)r%   r`  r  ru   r@   r*   r+   r+   r,   #test_loc_iloc_setitem_list_of_lists  s   


 ""zCTestLocILocDataFrameCategorical.test_loc_iloc_setitem_list_of_listsc                 C   s   |  }d}|tjtjfv r|jd |jd f}d|||< t|| tjt	t
d d|||< W d    d S 1 s=w   Y  d S )N)r3   r   r3   r   r   r   rj   )rD   r    rb   atr   r:   r=   r"   r#   r   r  )r%   r`  r  ru   r@   r*   r+   r+   r,   7test_loc_iloc_at_iat_setitem_single_value_in_categories  s   "zWTestLocILocDataFrameCategorical.test_loc_iloc_at_iat_setitem_single_value_in_categoriesc                 C   sJ   |  }|jdk}d}|tju r|j| }d||||f< t|| d S )Nr   r   r   )rD   r   r    rb   r:   r=   )r%   r`  r  ru   r@   r   r*   r+   r+   r,   5test_loc_iloc_setitem_mask_single_value_in_categories  s   


zUTestLocILocDataFrameCategorical.test_loc_iloc_setitem_mask_single_value_in_categoriesc                 C   s   |  }d}|tju r|jd }ddg|||d d f< t|| tjttd ddg|||d d f< W d    d S 1 sAw   Y  d S )Nr3   r   r   rj   )	rD   r    rb   r   r=   r"   r#   r   r  )r%   r`  r  ru   r@   r*   r+   r+   r,   2test_loc_iloc_setitem_full_row_non_categorical_rhs  s   

"zRTestLocILocDataFrameCategorical.test_loc_iloc_setitem_full_row_non_categorical_rhsc           	      C   s  |  }tdddf}|tju rtdd|jd f}tddgddgd}||||< t|| ttd	td
d}tj	t
td ||||< W d    n1 sRw   Y  ttdtd
d}tj	t
td ||||< W d    d S 1 szw   Y  d S )Nr3   r6   r   r   r   r   r   r  Zbbabcr   cc)rD   r  r    rb   r:   r   r=   r   r"   r#   r   msg2)	r%   r`  r  ru   r@   r*   compatZsemi_compatZincompatr+   r+   r,   1test_loc_iloc_setitem_partial_col_categorical_rhs  s   
"zQTestLocILocDataFrameCategorical.test_loc_iloc_setitem_partial_col_categorical_rhsc                 C   s   |  }tdddf}|tju rtdd|jd f}ddg|||< t|| tjtt	d ddg|||< W d    d S 1 sCw   Y  d S )	Nr3   r6   r   r   r   r   r   rj   )
rD   r  r    rb   r:   r=   r"   r#   r   r  )r%   r`  r  ru   r@   r*   r+   r+   r,   )test_loc_iloc_setitem_non_categorical_rhs#  s   
"zITestLocILocDataFrameCategorical.test_loc_iloc_setitem_non_categorical_rhsc                 C   sv   t dddt}tdg di|d}|jjtksJ |tju r'||d }n
||d d df }|jjtks9J d S )NZ2012r4   r   r   r2   r~   )r   rn   ro   r   r   r1   r    getitem)r%   ru   r?   r@   ri  r+   r+   r,   -test_getitem_preserve_object_index_with_dates6  s   
zMTestLocILocDataFrameCategorical.test_getitem_preserve_object_index_with_datesc                 C   s\   t dgdggtjddgdgdd}t dggtjdgdgdd}|jd }t|| d S )	Nr   r/   )r   )r   r  rT  )rY   r   r   rl  )r%   r@   rB   rA   r+   r+   r,    test_loc_on_multiindex_one_levelE  s   

z@TestLocILocDataFrameCategorical.test_loc_on_multiindex_one_levelN)r  r  r  r"   Zfixturer`  r  r  r  r  r  r  r    rb   r   r  r  Ziatr  r  r  r  r  r  r  r  r+   r+   r+   r,   r    s4    


	









r  c                   @   s,  e Zd Zejddhddidhdfddidfddhfdddifgdd Zejddhddidhdfdfddidfdfddhfdddifgdd	 Zejddhddidhdfddidfddhfdddifgd
d Zejddhddidhdfdfddidfdfddhfdddifgdd Z	dS )TestDeprecatedIndexersr*   r/   r   c                 C   sZ   t ddgddggddgd}tjtdd	 |j|  W d    d S 1 s&w   Y  d S 
Nr/   r3   r4   r6   r   r   r9   as an indexer is not supportedr   r   r"   r#   r   rb   r%   r*   r@   r+   r+   r,   $test_getitem_dict_and_set_deprecatedS     "z;TestDeprecatedIndexers.test_getitem_dict_and_set_deprecatedr3   r  c                 C   sf   t ddgddggddgtddgd	}tjtd
d |j|  W d    d S 1 s,w   Y  d S Nr/   r3   r4   r6   r   r   r  r[  r   r  r   r   r   rm  r"   r#   r   rb   r  r+   r+   r,   /test_getitem_dict_and_set_deprecated_multiindex\     "zFTestDeprecatedIndexers.test_getitem_dict_and_set_deprecated_multiindexc                 C   sZ   t ddgddggddgd}tjtdd	 d|j|< W d    d S 1 s&w   Y  d S r  r  r  r+   r+   r,   $test_setitem_dict_and_set_disallowedq  r  z;TestDeprecatedIndexers.test_setitem_dict_and_set_disallowedc                 C   sf   t ddgddggddgtddgd	}tjtd
d d|j|< W d    d S 1 s,w   Y  d S r  r  r  r+   r+   r,   /test_setitem_dict_and_set_disallowed_multiindexz  r  zFTestDeprecatedIndexers.test_setitem_dict_and_set_disallowed_multiindexN)
r  r  r  r"   r  r  r  r  r  r  r+   r+   r+   r,   r  R  s>    2



2

r  returnc                  C   s   t ddgi} d| j| d dkdf< t dgdgd}t| | t ddgi} dd }|| j| d dkdf< t dg|gd}t| | d S )Nr  r/   r^   r  r  c                 S   s   | S )Nr+   )r  r+   r+   r,   r1    r2  z4test_adding_new_conditional_column.<locals>.<lambda>)r   rb   r    r=   )r@   rB   r  r+   r+   r,   "test_adding_new_conditional_column  s   r  )r1   infer_stringFZna_valueTc                 C   s   t ddgddgd}td| d|j|d dkd	f< W d    n1 s'w   Y  t ddgddgdtd
gddd| d}t|| d S )Nr/   r3   r4   r6   r  future.infer_stringr^   r   rj   rh   r   ry   )r   r  option_contextrb   floatrn   r    r=   )r1   r  r@   rB   r+   r+   r,   .test_adding_new_conditional_column_with_string  s   	 
r  c                  C   s   t ddgi} tdd d| j| d dkdf< W d    n1 s#w   Y  t dgtdgtjtjddd	tddgd
dd}t	
| | d S )Nr  r/   r  Tr^   r  r  r0   r  r   r9   )r   r  r  rb   r   StringDtyperE   rh   r   r    r=   )r@   rB   r+   r+   r,    test_add_new_column_infer_string  s   r  c                
   @   s   e Zd Zdd ZddddejededgZ	ddge
dd	g d
e
dddgZejde	d	ded	ed	g ejdedd Zejde	ddedg ejdedd Zejde	dg ejdedd ZdS )TestSetitemValidationc                 C   s   d}t |}| }tj||d ||j|df< | }W d    n1 s(w   Y  tj||d ||j|df< | }W d    d S 1 sKw   Y  d S )Nz3Setting an item of incompatible dtype is deprecatedr   r   r   )rH   rI   rD   r    rp   r   rb   )r%   r@   invalidru   warnrZ   Zorig_dfr+   r+   r,   _check_setitem_invalid  s   


"z,TestSetitemValidation._check_setitem_invalidy      ?       @Truer^   z1.0r  r   r/   TFFNr  r   ru   c                 C   s(   t dg didd}| |||t d S )Nr   r  r   r0   r   r  r  )r%   r  ru   r@   r+   r+   r,   #test_setitem_validation_scalar_bool  s   z9TestSetitemValidation.test_setitem_validation_scalar_boolTr   c                 C   sN   t dg di|d}t|r|tjurt|sd }nt}| |||| d S )Nr   r2   r0   )r   r   r  r  rE   Zisnatr  r  )r%   r  Zany_int_numpy_dtyperu   r@   r  r+   r+   r,   "test_setitem_validation_scalar_int  s
   z8TestSetitemValidation.test_setitem_validation_scalar_intc                 C   s(   t dg di|d}| |||t d S )Nr   )r/   r3   Nr0   r  )r%   r  Zfloat_numpy_dtyperu   r@   r+   r+   r,   $test_setitem_validation_scalar_float  s   z:TestSetitemValidation.test_setitem_validation_scalar_float)r  r  r  r  r  r  rE   r  rM  Z_invalid_scalarsr  Z	_indexersr"   r  r  ry   r{   r  r  r  r+   r+   r+   r,   r    s,    "	r  )r  N)9collectionsr   r   r   decimalr   rH   numpyrE   r"   Zpandas._configr   Zpandas._libsr   Zpandas.errorsr	   r
   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandas.core.dtypes.commonr   Zpandasr  r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr    r  r   r  r  r  r  r  r  r  r  r  ro   r  rh   r  r  r  r+   r+   r+   r,   <module>   sZ    4            $+ C
>