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
U
®ý°d§ã    @s8ddlZddlZddlmZddlmZejdd„ƒZ    ejdd„ƒZ
ejgdgddggd    d
d „ƒZ ejgdgddggd    d d „ƒZ ddd„Z ej ddgdfdgdfddgdfddgdfg¡dd„ƒZej ddgdgdfdgdgdfddgddgdfddgddgdfg¡dd„ƒZej ddddgg¡dd„ƒZdS)éN)Ú    DataFramec CsFtdddddddddddg dddddddddddg t ddd¡dœƒS)Nééééré )ÚouterÚinnerZv1©rÚnpZlinspace©r r úld:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/reshape/merge/test_merge_index_as_string.pyÚdf1s  ýÿrcCsJtddddddddddddg ddddddddddddg t ddd¡dœƒS)    Nrrrré
ré )rr    Zv2r
r r r r Údf2s  ýÿrrr    )ÚparamscCs|j}|r| |¡}|S)z`Construct left test DataFrame with specified levels
    (any of 'outer', 'inner', and 'v1')
    ©ÚparamÚ    set_index)ÚrequestrÚlevelsr r r Úleft_dfs
rcCs|j}|r| |¡}|S)zaConstruct right test DataFrame with specified levels
    (any of 'outer', 'inner', and 'v2')
    r)rrrr r r Úright_df*s
rc sú|dk    r||‰‰dd„|jjDƒ‰dd„|jjDƒ‰‡‡fdd„ˆDƒ}‡fdd„ˆDƒ}|rn|j|dd}‡fd    d„ˆDƒ}|r’|j|dd}‡fd
d„ˆDƒ}    |    r´|j|    d }‡fd d„ˆDƒ}
|
rÖ|j|
d }|j|ˆˆ|d } |rö|  |¡} | S)a¿
    Compute the expected merge result for the test case.
 
    This method computes the expected result of merging two DataFrames on
    a combination of their columns and index levels. It does so by
    explicitly dropping/resetting their named index levels, performing a
    merge on their columns, and then finally restoring the appropriate
    index in the result.
 
    Parameters
    ----------
    df_left : DataFrame
        The left DataFrame (may have zero or more named index levels)
    df_right : DataFrame
        The right DataFrame (may have zero or more named index levels)
    on : list of str
        The on parameter to the merge operation
    left_on : list of str
        The left_on parameter to the merge operation
    right_on : list of str
        The right_on parameter to the merge operation
    how : str
        The how parameter to the merge operation
 
    Returns
    -------
    DataFrame
        The expected merge result
    NcSsg|]}|dk    r|‘qS©Nr ©Ú.0Únr r r Ú
<listcomp>Zsz$compute_expected.<locals>.<listcomp>cSsg|]}|dk    r|‘qSrr rr r r r[scs g|]}|ˆkr|ˆkr|‘qSr r )rÚi)Ú left_levelsÚ right_levelsr r r^scsg|]}|ˆkr|‘qSr r r©Úleft_onr r rasT)Zdropcsg|]}|ˆkr|‘qSr r r©Úright_onr r rescsg|]}|ˆkr|‘qSr r rr"r r rjs)Úlevelcsg|]}|ˆkr|‘qSr r rr$r r rns©r#r%Úhow)ÚindexÚnamesÚ reset_indexÚmerger) Zdf_leftZdf_rightÚonr#r%r(Z output_levelsZ    drop_leftZ
drop_rightZ
reset_leftZ reset_rightÚexpectedr )r r#r!r%r Úcompute_expected7s*
 
r/zon,howÚleftÚrightcCs4t||||d}|j|||d}tj||dddS)N)r-r(T©Z
check_like©r/r,ÚtmÚassert_frame_equal)rrr-r(r.Úresultr r r Ú!test_merge_indexes_and_columns_on|s r7zleft_on,right_on,howcCs8t|||||d}|j||||d}tj||dddS)Nr'Tr2r3)rrr#r%r(r.r6r r r Ú-test_merge_indexes_and_columns_lefton_rightonŽs ÿr8Ú
left_indexcCsf| |¡}| ddg¡}| ¡j|ddg|ddd |¡}|j|ddg|ddd}tj||dddS)Nrr    Ú_xZ_y)r-r(ZlsuffixZrsuffixTr2)rr+Újoinr4r5)rrr9Z    join_typerrr.r6r r r Ú test_join_indexes_and_columns_on¤s(
þüÿ    ÿr<)NNNN)Únumpyr ZpytestZpandasrZpandas._testingZ_testingr4Zfixturerrrrr/ÚmarkZ parametrizer7r8r<r r r r Ú<module>s@  
 
 
 
 
 
 
E
 
üþ    
      üþ