U
    f/e-                  	   @   sr  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 d dlm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ej !d#ed$d%ed&d%ged$d%ed&d%d'gd(d(gd(d(ej"gfed$d%ed&d%ged$d%ed&d%gd(d(gd(d(gfgd)d* Z#ej !d+d,gd-ggg g ggd.d/ Z$dS )0    N)	CategoricalIndex
MultiIndexNaTPeriodPeriodIndexSeries
date_rangeisnac                 C   sH  | |j}zt|j|js"tW n tk
r8   Y nX |j|jsLt|j|js^t|jdd }| |}| D ]\}}||| ks~tq~| jdd }|  |}| D ]\}}|| | kstq|  |}	t	|	
 st| jd d d }
|  |
}| D ]\}}|| | kstq|   }|| k	sDtd S )N
         )reindexindexnpZmay_share_memoryAssertionErrorAttributeErroris_Z	identicalitemsisnanall)datetime_seriesZstring_seriesidentityZsubIndexZ	subSeriesidxvalZ	subIndex2ZsubTSZstuffSeriesZnonContigIndexZsubNonContigresult r   L/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/series/methods/test_reindex.pytest_reindex   s.    



r   c                  C   s   t ddddgddtjdgd} tjdtjddtjgdd	ddddg }}t| || j|  | jd
| _tj| || j| dd d S )Nr                     r   r   objectF)Zcheck_index_type)	r   r   nantmassert_series_equalr   Zilocr   astype)tsijr   r   r   test_reindex_nan9   s
    (r.   c                  C   sp   t dddd} t| }|td}t|jtds<t| }|dd  	 sXt|d d 
 rltd S )Nz1/1/2000 00:00:00r   Z10speriodsfreq   zM8[ns])r	   r   r   ranger   Z
issubdtypedtyper   r
   r   any)rngZseriesr   maskr   r   r   test_reindex_series_add_natE   s    r9   c                  C   s   t ddd} ttjd| d}|t|jdd }|dd }|jd |_t	
|| |t|jdd  }t	
|| d S )Nz1/1/2000r   r0   r%   r    r   )r	   r   r   randomZrandnr   listr   
_with_freqr(   r)   )r7   r+   r   expectedr   r   r   test_reindex_with_datetimesQ   s    r?   c              	   C   s   t td}|j| jdd |j| jdd}| t| j}| jd | _t| | | d d d }d}tj	t
|d |j| jdd W 5 Q R X d S )Nr5   padmethodr   zVInvalid fill method\. Expecting pad \(ffill\), backfill \(bfill\) or nearest\. Got foomatchfoo)r   r&   r   r   r<   r=   r(   r)   pytestraises
ValueError)r   empty	reindexedr+   msgr   r   r   test_reindex_corner^   s    
rM   c                  C   s  t tddd} | d d d }|j| jdd}|j| jdd}t|| t ddddd	d	d
d
ddg
tdd}t|| t dddd	dgdddddgd} ddddg}t ddddg|d}| | }t||d | |jdd}t|| t ddddg|d}| j|dd}t|| t ddddgt	dd} d}| t	| }t dddgt	|d}t|| t dt
ddd} | djdd}t dt
ddd}t|| d S )Nr   int64r@   r   rA   rB   ffillr   r#      r$   r%   r"   r   r    abcdegfZfloat64Zinfer)ZdowncastTFZabcdZagcZbfill)r   r   aranger   r   r(   r)   rO   r*   r<   r4   shiftZfillna)ss2rK   Z
reindexed2r>   	new_indexr   r   r   r   test_reindex_padu   s4    & r]   c                  C   s   t tjddd} ddddg}| j|dd	}t t|d|}t|| | j|dd
d}t ddtjdg|}t|| | j|dddddgd}t dtjtjdg|}t|| d S )Nr   rN   r@   g?g?g      ?       @ZnearestrB   g?)rC   Z	tolerancer   r"   r   g333333?g{Gz?g?r   )	r   r   rX   r   Zaroundr*   r(   r)   r'   )rZ   targetr   r>   r   r   r   test_reindex_nearest   s    r`   c                   C   s   d S )Nr   r   r   r   r   test_reindex_backfill   s    ra   c                 C   sp   | d d d }t tjt|td|jd}|| j}|jtjksFt	||jd d d }|jtj
kslt	d S Nr   r@   r%   )r   r   zeroslenintr   r   r5   Zfloat_r   int_)r   r+   Zint_tsZreindexed_intr   r   r   test_reindex_int   s    rg   c                 C   sp   | d d d }t tjt|td|jd}|| j}|jtjksFt	||jd d d }|jtj
kslt	d S rb   )r   r   rc   rd   boolr   r   r5   Zobject_r   Zbool_)r   r+   bool_tsZreindexed_boolr   r   r   test_reindex_bool   s    rj   c                 C   sT   | dd  }t tjt|td|jd}|j| jdd}t|d d  sPt	d S )Nr    r@   r%   rA   rB   )
r   r   rc   rd   rh   r   r   r
   r   r   )r   r+   ri   Zfilled_boolr   r   r   test_reindex_bool_pad   s    rk   c                  C   s   t ddd} tdddgdd}|| }tttjtjtjgdddgd	}| |_t|| ttddgdddgd	}d
dg|_|d
dg}t|| ttdtjgdddgd	}ddg|_|ddg}t|| d S )NZ20000101r   r:   rQ   rR   rS   categoryr@   )values
categoriesr"   r   )	r	   r   r   r   r   r'   r   r(   r)   )r   rZ   r   r>   r   r   r   test_reindex_categorical   s     


ro   c                  C   sf   t dddgdddgd} dddg}d}t}| |||}| |||}t|| d S )Nr"   r   r   r   r%   rl   )r   strr   r*   r(   r)   )serr\   Z
temp_dtypeZ	new_dtyper   r>   r   r   r   %test_reindex_astype_order_consistency   s    
rr   c                  C   s  t dddg} | dddg}t ddtjgdddgd}t|| | jdddgdd	}t dddgdddgd}t|| t dddg}|dddg}t ddtjgdddgd}t|| |jdddgdd	}t dddgdddgd}t|jjtj	st
t|| t dddgtd
}|dddg}t ddtjgdddgtd}t|| |jdddgdd	}t dddgdddgtd}t|| t dddg}|dddg}t ddtjgdddgtd}t|| |jdddgdd	}t dddgdddgd}t|| d S )N      ?r^   g      @r"   r   r   r%   r   )Z
fill_valuer@   r   r5   rF   TF)r   r   r   r'   r(   r)   
issubclassr5   typeintegerr   r&   )Zfloatsr   r>   ZintsZobjectsZboolsr   r   r   test_reindex_fill_value   s:    rx   c               	   C   s\   t dddd} t dddd}ttd| d	}d
}tjt|d |j|dd W 5 Q R X d S )NZ20131101zAmerica/Chicagor!   )tzr0   Z20131103r   Hr/   r%   zLCannot compare dtypes datetime64\[ns, America/Chicago\] and datetime64\[ns\]rD   rO   rB   )r	   r   r4   rG   rH   	TypeErrorr   )r   ZnewidxrZ   rL   r   r   r   /test_reindex_datetimeindexes_tz_naive_and_aware/  s    r|   c                  C   s6   t ddddg} t tgd dd}t| | d S )Nzdatetime64[ns, UTC]r@   r   r"   r   )r   r   r   r(   Zassert_equal)r   r>   r   r   r   "test_reindex_empty_series_tz_dtype<  s    r}   z+p_values, o_values, values, expected_valuesZ2019Q1zQ-DECZ2019Q2ZAllrs   c           	      C   sB   t | }t|}t||d}||}t||d}t|| d S )Nr%   )r   r   r   r   r(   r)   )	Zp_valuesZo_valuesrm   Zexpected_valuesZperiod_indexZobject_indexrq   r   r>   r   r   r   $test_reindex_periodindex_with_objectC  s    
r~   rm   rQ   xc                 C   sh   t tt| d t| dd}|jtdgdd}t tdg| d gg g gddd}t	|| d S )Nr   r&   rt   rR   )levelr"   )levelscodes)
r   r4   rd   r   Zfrom_arraysr   r   arrayr(   r)   )rm   rq   r   r>   r   r   r   test_reindex_empty_with_level_  s       r   )%Znumpyr   rG   Zpandasr   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr(   r   r.   r9   r?   rM   r]   r`   ra   rg   rj   rk   ro   rr   rx   r|   r}   markZparametrizer'   r~   r   r   r   r   r   <module>   sH   ,')3

