U
    f/eA+                     @   s   d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ G dd dZG dd dZG dd	 d	ZG d
d dZG dd dZdS )    N)CategoricalCategoricalDtypeCategoricalIndex	DataFrameIndex
MultiIndexSeries	Timestampconcatget_dummiesperiod_range)SparseArrayc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestGetitemc              	   C   s^   t dddgddggddgddggd}td	td
|d}tjtdd |d  W 5 Q R X d S )NZa_lotZonlyoneZ
notevenonei      r   )levelscodes   )indexcolumnsmatch)r   r   rangepytestraisesKeyError)selfmidf r    L/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/frame/indexing/test_getitem.py test_getitem_unused_level_raises   s    z,TestGetitem.test_getitem_unused_level_raisesc                 C   sv   t ddd}ttjdd|d}||d  }t||jd d df  t| |d }t||jd d df  d S )Nz1/1/2000   )Zperiods
   r   r   )	r   r   nprandomrandntmassert_series_equalilocrepr)r   rngr   tsr    r    r!   test_getitem_periodindex#   s    z$TestGetitem.test_getitem_periodindexc                 C   sZ   t tdtdg}tddgddggdddg|d}t|}|t|j }t|| d S )Nz
12-31-1999z
12-31-2000r   r   Zuint8)dtyper   r   )r   r	   r   r   listr   r)   assert_frame_equal)r   ZcatsexpectedZdummiesresultr    r    r!   1test_getitem_list_of_labels_categoricalindex_cols0   s       z=TestGetitem.test_getitem_list_of_labels_categoricalindex_colsc                 C   sx   t ddg}td|i}t|dd}|d }t|| |jd d df }t|| |jd d df }t|| d S )Nr   r   Aname)r   r   r   r)   r*   r+   loc)r   datar   r3   r4   r    r    r!   0test_getitem_sparse_column_return_type_and_dtype;   s    z<TestGetitem.test_getitem_sparse_column_return_type_and_dtypeN)__name__
__module____qualname__r"   r/   r5   r;   r    r    r    r!   r      s   r   c                	   @   s   e Zd Zdd Zdd Zdd Zejjde	e
eedd	 d
d	 gddddddgdejdddgdd Zdd Zdd ZdS )TestGetitemListLikec              	   C   sN   t dgdgdgd}dddg|_tjtdd |dd	dg  W 5 Q R X d S )
Ng      ?g       @      @)xyzrA   rC   z\['y'\] not in indexr   rB   )r   r   r   r   r   )r   r   r    r    r!   test_getitem_list_missing_keyL   s    z1TestGetitemListLike.test_getitem_list_missing_keyc                 C   sd   t tjddtdd}d|j_|ddg }|jjdks>t|jd d dd f }t	
|| d S )N   ZAABCr%   fooBC   )r   r&   r'   r(   r1   r   r8   AssertionErrorr+   r)   r2   )r   r   r4   r3   r    r    r!   test_getitem_list_duplicatesV   s    z0TestGetitemListLike.test_getitem_list_duplicatesc              	   C   sT   t dddgdddggdddgd	}d
}tjtt|d |dg  W 5 Q R X d S )Nr   rI   r   rE   r#      abr%   z?"None of [Index(['baf'], dtype='object')] are in the [columns]"r   Zbaf)r   r   r   r   reescape)r   r   msgr    r    r!   test_getitem_dupe_colsa   s    "z*TestGetitemListLike.test_getitem_dupe_colsidx_typec                 C   s   t t| tt| S N)dictzipr   lenlr    r    r!   <lambda>n       zTestGetitemListLike.<lambda>c                 C   s   t t| tt|  S rT   )rU   rV   r   rW   keysrX   r    r    r!   rZ   o   r[   r1   iterr   setrU   	dict_keys)idsr   r   rI   c              	   C   s   |dkr|d }}n(t tjddtdddgdd	d
}d}|jd |jd g}||}t||}|| }	|jd d |f }
|jj|
j_t	
|	|
 |||g }tjtdd ||  W 5 Q R X d S )Nr   food   r   )rF   bar)ZbazZqux)peekZaboo)ZsthZsth2r7   r%   )Zgoodra   r   znot in indexr   )r   r&   r'   r(   r   r   r1   r9   namesr)   r2   r   r   r   )r   rS   r   float_frameframemissingr\   idxZ	idx_checkr4   r3   r    r    r!   test_getitem_listlikeg   s(    z)TestGetitemListLike.test_getitem_listlikec                 C   s`   t dddgdddgd}dd	 d
D }|j| }t ddgddgdddgd}t|| d S )Nr   rI   r   rE   r#   rL   rM   rN   c                 s   s   | ]
}|V  qd S rT   r    .0rA   r    r    r!   	<genexpr>   s     zBTestGetitemListLike.test_getitem_iloc_generator.<locals>.<genexpr>r   rI   r   )r   r+   r)   r2   r   r   Zindexerr4   r3   r    r    r!   test_getitem_iloc_generator   s
    
z/TestGetitemListLike.test_getitem_iloc_generatorc                 C   s\   t dddgdddgd}dd	 d
D }|j|df }tddgdddgd}t|| d S )Nr   rI   r   rE   r#   rL   rk   c                 s   s   | ]
}|V  qd S rT   r    rl   r    r    r!   rn      s     zRTestGetitemListLike.test_getitem_iloc_two_dimensional_generator.<locals>.<genexpr>ro   rN   )r8   r   )r   r+   r   r)   r*   rq   r    r    r!   +test_getitem_iloc_two_dimensional_generator   s
    z?TestGetitemListLike.test_getitem_iloc_two_dimensional_generatorN)r<   r=   r>   rD   rK   rR   r   markparametrizer1   r]   r   r^   rj   rr   rs   r    r    r    r!   r?   K   s$   
r?   c                   @   s   e Zd Zdd Zdd ZdS )TestGetitemCallablec                 C   s   |dd  }|j d d df }t|| |dd  }|j d d ddgf }t||j d d ddgf  |d d }|dd  }|jdd	gd d f }t|| d S )
Nc                 S   s   dS )Nr6   r    rA   r    r    r!   rZ      r[   z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>r6   c                 S   s   ddgS )Nr6   rG   r    rw   r    r    r!   rZ      r[   rG   r   c                 S   s
   dddgS )NTFr    rw   r    r    r!   rZ      r[   r   rI   )r9   r)   r*   r2   r+   )r   rf   r4   r3   r   r    r    r!   test_getitem_callable   s    z)TestGetitemCallable.test_getitem_callablec                 C   s`   t ddggddggd}t dgdggd}|d }t|| |jd d df }t|| d S )Nr   rI   rM   rN   r%   )r   r)   r2   r9   )r   r   r3   r4   r    r    r!   %test_loc_multiindex_columns_one_level   s    z9TestGetitemCallable.test_loc_multiindex_columns_one_levelN)r<   r=   r>   rx   ry   r    r    r    r!   rv      s   rv   c                   @   s   e Zd Zdd Zejdddgddggdd	gd
dggejdgejdgejdgddggfddgddggdd	gd
dggejdgejdgdd
gd	dggffdd Z	ej
dd Zdd Zdd Zdd Zdd ZdS )TestGetitemBooleanMaskc              	   C   s  t dtjddditddddddgtdddgdd	d
dd}t dtjddditddddddgtdddgdd	d
dd}||jdk }|jg  }t|| ||jdk }|jg  }t|| ||jdk }|jdddg }t|| ||jdk }|jdddg }t|| ||jdk  }|jdg }t|| ||jdk }|jg  }t|| d}t	j
t|d ||jdk   W 5 Q R X t	j
t|d ||jdk  W 5 Q R X d S )Nr6   rL   Zint64)r0   r   rI   r   T)ZorderedrG   )r0   r8   rp   FrM   r   rE   z7Unordered Categoricals can only compare equality or notr   )r   r&   aranger   r   r   r+   r)   r2   r   r   	TypeError)r   Zdf3Zdf4r4   r3   rQ   r    r    r!   (test_getitem_bool_mask_categorical_index   sV     
 


	z?TestGetitemBooleanMask.test_getitem_bool_mask_categorical_indexzdata1,data2,expected_datar   rI   r   rE   g      ?rL      rb   r@   g      @g      @g      @g       @r#   c           
      C   sp   t t|}t t|}t||gdd}||dk }dd t|D }t |jdddd}	t||	 d S )	Nr   )ZaxisrI   c                 S   s   i | ]\}}|t |qS r    )r&   array)rm   icolr    r    r!   
<dictcomp>  s      z`TestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes.<locals>.<dictcomp>r   )rI   r   r%   )r   r&   r   r
   	enumeraterenamer)   r2   )
r   Zdata1Zdata2Zexpected_dataZdf1df2r   r4   Zexdictr3   r    r    r!   5test_getitem_bool_mask_duplicate_columns_mixed_dtypes  s    zLTestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypesc                 C   s,   ddddg}t tddd|dd}|S )	Nr6   rH   D   r   rE   float64r   r0   )r   r&   r{   reshape)r   Zdupsr   r    r    r!   df_dup_cols#  s    z"TestGetitemBooleanMask.df_dup_colsc              	   C   s4   |}d}t jt|d ||jdk  W 5 Q R X d S )Nz$cannot reindex from a duplicate axisr   rL   )r   r   
ValueErrorr6   )r   r   r   rQ   r    r    r!   ;test_getitem_boolean_frame_unaligned_with_duplicate_columns)  s    zRTestGetitemBooleanMask.test_getitem_boolean_frame_unaligned_with_duplicate_columnsc                 C   sj   t tdddddddgdd	}||jd
k }|j|_|}||jd
k }t|| |j t	| d S Nr   r   rE   r6   rG   rH   r   r   r   rL   )
r   r&   r{   r   rH   r   r)   r2   dtypesstrr   r   r   r3   r4   r    r    r!   2test_getitem_boolean_series_with_duplicate_columns2  s     
 zITestGetitemBooleanMask.test_getitem_boolean_series_with_duplicate_columnsc                 C   sf   t tdddddddgdd	}||d
k }|j|_|}||d
k }t|| |j t| d S r   )	r   r&   r{   r   r   r)   r2   r   r   r   r    r    r!   1test_getitem_boolean_frame_with_duplicate_columnsB  s     
 zHTestGetitemBooleanMask.test_getitem_boolean_frame_with_duplicate_columnsc                 C   s"   t  }||dk }t|| d S )Nr   )r   r)   r2   )r   r   r   r    r    r!   %test_getitem_empty_frame_with_booleanS  s    z<TestGetitemBooleanMask.test_getitem_empty_frame_with_booleanN)r<   r=   r>   r}   r   rt   ru   r&   nanr   Zfixturer   r   r   r   r   r    r    r    r!   rz      s(   B 

	rz   c                   @   s   e Zd Zdd ZdS )TestGetitemSlicec           
      C   s   t ddd}t|}|ddg \}}t jdd}|tk	rL|d d df }|||d	}||| }|jdd
 }	t||	 |j	|| }t||	 d S )Ng      $@g      I@rI   r#         r   r   rp      )
r&   r{   r   r'   r(   r   r+   r)   Zassert_equalr9   )
r   Zframe_or_seriesvaluesr   startendr:   objr4   r3   r    r    r!   test_getitem_slice_float64\  s    z+TestGetitemSlice.test_getitem_slice_float64N)r<   r=   r>   r   r    r    r    r!   r   [  s   r   )rO   Znumpyr&   r   Zpandasr   r   r   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr)   Zpandas.core.arraysr   r   r?   rv   rz   r   r    r    r    r!   <module>   s   44X 