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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
U
­ý°d´Eã@sÀddlmZddlZddlZddlmZddlZddlmZm    Z    m
Z
m Z m Z ddl mZddlmZejdd„ƒZejdd    „ƒZejd
d „ƒZejd d „ƒZejdd„ƒZejdd„ƒZejdd„ƒZej dddeddgddgdœddgdfddeddgddgdœddgdfd    dedddgddejgdœdddgdfd    dedddgejddgdœdddgdfd deejddgd ddgdœd!ddgdfd deddejgddd gdœddd!gdfd"dedddejgejddd gdœdddd!gdfd"dedddejgejddd gdœdddd!gdfg¡d#d$„ƒZd%d&„Zd'd(„Zd)d*„Z d+d,„Z!d-d.„Z"d/d0„Z#d1d2„Z$d3d4„Z%d5d6„Z&d7d8„Z'd9d:„Z(d;d<„Z)d=d>„Z*ej d?ddg¡d@dA„ƒZ+GdBdC„dCƒZ,dS)Dé)ÚdatetimeN)Ú
MergeError)Ú    DataFrameÚIndexÚ
MultiIndexÚ
date_rangeÚ period_range)ÚconcatcCs*tt d¡ dd¡tdƒtdddddS)    NéééZabcdeÚ2000ÚA)ÚstartÚfreqÚperiods©ÚdataÚcolumnsÚindex)rÚnpZarangeZreshapeÚlistr©rrú[d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/frame/methods/test_join.pyÚframe_with_period_indexs
 ýrcCstddddgidddgdS)NÚar
é
réé©r©rrrrrÚleftsr!cCstddddgidddgdS)    NÚbé,édéÈérrrr rrrrÚright"sr'cCs&tddddgddddgd    œtd
ƒd S) Nrr"ÚcÚdÚcatÚdogÚweaselÚhorse©rr"r r)rÚrangerrrrÚ left_no_dup'sþr0cCs0tdddddgdddd    d
gd œtd ƒd  d¡S)Nrr"r(r)ÚeÚmeowÚbarkúum... weasel noise?ZnayZchirp©rr(r r)rr/Ú    set_indexrrrrÚ right_no_dup/s  þûúr7cCs$t|tdgdgdœdgdgddS)NrZcowr.r&rT)Úsort)r    r)r0rrrÚ left_w_dups:sÿr9cCs&t|tdgdgdœdgdgƒ d¡S)Nr1Zmoor5r&rr)r    rr6)r7rrrÚ right_w_dupsAs
ÿþr:zhow, sort, expectedÚinnerFr
rr%r$r.rrrTr#r&ÚoutercCs"|j|||dd}t ||¡dS)Nú1:1)Úhowr8Úvalidate)ÚjoinÚtmÚassert_frame_equal)r!r'r>r8ÚexpectedÚresultrrrÚ    test_joinHs,rEc    Cs0tddddddgiƒ}tdddddgdddddgdœƒ}tdddddgdddddgd    œƒ}d
}tjt|d |j|gd d W5QRXtjt|d |j||gddW5QRXtjt|d |j||gd ddW5QRXtjtdd | ||g¡W5QRX| |g¡}| |¡}t ||¡dS)NÚkeyrrr&r r é)rFZv1)ÚkeysZv2z7Suffixes not supported when joining multiple DataFrames©ÚmatchÚy)ÚlsuffixÚx)Úrsuffix©rLrNzIndexes have overlapping values)rÚpytestÚraisesÚ
ValueErrorr@rArB)ÚfirstÚsecondÚthirdÚmsgZ
arr_joinedZ norm_joinedrrrÚtest_suffix_on_list_joinxs"" 
rWc    Cs2d}tjt|d|j|dddW5QRXdS)Nz—"invalid" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"rIrÚinvalid©Úonr?)rPrQrRÚmerge)r0r7rVrrrÚtest_join_invalid_validateŽsÿ r\c    CsB|j|dddd}tjt|d|j|dddW5QRXdS)NrÚ one_to_manyrYzBMerge keys are not unique in right dataset; not a one-to-one mergerIÚ
one_to_one©r@rPrQr)r0r:rVrrrÚ$test_join_on_single_col_dup_on_right¡sýýr`c    CsB|j|dddd}tjt|d|j|dddW5QRXdS)NrÚ many_to_onerYzAMerge keys are not unique in left dataset; not a one-to-one mergerIr^r_)r9r7rVrrrÚ#test_join_on_single_col_dup_on_left´sýýrbc    Csp|j|dddd}tjt|d|j|dddW5QRXd}tjt|d|j|dddW5QRXdS)    NrZ many_to_manyrYzCMerge keys are not unique in right dataset; not a many-to-one mergerIrazBMerge keys are not unique in left dataset; not a one-to-many merger]r_)r9r:rVrrrÚ#test_join_on_single_col_dup_on_bothÇsýýrccCsÊtddddgddddgddddgd    œtd
ƒd  ddg¡}tdddgdddgd d dgdœtdƒd  ddg¡}tdddgdddgdddgd d dgdœtdƒd  ddg¡}|j|ddd}t ||¡dS)Nrr"rrr*r+r,r-©rr"r(r rr2r3r4)rr"r)r&)rr"r(r)r;r=)r>r?)rr/r6r@rArB)r!r'Zexpected_multirDrrrÚ test_join_on_multi_col_check_dupßs<
 
 
ýúù    ýúù    üùø rec
Csœ|j|jdd…ddgf}|j|jdd…ddgfjddd…}| |¡}t |j|j¡tddddgƒ}t |j|¡|j|dd    }t |j|j¡t |j|¡|j|d
d    }t |j|j¡t |j|¡|j|d d    }t |j|jdd…¡t |j|¡|j|d d    }t |j|j ¡¡t |j|¡t    j
t d d|j|dd    W5QRXd}dD].}t    j
t |d|j||d    W5QRXqhdS)NrrÚBr ÚCÚDéÿÿÿÿr!©r>r'r;r<z join methodrIZfoozcolumns overlap but no suffix)r<r!r;) ÚlocrZilocr@rAÚassert_index_equalrrZ sort_valuesrPrQrR)Ú float_frameÚfÚf2ÚjoinedZexpected_columnsrVr>rrrÚtest_join_indexs0(
rqcCsÊ|jdd…ddgf}|jddd…ddgf}| ¡}|dddd…|d<|dddd…|d<| |¡}t ||¡|j|dd}t ||ddd…¡|j|dd}t ||jdd…|jf¡dS)Nrrfrrgrhr'rj)rkÚcopyr@rArBr)rmÚafZbfrCrDrrrÚtest_join_index_more,s
 rtc    Cs\| ¡}| |jd¡}| |¡}t ||¡d|_tjt    dd| |¡W5QRXdS)Nrizmust have a namerI)
rrÚpoprr@rArBÚnamerPrQrR)rmZdfZserrprrrÚtest_join_index_series>s
 rwcCs¾|jdd…dddgf}|jdd…dddgf}|j|ddd}|jdd…ddgf d¡}|jdd…ddgf d¡}|jdd…ddgf}| |¡ |¡}t ||jdd…|jf¡dS)NrrfrgrhZ_df1Z_df2rO)rkr@Z
add_suffixrArBr)rmÚdf1Údf2rpZdf1_sufZdf2_sufZ
no_overlaprCrrrÚtest_join_overlapJsrzcCs^|jdd„d}tj|jgddd}|j |j¡}| |¡}t|||jd}t     
||¡dS)NcSs |›|›S)Nr)rFrrrÚ<lambda>Zóz(test_join_period_index.<locals>.<lambda>©rrr)Zaxisr) ÚrenamerZ concatenateÚvaluesrÚappendr@rrrArB)rÚotherZ joined_valuesZ joined_colsrprCrrrÚtest_join_period_indexYs
ÿr‚cCs°tddddgidddgd}td    d
d d gid ddgd}tddddgiddd gd}|j||gdd}tddddgtjd d d gtjddtjgdœddddgd}t ||¡dS)Nrrrr
rrr&rr"r$r%r#r r(iiôiXr!rjrd)rr@rÚnanrArB)rxryÚdf3rprCrrrÚ(test_join_left_sequence_non_unique_indexhs
 ý
ú    r…cCs6|j ¡}|j|ddgg}| |¡}t ||¡dS)Nrgrh)rZto_framerfr@rArB)rmr!r'rDrrrÚtest_join_list_series|s
 
r†Úsort_kwc    CsÐtdddgiddgd}tddd    gid
dgd}td d d gidd
gd}tdtdƒddœddtdƒdœddtdƒdœdœƒ}|dkr–|jddd
gd}t d¡|j||gd|d}W5QRXt ||¡dS)NÚcol1rrr(rrÚcol2r r r"Úcol3érGç@rƒçð?rdg@g@g@g @©rˆr‰rŠFr<)r>r8)rÚfloatÚreindexrAZassert_produces_warningr@rB)r‡rr"r(rCrDrrrÚ)test_suppress_future_warning_with_sort_kw…sýÿ r‘c@sDeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dS)ÚTestDataFrameJoincCs¦|}|j|jdd…dgf}|j|jdd…ddgf}|j|dd |j¡}| ¡j ¡}tj|t |j¡<t    ||j|j
d}t |j¡  ¡r–t ‚t  ||¡dS)    Nr rrrfrgr<rj©rr)rkrr@rrrrrrƒÚisnanrrÚallÚAssertionErrorrArB)ÚselfZ multiindex_dataframe_random_dataÚframerr"rprCrrrrEszTestDataFrameJoin.test_joincCsptddgddgddgdœƒ}tddgddgddgdœƒ}| ddg¡}| ddg¡}dD]}|j||dqXdS)    Nrr)rr"rM)rr"rKrr")r!r'r<rj)rr6r@)r—rxryr>rrrÚtest_join_segfault¬s z$TestDataFrameJoin.test_join_segfaultcCsrddg}tdddƒtdddƒg}t|tdƒdgd}td    dgd
d gg||d}|j|dd }t|jƒd
ksnt‚dS) NZ20120209Z20120222iÜré    éZaar“rr&r ©rZ)rrr/r@Úlenrr–)r—Z    str_datesZdt_datesrrgZtstrrrÚtest_join_str_datetime¶s z(TestDataFrameJoin.test_join_str_datetimec Csštdddgdddgdddgddd    gddd
gddd gd dd gd ddgd ddgg    dddgd ddg¡}tddgddggddgd dg¡}tddgddgddgd    dgd
dgd dgdtjgdtjgdtjgg    |jddgd}t |j|dd|¡t |j|dd|ddg¡tj    ddgdddggddgd}tddgddgddgd    dgd
dgd dgg|ddgd}t |j|dd|¡t |j|dd|ddg¡dS)NrrMgR
º½¤1Þ?rKg¡­Ü Ìè?Úzg¼<+J    â?r"gµá°4ð£Ö¿g^Ÿ9ëSŽ×?g?¨Œû¿r(rrr&rSrTZvalue1r}rr
Zvalue2rrŒg@r“r!rjr'©Únames)
rr6rrƒrrArBr@rZ from_product)r—rxryÚexpZexp_idxrrrÚtest_join_multiindex_leftrightÁsf÷ ô óÿ÷ óÿúö z0TestDataFrameJoin.test_join_multiindex_leftrightc Csàt ddd¡ ¡}tjd|fgddgd}tddgi|d}tjd|fgddgd}td    dgi|d}tjd|fgddgd}td
dgi|d}| ||g¡}tjd|fgddgd}    tdgdgdgd œ|    d}
t ||
¡dS) NiÐrrZindex_0Údater rˆrr‰rŠrŽ)    ÚpdÚ    Timestampr¤rÚ from_tuplesrr@rAZ assert_equal) r—r¤Z    df1_indexrxZ    df2_indexryZ    df3_indexr„rDZexpected_indexrCrrrÚtest_join_multiindex_datesýsÿz,TestDataFrameJoin.test_join_multiindex_datesc    Cs˜tddgddgddggd}t dd    g¡}t|dd
gdd ggd}tjtd d tj||ddW5QRXtjtd d |j|ddW5QRXdS)Nrr"ré rr›)rr)rÚ)r(Zc1é!é,z-Not allowed to merge between different levelsrIrœ)    rrr§rPrQrr¥r[r@)r—rxrryrrrÚ'test_merge_join_different_levels_raisessÿÿz9TestDataFrameJoin.test_merge_join_different_levels_raisescCs„tt d¡tdddddd}tt d¡tdd    d
ddtd    dƒd }|j|d d }|j |j¡}t     |j|¡|jj
j dks€t ‚dS)N)ér&z2012-11-15 00:00:00r®Z100Lz
US/Central)rrÚtzr)r&r&r&Z250Lr“r<rj) rrÚzerosrr/r@rÚunionrArlr¯Úzoner–)r—Ztest1Ztest2rDrCrrrÚtest_frame_join_tzaware(s.ÿþÿûz)TestDataFrameJoin.test_frame_join_tzawareN)
Ú__name__Ú
__module__Ú __qualname__rEr™ržr£r¨r­r³rrrrr’œs
 <r’)-rÚnumpyrrPZ pandas.errorsrZpandasr¥rrrrrZpandas._testingZ_testingrAZpandas.core.reshape.concatr    Zfixturerr!r'r0r7r9r:ÚmarkZ parametrizerƒrErWr\r`rbrcrerqrtrwrzr‚r…r†r‘r’rrrrÚ<module>s”    
 
 
 
 
 
 
 
""$ý$ý$ý$ý
þý    
þýáþ+
$)