U
    f/e                     @   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	  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'dS )    )datetime	timedeltaN)iNaT)
is_integer)
Categorical	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestamp
date_rangeisnanotnazBslice 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
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 ZAdxS )y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-tiezk1ph/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_getitem25   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_listC   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dtyper6      )r?   name012rA   )
r   r9   r'   int_locr   r   r>   r   r7   r   r-   resultexpectedr#   r#   r$   test_setitem_list2W   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   r8   assert_frame_equalr   Z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bifwrQ   r#   rR   r$   test_getitem_booleanf   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 )Nr6   r2   Zint32ZE1Fint64ZF1r   float64   r@   r3   r4   CDr   r=   )
r&   rV   dtypesr   r'   r?   r   r7   rG   r   )r   r[   r-   ZcastedrI   rJ   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=   rb   c                    s(    |  } j  j|   }t|| d S )N)rG   r   r   rX   )lstrI   rJ   r-   r#   r$   _checkit   s    zATestDataFrameIndexing.test_getitem_boolean_list.<locals>._checkitTF)r   r'   arangeZreshape)r   rk   r#   rj   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   r3   r4   rc   rd   r2   rU   r   r6   )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   r6   r3   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 )
Nrb   r=   r6   rL   rc   r2   r@   rT   rM   )
r   r'   r   r(   ilocrG   r   r   rX   r	   rH   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	@      @      $   (   rL      +   "   r   r      )rnar     r   r   r   rU   r=   r6   )r   rx   r   rX   rH   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 )Nr3   z6'DataFrame' object has no attribute 'NONEXISTENT_NAME'r   )r   r7   r3   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foobarr6   rL   re   rn   )r   r9   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 )Nr3   r@   Zcol5   r   r   rA   Zcol6Fr5   Zcol9rn   Zcol7gQ	@Zcol0r1   Zcol8C\nA value is trying to be set on a copy of a slice from a DataFramer   rC   rD   Zcol10)r   r   r'   ZravelZcolumn_stackr,   rO   r   r   r   r7   r   r(   r   r   r   comSettingWithCopyErrorr?   object_)r   r   r!   exprp   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'   rO   rx   r   rX   rG   )r   r-   rJ   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 )Nrb   r3   r   rM   r6   rn   r@   r=   z;Must pass DataFrame or 2-d ndarray with boolean values onlyr   )r&   r,   r   ro   rZ   r   r'   Zputmaskr   r   	TypeErrorabsrO   rX   )r   r   r-   r,   r!   r;   maskrJ   r#   r#   r$   test_setitem_booleanE  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 )
Nrd   i8r   r4   barr1         @Z	somethingr@   )rV   r?   r'   r`   r   rl   r   
issubclasstypeintegerra   r   r   r#   r#   r$   test_setitem_castw  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brQ   )r4   rc   r=   re   r4   r@   Z	beginningr3   r1   r2   r   rd   date      @r6   rc   r   rC   rD   3Z	coercible)r   r'   rl   r   r   r>   r   nowr   r,   r?   r   r`   ra   )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   )r6   r   )r6   r   )r'   r   r   r   rG   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=   rT   c                    s   g | ]} d qS )r6   r#   )rP   r    r   r#   r$   
<listcomp>  s     z<TestDataFrameIndexing.test_setitem_ambig.<locals>.<listcomp>re   r1   bzrbazr6   r@   )decimalr   r   r9   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 )Nr3   rM   Fr5   )r   r7   rx   rG   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 )NrC   rD   r   Z11Z22Z33Z111Z222Z333)r   r   rQ   r   )r   r&   r   rG   r   r   r   rX   r   r-   rI   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 )NrL   rn      r@   )
r   r'   r   r(   rx   rO   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 )NrL   rn   r   r   r@   re   rb   r=   r|      r   rM   z^3$r   )r   r'   r   r(   r9   r&   rx   r,   r   r   rG   rZ   r   rX   listr   r   r   )r   r-   cprI   result2rJ   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 }d}tjtj|d d|d< W 5 Q R X |d dk	 s|td S )Nrd   r   r         @rc   rb   )
rx   r?   r'   ra   r   r   r   r   r   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 )Nrn   rL   r|   r   )r   ZmakeTimeDataFramer   rG   rX   r&   )r   r-   startendrI   r   rJ   r#   r#   r$   "test_getitem_setitem_non_ix_labels)  s    z8TestDataFrameIndexing.test_getitem_setitem_non_ix_labelsc                 C   sF   t tjdd}|j|jdkd d f }|dg}t|| d S )Nr=   r@   r   )	r   r'   r   r(   rG   r   rZ   r   rX   )r   r-   rsZxpr#   r#   r$   test_ix_multi_take=  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 Nrn   )rG   r>   r   r   )r   r   fr   coltsidxr#   r#   r$   test_getitem_fancy_scalarK  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&   rG   	enumerater>   r   Zget_locr'   r   r(   r,   r   rX   )r   r   r   rJ   r   jr   r   r   ivalr#   r#   r$   test_setitem_fancy_scalarU  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 )Nr4   rd   rU   FTrn   rL   rT      re   r@   rc   )rG   rZ   r   rX   r   r>   )r   r   r   r   rJ   rI   Zboolvecr#   r#   r$   test_getitem_fancy_booleanf  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 )Nr3   r           r4   r@   )r&   rG   r,   r   rX   )r   r   framerJ   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 )Nr6   rb   r   r@   r   )rx   rG   r   r   rX   r>   )r   r   rI   rJ   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 )Nr3   rM   r6   r   )rG   r   rX   r&   )r   r   r   rI   rJ   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=   r@   TFr   r6   rn   )	r   r'   r   r(   rt   rG   r   rX   r&   )r   r-   Zk1Zk2rI   rJ   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 )Nrz   r@   r=   rb   rn   re   F)Zcheck_index_typer   r   r6   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(   rG   rZ   r   rX   r   r   rx   r   r   r   r   r&   
_slice_msgr,   )r   r   r-   rI   rJ   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 )Nrn   r=   r   r   rQ   r\   er1   r   r   rT   Z20010102	timestampra   datetime64[ns]re   )r   r   )rQ   r   )r   r'   r   r(   r   rf   r   r?   r   r7   r   rG   r   r   r   rO   r   rH   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  r6   xyi  i  )r   r   abr   rr   r   r   r   )r6   r   )r   r   r@   r=   z2013-01-01T00:00:00z2014-01-01T00:00:00rb   rn   r   )r   r   r   r9   pdNaTrG   r'   rt   
datetime64r   rX   )r   rJ   r-   r3   r#   r#   r$   test_setitem_mixed_datetime0  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 Nr@   r3   r4   )rG   r   r,   r   ro   r   r   piecerI   rJ   r#   r#   r$   test_setitem_frame_floatM  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   r@   r3   r4   rT   )r&   r   r   slicerG   r   ro   r,   r   r   r   r   r"   r#   r#   r$   test_setitem_frame_mixedT  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   r@   r1   r   r3   r4   rT   )	r&   r   r   r   r   rG   r   ro   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 )Nr@   r3   r   r4   )	r&   rG   r   r   r'   rO   r   ro   r,   r   r#   r#   r$   &test_setitem_frame_mixed_key_unalignedn  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&   rG   r   r   r,   r   ro   r   r#   r#   r$    test_setitem_frame_mixed_ndarrayx  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 )Nr6   r@   r1   r=   rb   r   r3   r4   rc   rU         ?)r   r&   rG   rZ   r   rX   )r   r-   r   rJ   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   )rG   r   r>   r,   r   ro   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 )	Nrn   r=   r1   r   r   re   r@   rb   )	r   r'   r   r(   rG   r   rX   rx   r7   rH   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 )Nrn   r=   r1   r   r   re   r@   rb   r6   r   )r   r'   r   r(   rG   rx   r   rX   )r   r-   rI   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   r6   r@   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   rG   )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 )Nr6   r2   rn   r   gGz?i  r   r   r   rE   )r   r?   r   intr'   r   r   rG   r   r   r   r   r   r7   )r   r   rI   r-   rJ   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 )NrL   rb   r   r   r@   re   r6   r   r   r   )r   r'   r   r(   r9   rx   rG   r   r7   r   rX   rZ   r   r   r-   rI   r   rJ   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 }d}tj	t
j|d	 d
|d< W 5 Q R X |d  }|szd
|dd< t|d | d S )NrL   rb   r   r   r@   re   r   r   r   r   )r   r'   r   r(   r9   r&   rx   r   r   r   r   r   r   r7   )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 )Nrb   rL   r   r   r@   rU   r6   r   r   r   )r   r'   r   r(   r9   rx   rG   r   r7   r   rX   rZ   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 }|sd}tj	t
j|d	 d
|d< W 5 Q R X |d dk stn(d
|d< |d dk stt|| d S )Nrb   rL   r   r   r@   rU   r   r   r   r   )r   r'   r   r(   r9   r&   rx   r   r   r   r   r   r   r   r   rX   )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  r6   )yearmonthdayrn   )r   r   )rG   itemr   r3   r4   rT   FTr   )r3   r4   re   )	r   r   insertr   r'   rt   rG   r   rX   )r   Ztranger-   Zbool_idxrJ   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datesrE   r6   r   r@   )r   r   r   r   r7   rG   )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 )Nr6   )hoursZ20130101rb   r  re   m8[ns])r?   r3   r@   r4   r=   rc   rd   rn   r2   r   r_   r   rM   r   GHztimedelta64[ns]r   ZABCDEFGH)r   r   r   r'   rt   rG   r   Ztimedelta64r   rf   r   r?   r   r   r7   )r   Zone_hourr-   rI   rJ   r#   r#   r$   ,test_loc_setitem_datetimelike_with_inferenceL  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   r6   )r   r6   r@   r=   rb   r   g333333?)r   r6   )r"  r6   )r#  r6   )r!  rb   testr1   z1not supported between instances|unorderable typesr   )
r   r'   rO   r&   rG   r   rX   r   r   r   )r   r-   r   rJ   r;   r#   r#   r$   #test_getitem_boolean_indexing_mixedb  sH    



z9TestDataFrameIndexing.test_getitem_boolean_indexing_mixedc              	   C   s2  t ddddgddddgdddd	gddddgdddd	ggd
}|jddddg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   rQ   r   r   r   r6   r@   r=   rb   )r>   r:   )r   r>   r,   zunhashable typer   rE   )levelscodesnamesrr   )r   r   r   )r   Zpivot_tabler   r   r   r	   r9   r
   rG   r   r   rX   r   r7   )r   r-   Zdgr   r>   rJ   rI   rA   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=   rb   rn   rU   r   r   )r   r'   r   r   ZIntervalIndexZfrom_breaksrl   rx   r   r7   rG   )r   r-   rJ   r/   r#   r#   r$   ,test_getitem_interval_index_partial_indexing  s     zBTestDataFrameIndexing.test_getitem_interval_index_partial_indexingN)B__name__
__module____qualname__r%   r0   r<   rK   r^   rg   rm   rq   rw   ry   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%  r)  r*  r#   r#   r#   r$   r   #   s|   <#

*2*




	W%

	
.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 )Nr3   r1   rc   rE   rd   )r6   r6   )r6   r@   r4   TFZuint64Ore   )renamer>   r   r   r7   r   r&   r   r   rx   r   rf   r'   r?   )r   Zuint64_framer-   r   r   rI   r#   r#   r$   r     s,    z(TestDataFrameIndexingUInt64.test_setitemN)r+  r,  r-  r   r#   r#   r#   r$   r1    s   r1  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 )Nr6   r@   2000r  z1 Day)r3   r4   rc   r   )ZaxiszM8[ns])r   r   r  )r   r   r   Ztimedelta_rangerG   
isinstancer,   r   r   Z	Timedeltarx   xsZ_mgrZ_rebuild_blknos_and_blklocsZfast_xsblocksZblknosr?   iget)r	  r-   ZserZmgrrp   Zblkr   r#   r#   r$   /test_object_casting_indexing_wraps_datetimelike  s<    





r9  zMCannot setitem on a Categorical with a new category, set the categories firstzCCannot 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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   rv   lmnr6   catsr,   re   r   r	   r   )r   rC  r   r,   origr#   r#   r$   rE    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   r<  r>  r   r   rv   r?  r@  rA  r6   r@   rB  re   rD  )r   Zcats1Zidx1Zvalues1exp_single_rowr#   r#   r$   rG    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 rF  rD  )r   Zcats2Zidx2Zvalues2exp_multi_rowr#   r#   r$   rH    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 r;  rD  )r   Zcats3Zidx3Zvalues3exp_parts_cats_colr#   r#   r$   rI  &  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 r;  rD  )r   Zcats4Zidx4Zvalues4exp_single_cats_valuer#   r#   r$   rJ  /  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 )Nr@   rb   r   rv   r   r   rQ   )	r&   r   r   rG   rX   r   r   r8   msg1)r   rE  rH  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)r@   r   r@   r   r   r   rQ   )r&   r   rG   atr   r>   rX   r   r   r8   rK  )r   rE  rJ  r]   r-   r"   r#   r#   r$   7test_loc_iloc_at_iat_setitem_single_value_in_categoriesJ  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   rG   r>   rX   )r   rE  rJ  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 )Nr@   r   r   rQ   )	r&   r   rG   r   rX   r   r   r8   rK  )r   rE  rG  r]   r-   r"   r#   r#   r$   2test_loc_iloc_setitem_full_row_non_categorical_rhsl  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 )Nr@   rb   r   r   rv   r   r   r<  Zbbabcr   cc)r&   r   r   rG   r>   r   rX   r   r   r   r8   msg2)	r   rE  rI  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 )	Nr@   rb   r   r   rv   r   r   rQ   )
r&   r   r   rG   r>   rX   r   r   r8   rK  )r   rE  rI  r]   r-   r"   r#   r#   r$   )test_loc_iloc_setitem_non_categorical_rhs  s    
zITestLocILocDataFrameCategorical.test_loc_iloc_setitem_non_categorical_rhsN)r+  r,  r-  r   ZfixturerE  rG  rH  rI  rJ  r/  r0  r   rG   rx   rL  rM  ZiatrN  rO  rP  rU  rV  r#   r#   r#   r$   r:  
  s,   


	







r:  )(r   r   r)   Znumpyr'   r   Zpandas._libsr   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   Zpandas._testingZ_testingr   Zpandas.core.commoncorecommonr   r   r   r1  r9  rK  rS  r:  r#   r#   r#   r$   <module>   s4   0          !+