U
    Mf                     @   s  d dl m Z 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  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 d dlmZ d dlm   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S )    )datetime	timedeltaN)iNaT)InvalidIndexError)
is_integer)
Categorical	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestamp
date_rangeisnanotnazBslice indices must be integers or None or have an __index__ methodc                   @   sT  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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-d. Zd/d0 Zejd1d2 Zd3d4 Zd5d6 Zd7d8 Z ejd9d: Z!d;d< Z"ejd=d> Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(dIdJ Z)dKdL Z*dMdN Z+dOdP Z,dQdR Z-dSdT Z.dUdV Z/dWdX Z0dYdZ Z1d[d\ Z2e3j45d]d^d_gd`da Z6dbdc Z7ddde Z8dfdg Z9dhdi Z:djdk Z;dldm Z<dndo Z=dpdq Z>drds Z?dtdu Z@dvdw ZAdxdy ZBejCdzd{ ZDe3j45d|eEjFeEjFGd}eEjFGd~gdd ZHdd ZIdd ZJdS )TestDataFrameIndexingc              	   C   s   |d d }t |jdkst| D ].\}}t |jdks@tt|j|js&tq&|j D ]\}}|| d k	s`tq`d|ksttjt	dd |d  W 5 Q R X d S )N   randommatch)
lenindexAssertionErroritemstmZequalContentsZ_seriespytestraisesKeyError)selffloat_framesl_serieskey r$   M/tmp/pip-unpacked-wheel-eb6vo0j3/pandas/tests/frame/indexing/test_indexing.pytest_getitem%   s    z"TestDataFrameIndexing.test_getitemc              	   C   sx   |  }tjt||d< tjt|}||d< tjtt	dd |
d W 5 Q R X |d }t||j d S )Nz$10z@awesome_domainz'df["$10"]'r   z	df["$10"])copynpr   randnr   r   r   r   reescape__getitem__r   Zassert_numpy_array_equalvalues)r   r   dfadresr$   r$   r%   test_getitem26   s    z#TestDataFrameIndexing.test_getitem2c              	   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 5 Q R X tt|jd	 }d
t| dt| d}tjt|d ||d< W 5 Q R X d S )NfooEABFZcheck_namesz"Columns must be same length as keyr      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_listD   s    z'TestDataFrameIndexing.test_setitem_listc                 C   s   t dtdddgtjd}ddg|jdddgf< |j|jd ddgf }tddg|jtj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      Ztt1Ztt2)r   columnsdtyper7      )r@   name012rB   )
r   r:   r(   int_locr   r   r?   r   r8   r   r.   resultexpectedr$   r$   r%   test_setitem_list2X   s    z(TestDataFrameIndexing.test_setitem_list2c              	      s  |j d }|j |k}|t}|j | }|| }t||j  tjtdd ||d d   W 5 Q R X || }	t|	| tjtdd ||  W 5 Q R X t	||j }|| }	t|	| t
t0 ||j d d d }|| }	t|	| W 5 Q R X |||fD ]}
|
  |
|
dk }t fdd jD  j  jd	}|
jD ]}||krH|
| ||< qH|j|
jd
}tj||dd |
jD ]6}|| j|| jkr|| j|
| jkstqqd S )N
   zItem wrong lengthr   zBoolean array expectedr   c                    s*   i | ]"}|t  | d k | t jqS )r   )r(   wherenan).0cr;   r$   r%   
<dictcomp>   s      z>TestDataFrameIndexing.test_getitem_boolean.<locals>.<dictcomp>r   r?   r?   F)Zcheck_dtype)r   astypeobjectr   Zassert_index_equalr   r   r9   assert_frame_equalr   assert_produces_warningUserWarningreindexZ_get_numeric_datar   r?   r@   r   )r   Zmixed_float_frameZmixed_int_framedatetime_framedindexerZindexer_objZsubindexZsubframeZsubframe_objr.   ZbifZbifwrR   r$   rS   r%   test_getitem_booleang   sL    






z*TestDataFrameIndexing.test_getitem_booleanc              
   C   sX  |  }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  ddddddddg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 ddddddddgd}t|| d S )Nr7   r3   Zint32ZE1Fint64ZF1r   float64   rA   r4   r5   CDr   r>   )
r'   rW   dtypesr   r(   r@   r   r8   rH   r   )r   r]   r.   ZcastedrJ   rK   r$   r$   r%   test_getitem_boolean_casting   sD    



z2TestDataFrameIndexing.test_getitem_boolean_castingc                    sP   t tddd  fdd}|dddg |dddg |dddg d S )N   r>   rd   c                    s(    |  } j  j|   }t|| d S )N)rH   r   r   rY   )lstrJ   rK   r.   r$   r%   _checkit   s    zATestDataFrameIndexing.test_getitem_boolean_list.<locals>._checkitTF)r   r(   arangeZreshape)r   rm   r$   rl   r%   test_getitem_boolean_list   s
    z/TestDataFrameIndexing.test_getitem_boolean_listc                 C   sb   t jdd}t| dddddgd}||dk   d	7  < ||dk   d	7  < t|j| d S )
N   r4   r5   re   rf   r3   rV   r   r7   )r(   r   r)   r   r'   r   assert_almost_equalr-   )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   r7   r4   r?   r   )r   r(   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ddddgdddgd}|jd d	 }|j|jd d	  }t|| |jddg }|jt	ddg }t|| d S )
Nrd   r>   r7   rM   re   r3   rA   rU   rN   )
r   r(   r   r)   ilocrH   r   r   rY   r
   rI   r$   r$   r%   test_getitem_ix_mixed_integer   s     
 z3TestDataFrameIndexing.test_getitem_ix_mixed_integerc                 C   s   t dddddgdddd	gd
dddgdddd
dgd}|dg }|jd d dgf }t|| |dg }|jd d dgf }t|| d S )N)      ?g@g	@      @      $   (   rM      +   "   r   r      )rnar     r   r   r   rV   r>   r7   )r   rz   r   rY   rI   r$   r$   r%   test_getitem_ix_mixed_integer2   s    



	

z4TestDataFrameIndexing.test_getitem_ix_mixed_integer2c              	   C   s:   t |j|d  d}tjt|d |j W 5 Q R X d S )Nr4   z6'DataFrame' object has no attribute 'NONEXISTENT_NAME'r   )r   r8   r4   r   r   AttributeErrorZNONEXISTENT_NAME)r   r   r<   r$   r$   r%   test_getattr  s    z"TestDataFrameIndexing.test_getattrc                 C   s0   t dditdd}d|_|jdk s,td S )Nfoobarr7   rM   rg   rp   )r   r:   r   allr   )r   r.   r$   r$   r%   test_setattr_column  s    z)TestDataFrameIndexing.test_setattr_columnc              	   C   s  |d d d d }||d< d|ks&t t|dks6t t|dksFt tt|jtjgd f}t||jdd}t	
|d | |d }||d< t	j
||d dd	 tjt|}||d
< |d
 |k st d|d< |d dk st d|d< |d dk st d|d< |d dk s,t |d d }d}tjtj|d ddg|d< W 5 Q R X |d jtjkszt |d ddgk st d S )Nr4   rA   Zcol5   r   r   rB   Zcol6Fr6   Zcol9rp   Zcol7gQ	@Zcol0r2   Zcol8C\nA value is trying to be set on a copy of a slice from a DataFramer   rD   rE   Zcol10)r   r   r(   ZravelZcolumn_stackr-   rP   r   r   r   r8   r   r)   r   r   r   comSettingWithCopyErrorr@   object_)r   r   r"   exprr   Zsmallerr<   r$   r$   r%   test_setitem  s4    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   r(   rP   rz   r   rY   rH   r   r.   rK   r$   r$   r%   test_setitem2;  s    z#TestDataFrameIndexing.test_setitem2c              	   C   s  |  }|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 5 Q R X |t|k}|  }tj||t|k< tj|j|j< t|| |  }|d ||t|k< t|j|j|jd  t|| d S )Nrd   r4   r   rN   r7   rp   rA   r>   z;Must pass DataFrame or 2-d ndarray with boolean values onlyr   )r'   r-   r   rq   r\   r   r(   Zputmaskr   r   	TypeErrorabsrP   rY   )r   r   r.   r-   r"   r<   maskrK   r$   r$   r%   test_setitem_booleanF  sD    "z*TestDataFrameIndexing.test_setitem_booleanc                 C   s  |d  d|d< |d jtjks&td|d< |d jtjksBttt||d< t|d jjtj	sltd|d< d|d< |d jtjkstd|d< d|d< |d jtj
kstd|d< |d jtjkstd	|d< |d jtjkstd|d< |d jtj
ks
td S )
Nrf   i8r   r5   barr2         @Z	somethingrA   )rW   r@   r(   rb   r   rn   r   
issubclasstypeintegerrc   r   r   r$   r$   r%   test_setitem_castx  s$    z'TestDataFrameIndexing.test_setitem_castc                 C   s  t dddgdddgdtdd	}|d
= dddg|d
< d
|ksDtt|jdksVtd|d< d|d< d|d< d|t < d|t < t |jd	}d|d< d|d
< t|jdkst|j	j
tjkstd|d< |d j
tjkstd|d< |d j
tjkstd|d< d|d d kstt tdd	}d|d< d|d< |d= d|d< |d j
tjks`tdddg|d< |d j
tjkstd S )N      ?       @      @abrR   )r5   re   r>   rg   r5   rA   Z	beginningr4   r2   r3   r   rf   date      @r7   re   r   rD   rE   3Z	coercible)r   r(   rn   r   r   r?   r   nowr   r-   r@   r   rb   rc   )r   r   r.   dmr$   r$   r%   test_setitem_corner  s:    $z)TestDataFrameIndexing.test_setitem_cornerc                 C   s   dddgdgd  t jdd}t|}||d dk j}d|j|dgf< d|j|dgf< |jd	 dksnt|jd
 dkstd S )Nr   r      r   )titlecruftr   r   r   )r7   r   )r7   r   )r(   r   r   r   rH   r   )r   r;   r.   ixr$   r$   r%   test_setitem_corner2  s    
z*TestDataFrameIndexing.test_setitem_corner2c                    s   ddl m  ttdtdd}t fddtdD tdd}tdd	d
gtdd}td|d< t|jdksxt	||d< t|jdkst	||d< t|jdkst	|d j
tjkst	d S )Nr   Decimalr>   rU   c                    s   g | ]} d qS )r7   r$   )rQ   r!   r   r$   r%   
<listcomp>  s     z<TestDataFrameIndexing.test_setitem_ambig.<locals>.<listcomp>rg   r2   bzrbazr7   rA   )decimalr   r   r:   r   r(   onesr   r?   r   r@   r   )r   r   Zcoercable_seriesZuncoercable_seriesr$   r   r%   test_setitem_ambig  s    "z(TestDataFrameIndexing.test_setitem_ambigc                 C   st   |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 t| d S )Nr4   rN   Fr6   )r   r8   rz   rH   reprr   r$   r$   r%   test_setitem_None  s        z'TestDataFrameIndexing.test_setitem_Nonec                 C   sP   t dddgdddgddd	gd
}| }|j|j|j df< t|| d S )NrD   rE   r   Z11Z22Z33Z111Z222Z333)r   r   rR   r   )r   r'   r   rH   r   r   r   rY   r   r.   rJ   r$   r$   r%   &test_loc_setitem_boolean_mask_allfalse  s    z<TestDataFrameIndexing.test_loc_setitem_boolean_mask_allfalsec                 C   sV   t tjdd}|jd dd }tj|jd dd< t|jd dd j sRt	d S )NrM   rp      rA   )
r   r(   r   r)   rz   rP   r   r-   r   r   r   r$   r$   r%   &test_getitem_fancy_slice_integers_step  s    z<TestDataFrameIndexing.test_getitem_fancy_slice_integers_stepc              	   C   sF  t tjddtdddd}| }d|jdd< |jdd dkj sPt	| }d|jdd	< |jdd	 dkj st	|jdd
 }|j
dd	 }|dd
ddg}t|| t|| |jttdttddd d d   }tjtdd |j
dd	  W 5 Q R X tjtdd d|j
dd	< W 5 Q R X d S )NrM   rp   r   r   rA   rg   rd   r>   r~      r   rN   z^3$r   )r   r(   r   r)   r:   r'   rz   r-   r   r   rH   r\   r   rY   listr   r   r   )r   r.   cprJ   result2rK   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*t|j d d dd f }t|d j|d js\td}tjt	j
|d d|jd d df< W 5 Q R X |d dk std S )Nrf   re   r   r         @rd   )rz   r@   r(   rc   r   shares_memory_valuesr   r   r   r   rH   r   )r   r   float_string_frameZslicedr<   r$   r$   r%   test_fancy_getitem_slice_mixed  s    z4TestDataFrameIndexing.test_fancy_getitem_slice_mixedc                 C   s   t  }|jddg \}}|j|| }||| }|dd }t || t || | }d|j||< | }d|||< | }d|dd< t || t || d S )Nrp   rM   r~   r   )r   ZmakeTimeDataFramer   rH   rY   r'   )r   r.   startendrJ   r   rK   r$   r$   r%   "test_getitem_setitem_non_ix_labels-  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 )Nr>   rA   r   r7   rU   )
r   r(   r   r)   rH   r   r\   r   rY   r?   )r   r.   rsZxpr$   r$   r%   test_ix_multi_takeA  s    z(TestDataFrameIndexing.test_ix_multi_takec                 C   sP   |}|j }|jD ]:}|| }|jd d d D ]}|||f || ks,tq,qd S Nrp   )rH   r?   r   r   )r   r   fr   coltsidxr$   r$   r%   test_getitem_fancy_scalarM  s    
z/TestDataFrameIndexing.test_getitem_fancy_scalarc                 C   s   |}|  }|j}t|jD ]b\}}|| }|jd d d D ]@}|j|}	tj }
|
|j	|	|f< |
|||f< t
|| q<qd S r   )r'   rH   	enumerater?   r   Zget_locr(   r   r)   r-   r   rY   )r   r   r   rK   r   jr   r   r   ivalr$   r$   r%   test_setitem_fancy_scalarW  s    
z/TestDataFrameIndexing.test_setitem_fancy_scalarc                 C   s  |}|j }|jddgd}|d d ddddgf }t|| |j|jdd ddgd}||jdd ddddg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 )Nr5   rf   rV   FTrp   rM   rU      rg   rA   re   )rH   r\   r   rY   r   r?   )r   r   r   r   rK   rJ   Zboolvecr$   r$   r%   test_getitem_fancy_booleanh  s"    z0TestDataFrameIndexing.test_getitem_fancy_booleanc                 C   s   |  }|  }|d dk}d|j|< d|j|j< t|| |  }|  }d|j|ddgf< d|j|jd df< t|| d S )Nr4   r           r5   rA   )r'   rH   r-   r   rY   )r   r   framerK   r   r$   r$   r%   test_setitem_fancy_boolean  s    
z0TestDataFrameIndexing.test_setitem_fancy_booleanc                 C   sx   |j dddg }|j|jdddg  }t|| |j d d dddgf }|jd d |jdddg f }t|| d S )Nr7   rd   r   rA   r   )rz   rH   r   r   rY   r?   )r   r   rJ   rK   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 )Nr4   rN   r7   r   )rH   r   rY   r'   )r   r   r   rJ   rK   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dddg}tddg}|j||f }|jddgdgf }t|| | }d|jtdddgtddgf< d|jddgdgf< t|| d S )Nr>   rA   TFr   r7   rp   )	r   r(   r   r)   rv   rH   r   rY   r'   )r   r.   Zk1Zk2rJ   rK   r$   r$   r%   "test_getitem_setitem_boolean_multi  s    $z8TestDataFrameIndexing.test_getitem_setitem_boolean_multic              	   C   s  t dddddg}ttjdd|d}|jdd }|ddddg}t|| t	|dksdt
|jdd }|ddg}tj||dd t	|dkst
|jdd }|d	d
g}t|| t	|dkst
|jdd }|jdd }t|| d|jdd< |dd }|dk  s0t
t ddddd
g}ttjdd|d}d}tjt|d |jdd  W 5 Q R X |jdd }|d
g}t|| t	|dkst
| }tjttd d|jdd< W 5 Q R X tjt|d |jdd dk}W 5 Q R X |j s(t
|jdd |jdd kj sPt
| }d|jdd< |jdd dkj st
|jdd |jdd kj st
|jdd }|}t|| t	|dkst
|jdd }|dddd
g}t|| t	|dkst
|jdd }|d
g}t|| t	|dksRt
|jdd
 }|ddddd
g}t|| t	|dkst
| }d|jdd
< |jdd
 }|dkj st
d S )Nr|   rA   r>   rd   rp   rg   F)Zcheck_index_typer   r   r7   r   r   r   g      @r}   zWcannot do positional indexing on Float64Index with these indexers \[1.0\] of type floatr   g?g
ףp=
@)r
   r   r(   r   r)   rH   r\   r   rY   r   r   rz   r   r   r   r   r'   
_slice_msgr-   )r   r   r.   rJ   rK   r<   r   r$   r$   r%   !test_getitem_setitem_float_labels  sz    ((z7TestDataFrameIndexing.test_getitem_setitem_float_labelsc                 C   s
  t tjdddddddgdd	d
gd}td|d< |j}ttdgd tdg dd	d
dgd}t	|| t
|jd< t|jd rt|d jtjkst|jd t
ksttj|jd< t|jd sttj|jdd d f< t|jdd d f  rtd S )Nrp   r>   r   r   rR   r^   er2   r   r   rU   Z20010102	timestamprc   datetime64[ns]rg   )r   r   )rR   r   )r   r(   r   r)   r   rh   r   r@   r   r8   r   rH   r   r   r   rP   r   rI   r$   r$   r%   )test_setitem_single_column_mixed_datetime  s(    

z?TestDataFrameIndexing.test_setitem_single_column_mixed_datetimec                 C   s   t ddddddg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< d|jd< 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 )Nr         i  r7   xyi  i  r   r   abr   rt   r   r   r   )r7   r   )r   r   rA   r>   z2013-01-01T00:00:00z2014-01-01T00:00:00rd   rp   r   )r   r   r   r:   pdNaTrH   r(   rv   
datetime64r   rY   )r   rK   r.   r4   r$   r$   r%   test_setitem_mixed_datetime,  s.    




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 NrA   r4   r5   )rH   r   r-   r   rq   r   r   piecerJ   rK   r$   r$   r%   test_setitem_frame_floatI  s
    z.TestDataFrameIndexing.test_setitem_frame_floatc                 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   rA   r4   r5   rU   )r'   r   r   slicerH   r   rq   r-   r   r   r   r   r#   r$   r$   r%   test_setitem_frame_mixedP  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   rA   r2   r   r4   r5   rU   )	r'   r   r   r   r   rH   r   rq   r-   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 )NrA   r4   r   r5   )	r'   rH   r   r   r(   rP   r   rq   r-   r   r$   r$   r%   &test_setitem_frame_mixed_key_unalignedj  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   )r'   rH   r   r   r-   r   rq   r   r$   r$   r%    test_setitem_frame_mixed_ndarrayt  s
    z6TestDataFrameIndexing.test_setitem_frame_mixed_ndarrayc                 C   s   t dddgdddggddd	gd
}| }|jd d ddgf d |jd d ddgf< |jddgd
}|d7 }|d	 |d	< t|| d S )Nr7   rA   r2   r>   rd   r   r4   r5   re   rV         ?)r   r'   rH   r\   r   rY   )r   r.   r   rK   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   )rH   r   r?   r-   r   rq   r   r$   r$   r%   test_setitem_frame_align  s    
z.TestDataFrameIndexing.test_setitem_frame_alignc                 C   s   t tjdddddddgd}|jd }|d d }t|| |jd }|jddg }t|| |jd }|jd }t|| d S )	Nrp   r>   r2   r   r   rg   rA   rd   )	r   r(   r   r)   rH   r   rY   rz   r8   rI   r$   r$   r%   "test_getitem_setitem_ix_duplicates  s     



z8TestDataFrameIndexing.test_getitem_setitem_ix_duplicatesc                 C   s   t tjdddddddg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 )Nrp   r>   r2   r   r   rg   rA   rd   r7   r   )r   r(   r   r)   rH   rz   r   rY   )r   r.   rJ   r   r$   r$   r%   +test_getitem_ix_boolean_duplicates_multiple  s     zATestDataFrameIndexing.test_getitem_ix_boolean_duplicates_multiple
bool_valueTFc              	   C   sl   t ddddgi}| d}tjt|d |j|  W 5 Q R X d}tjt|d d|j|< W 5 Q R X d S )	Nr   r7   rA   r>   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   rH   )r   r  r.   messager<   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$t|j|jd df }t	|sDtt
ddgi}d|d< |jd }t	|spttdgd	gdd
}|jd	gdf }t|| d S )Nr7   r3   rp   r   gGz?i  r   r   r   rF   )r   r@   r   intr(   r   r   rH   r   r   r   r   r   r8   )r   r   rJ   r.   rK   r$   r$   r%   "test_single_element_ix_dont_upcast  s    
z8TestDataFrameIndexing.test_single_element_ix_dont_upcastc                 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dddd
g }||jdddd
g }t
|| d S )NrM   rd   r   r   rA   rg   r7   r   r   r   )r   r(   r   r)   r:   rz   rH   r   r8   r   rY   r\   r   r   r.   rJ   r   rK   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 sNt	d}t
jtj|d	 d
|jd d df< W 5 Q R X |d  }|sd
|dd< t|d | d S )NrM   rd   r   r   rA   rg   r   r   r   r   )r   r(   r   r)   r:   r'   rz   r   r   r   r   r   r   r   rH   r   r8   )r   using_array_managerr.   originalsubsetr<   Zexp_colr$   r$   r%   test_iloc_row_slice_view  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 dddd
gf }|j|jdddd
g d}t
|| d S )Nrd   rM   r   r   rA   rV   r7   r   r   r   )r   r(   r   r)   r:   rz   rH   r   r8   r   rY   r\   r?   r  r$   r$   r%   test_iloc_col  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 }|st|d j	|d j	s^t
d}tjtj|d	 d
|jd d df< W 5 Q R X |d dk st
n(d
|d< |d dk st
t|| d S )Nrd   rM   r   r   rA   rV   r   r   r   r   )r   r(   r   r)   r:   r'   rz   r   r   r   r   r   r   r   r   rH   r   r   rY   )r   r  r.   r  r  r<   r$   r$   r%   test_iloc_col_slice_view  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ddddddg}d|j|| df< tddddddgddddddgd|d}t|| td|dd	gd
}|j|| df  d7  < t|| d S )Ni  r7   )yearmonthdayrp   )r   r   )rH   itemr   r4   r5   rU   FTr   )r4   r5   rg   )	r   r   insertr   r(   rv   rH   r   rY   )r   Ztranger.   Zbool_idxrK   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}|ddd	g |d< t|d | td|i}|ddd	g |jddd	gdf< t|d | d S )
Nz
2015-01-01r>   utc)periodstzdatesrF   r7   r   rA   )r   r   r   r   r8   rH   )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 )Nr7   )hoursZ20130101rd   r  rg   m8[ns]r@   r4   rA   r5   r>   re   rf   rp   r3   r   ra   r   rN   r   GHztimedelta64[ns]r   ZABCDEFGH)r   r   r   r(   rv   rH   r   Ztimedelta64r   rh   r   r@   r   r   r8   )r   Zone_hourr.   rJ   rK   r$   r$   r%   ,test_loc_setitem_datetimelike_with_inferenceM  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 5 Q R X d S )N)#   r   r   1   2   gjBz?g% t?gk?g?r   r7   )r   r7   rA   r>   rd   r   g333333?)r   r7   )r)  r7   )r*  r7   )r(  rd   testr2   z1not supported between instances|unorderable typesr   )
r   r(   rP   r'   rH   r   rY   r   r   r   )r   r.   r   rK   r<   r$   r$   r%   #test_getitem_boolean_indexing_mixedc  sH    



z9TestDataFrameIndexing.test_getitem_boolean_indexing_mixedc              	   C   s.  t jddgddggd dgd}tddddgddd	d	gg|tddgd
dd}tjtdd |d d df  W 5 Q R X 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   r7   rR   namesrA   r>   rd   r   rF   rt   r   r   )levelscodesr.  )r   r   r   )r   Zfrom_productr   r
   r   r   r   r:   rH   r   r   rY   r   r8   )r   miZdgr   r?   rK   rJ   rB   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r>   rd   rp   rV   r   r  )r   r(   r   r   ZIntervalIndexZfrom_breaksrn   rz   r   r8   rH   )r   r.   rK   r0   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?   r@   )rA   )rA   rA   r   r   )r   rX   r(   zerosrH   r   rY   r   r$   r$   r%    test_setitem_array_as_cell_value  s    z6TestDataFrameIndexing.test_setitem_array_as_cell_valuec                 C   s   t ddddg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 )Nr4   r7   rA   r>   ZInt64r$  rN   )r   r'   r-   rH   r   rY   r   coreZarraysZPandasArrayrz   )r   r.   origr$   r$   r%   $test_iloc_setitem_nullable_2d_values  s    ", z:TestDataFrameIndexing.test_iloc_setitem_nullable_2d_valuesnullM8[ns]r#  c              	   C   s  t ddddgi|d}|d }|j}dddd	d
dg}tjt|d ||d< W 5 Q R X tjt|d ||g|d d< W 5 Q R X tjt|d ||d< W 5 Q R X tjt|d ||g|d d< W 5 Q R X tjt|d ||jd< W 5 Q R X tjt|d ||g|jd d< W 5 Q R X tjt|d ||jd< W 5 Q R X tjt|d ||g|jd ddf< W 5 Q R X | }| |d< tjt|d ||jd< W 5 Q R X tjt|d ||g|jd ddf< W 5 Q R X d S )Nr4   r7   rA   r>   r$  |zYint\(\) argument must be a string, a bytes-like object or a (real )?number, not 'NaTType'zDtimedelta64\[ns\] cannot be converted to an? (Floating|Integer)DtypezCdatetime64\[ns\] cannot be converted to an? (Floating|Integer)Dtypez-object cannot be converted to a FloatingDtypez 'values' contains non-numeric NAr   r   r   r   r5   )r   r   joinr   r   r   rz   r'   )r   r:  Zany_numeric_ea_dtyper.   serrr   r<   r   r$   r$   r%   .test_setting_mismatched_na_into_nullable_fails  sB    
 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   rF   rt   r7   r   rg   )r   r
   rH   r   rY   r   r$   r$   r%   +test_loc_expand_empty_frame_keep_index_name  s    
zATestDataFrameIndexing.test_loc_expand_empty_frame_keep_index_namec                 C   s\   t dgtjg dddgdd}d|jd< t ddgitjdgdddgdd	}t|| d S )
Nr^   r   r   rR   r-  rt   r2   )r7   rA   r>   rg   r   r   from_tuplesrH   r   rY   r   r$   r$   r%   +test_loc_expand_empty_frame_keep_midx_names  s     
zATestDataFrameIndexing.test_loc_expand_empty_frame_keep_midx_namesN)K__name__
__module____qualname__r&   r1   r=   rL   r`   ri   ro   rs   ry   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   r   r   r  r  r  r  r  r  r   markparametrizer
  r  r  r  r  r  r  r   r'  r,  r2  r4  r6  Z&skip_array_manager_not_yet_implementedr9  r   r   Zto_numpyr@  rA  rD  r$   r$   r$   r%   r   $   s   <#

*2*




	W

	
.
 
3r   c                   @   s   e Zd Zdd ZdS )TestDataFrameIndexingUInt64c              	   C   s   |}|d  d}d|jks t||d< t|d t|dd d|jksNtd|d< ||d< t|d t|dd |d= | }tj|j	d< tj|j	d< |d }tt
|td	d
d	gdd t|jttdtdtdgdddgd d S )Nr4   r2   re   rF   rf   )r7   r7   r7   rA   r5   TFZuint64Org   )renamer?   r   r   r8   r   r'   r   r   rz   r   rh   r(   r@   )r   Zuint64_framer.   r   r   rJ   r$   r$   r%   r     s,    z(TestDataFrameIndexingUInt64.test_setitemN)rE  rF  rG  r   r$   r$   r$   r%   rK    s   rK  c                 C   s  t ddgtdddtjdddd}|jd }t|jd tsDtt|jd tj	sZt|j
d }t|jd tsxtt|jd tj	st|jddd}t|jd tstt|jd tj	st| rd S |j}|  |d}t|d tstt|d tj	st|j|jd  }|jd	ks.t|d
}t|tsHt|j|jd  }|jdksht|d
}t|tj	std S )Nr7   rA   2000r"  z1 Day)r4   r5   re   r   )Zaxisr;  r=  r#  )r   r   r   Ztimedelta_rangerH   
isinstancer-   r   r   Z	Timedeltarz   xsZ_mgrZ_rebuild_blknos_and_blklocsZfast_xsblocksZblknosr@   iget)r  r.   r?  Zmgrrr   Zblkr   r$   r$   r%   /test_object_casting_indexing_wraps_datetimelike9  s<    





rT  zFCannot setitem on a Categorical with a new category( \(.*\))?, set thezCCannot set a Categorical with another, without identical categoriesc                   @   s  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dd ZdS )TestLocILocDataFrameCategoricalc                 C   s\   t dddddddgddgd}tdddddd	d
g}dddddddg}t||d|d}|S Nr   r   
categorieshr   r   rx   lmnr7   catsr-   rg   r   r
   r   )r   r^  r   r-   r8  r$   r$   r%   r8  i  s
    z$TestLocILocDataFrameCategorical.origc                 C   s\   t dddddddgddgd}tdddddd	d
g}dddddddg}t||d|d}|S Nr   r   rW  rY  r   r   rx   rZ  r[  r\  r7   rA   r]  rg   r_  )r   Zcats1Zidx1Zvalues1exp_single_rowr$   r$   r%   ra  q  s
    z.TestLocILocDataFrameCategorical.exp_single_rowc                 C   s\   t dddddddgddgd}tdddddd	d
g}dddddddg}t||d|d}|S r`  r_  )r   Zcats2Zidx2Zvalues2exp_multi_rowr$   r$   r%   rb  z  s
    z-TestLocILocDataFrameCategorical.exp_multi_rowc                 C   s\   t dddddddgddgd}tdddddd	d
g}dddddddg}t||d|d}|S rV  r_  )r   Zcats3Zidx3Zvalues3exp_parts_cats_colr$   r$   r%   rc    s
    z2TestLocILocDataFrameCategorical.exp_parts_cats_colc                 C   s\   t dddddddgddgd}tdddddd	d
g}dddddddg}t||d|d}|S rV  r_  )r   Zcats4Zidx4Zvalues4exp_single_cats_valuer$   r$   r%   rd    s     z5TestLocILocDataFrameCategorical.exp_single_cats_valuer_   c              	   C   s   |  }tdd}|tjk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 5 Q R X d S )NrA   rd   r   rx   r   r   rR   )	r'   r   r   rH   rY   r   r   r   msg1)r   r8  rb  r_   r.   r#   r$   r$   r%   #test_loc_iloc_setitem_list_of_lists  s    


 zCTestLocILocDataFrameCategorical.test_loc_iloc_setitem_list_of_listsc              	   C   sr   |  }d}|tjtjfkr0|jd |jd f}d|||< t|| tjt	t
d d|||< W 5 Q R X d S )N)rA   r   rA   r   r   r   rR   )r'   r   rH   atr   r?   rY   r   r   r   re  )r   r8  rd  r_   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kr*|j| }d||||f< t|| d S )Nr   r   r   )r'   r   r   rH   r?   rY   )r   r8  rd  r_   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   sz   |  }d}|tjkr |jd }ddg|||d d f< t|| tjttd ddg|||d d f< W 5 Q R X d S )NrA   r   r   rR   )	r'   r   rH   r   rY   r   r   r   re  )r   r8  ra  r_   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kr4t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 5 Q R X ttdtd
d}tj	t
td ||||< W 5 Q R X d S )NrA   rd   r   r   rx   r   r   rW  Zbbabcr   cc)r'   r   r   rH   r?   r   rY   r   r   r   r   msg2)	r   r8  rc  r_   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kr4tdd|jd f}ddg|||< t|| tjtt	d ddg|||< W 5 Q R X d S )	NrA   rd   r   r   rx   r   r   rR   )
r'   r   r   rH   r?   rY   r   r   r   re  )r   r8  rc  r_   r.   r#   r$   r$   r%   )test_loc_iloc_setitem_non_categorical_rhs  s    
zITestLocILocDataFrameCategorical.test_loc_iloc_setitem_non_categorical_rhsc                 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   r7   )r   )r   firstr-  )r;   r   r   rB  )r   r.   rK   rJ   r$   r$   r%    test_loc_on_multiindex_one_level  s    
 
z@TestLocILocDataFrameCategorical.test_loc_on_multiindex_one_levelN)rE  rF  rG  r   Zfixturer8  ra  rb  rc  rd  rI  rJ  r   rH   rz   rf  rg  Ziatrh  ri  rj  ro  rp  rr  r$   r$   r$   r%   rU  h  s.   


	








rU  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 )TestDepreactedIndexersr#   r7   r   c              	   C   s@   t ddgddggddgd}tt |j|  W 5 Q R X d S Nr7   rA   r>   rd   r   r   rV   r   r   rZ   FutureWarningrH   r   r#   r.   r$   r$   r%   $test_getitem_dict_and_set_deprecated  s    z;TestDepreactedIndexers.test_getitem_dict_and_set_deprecatedrA   rL  c              	   C   sL   t ddgddggddgtddgd	}tt |j|  W 5 Q R X d S 
Nr7   rA   r>   rd   r   r   rL  r3  rt   r   r   rC  r   rZ   rv  rH   rw  r$   r$   r%   /test_getitem_dict_and_set_deprecated_multiindex%  s    zFTestDepreactedIndexers.test_getitem_dict_and_set_deprecated_multiindexc              	   C   s@   t ddgddggddgd}tt d|j|< W 5 Q R X d S rt  ru  rw  r$   r$   r%   $test_setitem_dict_and_set_deprecated:  s    z;TestDepreactedIndexers.test_setitem_dict_and_set_deprecatedc              	   C   sL   t ddgddggddgtddgd	}tt d|j|< W 5 Q R X d S ry  rz  rw  r$   r$   r%   /test_setitem_dict_and_set_deprecated_multiindexC  s    zFTestDepreactedIndexers.test_setitem_dict_and_set_deprecated_multiindexN)
rE  rF  rG  r   rI  rJ  rx  r{  r|  r}  r$   r$   r$   r%   rs    s@    0



 0

rs  )+r   r   r*   Znumpyr(   r   Zpandas._libsr   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsrH  Zpandas.core.dtypes.commonr   Zpandasr   r   r   r	   r
   r   r   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.core.commonr7  commonr   r   r   rK  rT  re  rm  rU  rs  r$   r$   r$   r%   <module>   s:   0         }!+ 4