1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
U
­ý°d,ã@s²ddlmZddlZddlZddlmZddlmZm    Z    m
Z
m Z ddl m Zej ddddgg¡dd    „ƒZd
d „Zej d ddd dg¡dd„ƒZdd„Zej ddddgd d dgd dd gg¡dd„ƒZdd„Zdd„Zdd„Zej dddg¡ej d d!d"g¡d#d$„ƒƒZej d%de d"d"d"d!d!d"g¡fd&e d"d!d!d"d"d"g¡fd"e d"d!d!d!d!d"g¡fg¡d'd(„ƒZejjd)d*„ƒZd+d,„Zd-d.„Zej d/ej ej!g¡d0d1„ƒZ"d2d3„Z#dS)4é)ÚproductN)Ú    hashtable)ÚNAÚ DatetimeIndexÚ
MultiIndexÚSeriesÚnamesÚfirstÚsecondcCstjddddgddddgg|d}| ¡}tjdddgdddgg|jd}t ||¡tjtdƒtdƒg|d}| ¡}tjtdƒtdƒg|jd}t ||¡tjtdƒtdƒg|d}| ¡}tjdgdgg|jd}t ||¡tjggg|d}| ¡}t ||¡dS)    Néé©rZaaaaZababZaaÚabÚa)rÚ from_arraysÚuniquerÚtmÚassert_index_equalÚlist)rÚmiÚresÚexp©rúad:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/indexes/multi/test_duplicates.pyÚ test_uniques"    rcCs€tddddddgƒ}tddddddgdd}t ||g¡ ¡}tddddgƒ}tddddgdd}t ||g¡}t ||¡dS)Nz
2015-01-01ZNaTz
2015-01-02z
Asia/Tokyo)Útz)rrrrrr)Zidx1Zidx2ÚresultZeidx1Zeidx2rrrrÚtest_unique_datetimelike)sÿþ
ÿrÚlevelr cCsª|j|d}| |¡ ¡}t ||¡tjddddgddddggddgd    }|j|d}| |¡}t ||¡tjgggddgd    }|j|d}| |¡}t ||¡dS)
N©rr ér éér    r
r )rZget_level_valuesrrrr)ÚidxrrÚexpectedrrrrÚtest_unique_level;s  & 
 
r%c    Csªd}tjt|d,tdgdtdƒgdgdtdƒgƒ}W5QRXt dddddgddddd    gg¡}d
}tjt|d(| dddddgddd    d d gg¡W5QRXdS) Nz3Level values must be unique: \[[A', ]+\] on level 0)ÚmatchÚAé
rÚBr r r z4Level values must be unique: \[[AB', ]+\] on level 0éþÿÿÿr")ÚpytestZraisesÚ
ValueErrorrÚrangerZ
set_levels)ÚmsgrrrrÚtest_duplicate_multiindex_codesOs0"r/rÚbr cCs–tjddggd|d}|j|ks&t‚t ddggd¡}| |¡}|j|ksRt‚|j|dddd|j|d|dgddgd}|j|ks’t‚dS)    Nrr r r T)rZinplacer r)rZ from_productrÚAssertionErrorÚrename)rrrrrÚtest_duplicate_level_names]s
r3c
CsŒtddgdddggdddddddgdddddddggd}|| ddg¡| ddg¡| ddg¡fD]"}|jsrt‚| ¡j|jksdt‚qddS)Nrr r ©ÚlevelsÚcodesZNumZUpper)rZ    set_namesÚhas_duplicatesr1Údrop_duplicatesr)rr#rrrÚtest_duplicate_meta_datans"ÿ   ü
r9c
Cs2|jdkst‚|jdkst‚|jdks*t‚|jdks8t‚tddgdddggdddddddgdddddddggd}|jdks€t‚|jdksŽt‚tddgddggd    ddddgd    ddddggd}|jdksÌt‚|jdksÚt‚tddgddggd    d    ddddgd    d    ddddggd}|jdkst‚|jdks.t‚dS)
NTFrr r r4rr0éÿÿÿÿ)Z    is_uniquer1r7r)r#Úidx_duprZmi_nanZ
mi_nan_duprrrÚtest_has_duplicates~s,"ÿÿÿr<cCs@ddddddddd    d
d d d dddddg}t |¡}|jr<t‚dS)N)ÚxÚoutÚzr"ÚyÚinr?é©)r=r>r?ér@rAr?éw)r=r>r?é    r@rAr?é‡)r=r>r?é r@rAr?é‘)r=r>r?ér@rAr?éž)r=r>r?ér@rAr?éz)r=r>r?ér@rAr?é )r=r>r?ér@rAr?é´)r=r>r?ér@rAr?é)r=r>r?ér@rAr?é€)r=r>r?ér@rAr?é)r=r>r?ér@rAr?éo)r=r>r?ér@rAr?ér)r=r>r?ér@rAr?éy)r=r>r?ér@rAr?é~)r=r>r?é r@rAr?é›)r=r>r?é!r@rAr?é{)r=r>r?é r@rAr?é)rÚ from_tuplesr7r1)ÚtrrrrÚtest_has_duplicates_from_tuplesšs*î
rgÚnlevelsr!éÚ
with_nullsTFcst t d¡d¡‰t d¡}|r€dˆd<‡fdd„t|ƒDƒ‰t|ƒD]}dˆ|d||d<qFˆt ddg¡ d¡g7‰nˆg|t d¡ d¡g‰|g|ddgg}t|ˆd}|jrÆt‚|rîd    d
„}t    t
|ˆƒƒ‰t|ˆd}n|j   ¡}t  ||dg¡}|jst‚dS) Niôr r:csg|] }ˆ ¡‘qSr)Úcopy)Ú.0Úi©r6rrÚ
<listcomp>Àsz0test_has_duplicates_overflow.<locals>.<listcomp>r rr4cSst |d|d¡S)Néèr)ÚnpÚinsert)rrrrÚfÑsz'test_has_duplicates_overflow.<locals>.f)rqZtileÚaranger-ÚarrayÚrepeatrr7r1rÚmapÚvaluesÚtolistre)rhrjrrmr5rrsrxrrnrÚtest_has_duplicates_overflowµs&
 
 
rzzkeep, expectedÚlastcCs|j|d}t ||¡dS)N©Úkeep)Ú
duplicatedrÚassert_numpy_array_equal)r;r}r$rrrrÚtest_duplicatedÝs     r€cstd\‰‰t ˆ¡t ˆ¡dt ˆ¡g}‡‡fdd„|Dƒ}t||d}|j|d}tj|j|d}t ||¡dS)N)éÈiˆrpcsg|]}tj ˆˆˆ¡‘qSr)rqÚrandomÚchoice)rlZlev©ÚkÚnrrroïsz)test_duplicated_large.<locals>.<listcomp>r4r|)    rqrtrZmakeStringIndexrr~rrxr)r}r5r6rrr$rr„rÚtest_duplicated_largeês   r‡c    CsúdD]@}t d|gdtjgg¡}|jr*t‚t | ¡tj    ddd¡qt
ddƒD]¤}t
dd    ƒD]”}t t
d
|ƒt
d
|ƒƒ}tt d ƒd|…t d ƒd|…gtj  t |ƒ¡jd }t|ƒ|d|dksÊt‚|jrÔt‚t | ¡tj    t|ƒdd¡q^qPdS)N)éeéfrˆg @r Úbool©Údtyper ér"r:ZabcdeZWXYZr4)rrrqÚnanr7r1rrr~Úzerosr-rrr‚Z permutationÚTÚlen)rrr†Úmr6rrrÚtest_duplicated2÷s"
þ
ÿr“c    Cszt ddddddgddddddgf¡}tjddddddgtd}| ¡}t ||¡|jtksbt    ‚t dddddgdddddgf¡}t 
|  ¡|¡t ddddddg¡}|jdd}t ||¡|jtksÐt    ‚t dddddgdddddgf¡}t 
|j dd|¡t ddddddg¡}|jdd}t ||¡|jtksDt    ‚t ddddgddddgf¡}t 
|j dd|¡dS)    Nr r r FTr‹r{r|) rrrqrurŠr~rrrŒr1rr8)r#r$r~rrrÚtest_duplicated_drop_duplicatess&& "  "  r”rŒc Csntddddddddddg
td}ttjtjddddddddtjtjtjdg
|d ¡}t ||¡dS)    NFTr‹yð?rr yð?ð?yð?@)rrŠrqrŽr~rZassert_series_equal)rŒr$rrrrÚ&test_duplicated_series_complex_numbers*s&    þö ó
r•cCsŒtddttgdd}t ddddg¡}tj||gddgd}| ¡}tddtgdd}t dddg¡}tj||gddgd}t ||¡dS)    Nr r ZInt64r‹r rr0r )    rrrqrurrrrr)Zvals_aZvals_bZmidxrZ
exp_vals_aZ
exp_vals_br$rrrÚtest_midx_unique_ea_dtypeIsr–)$Ú    itertoolsrÚnumpyrqr+Z pandas._libsrZpandasrrrrZpandas._testingZ_testingrÚmarkZ parametrizerrr%r/r3r9r<rgrzrur€Zarm_slowr‡r“r”Z    complex64Z
complex128r•r–rrrrÚ<module>sN   
 
$
 &ýþ
 
þþ