1+ describe ( "Merge" , function ( ) {
2+
3+ it ( "test outer merge" , function ( ) {
4+ let data = [ [ 'K0' , 'k0' , 'A0' , 'B0' ] , [ 'k0' , 'K1' , 'A1' , 'B1' ] ,
5+ [ 'K1' , 'K0' , 'A2' , 'B2' ] , [ 'K2' , 'K2' , 'A3' , 'B3' ] ] ;
6+
7+ let data2 = [ [ 'K0' , 'k0' , 'C0' , 'D0' ] , [ 'K1' , 'K0' , 'C1' , 'D1' ] ,
8+ [ 'K1' , 'K0' , 'C2' , 'D2' ] , [ 'K2' , 'K0' , 'C3' , 'D3' ] ] ;
9+
10+ let colum1 = [ 'Key1' , 'Key2' , 'A' , 'B' ] ;
11+ let colum2 = [ 'Key1' , 'Key2' , 'A' , 'D' ] ;
12+
13+ let df1 = new dfd . DataFrame ( data , { columns : colum1 } ) ;
14+ let df2 = new dfd . DataFrame ( data2 , { columns : colum2 } ) ;
15+ let merge_df = dfd . merge ( { left : df1 , right : df2 , on : [ "Key1" , "Key2" ] , how : "outer" } ) ;
16+
17+ let output_data = [
18+ [ 'K0' , 'k0' , 'A0' , 'B0' , 'C0' , 'D0' ] ,
19+ [ 'k0' , 'K1' , 'A1' , 'B1' , NaN , NaN ] ,
20+ [ 'K1' , 'K0' , 'A2' , 'B2' , 'C1' , 'D1' ] ,
21+ [ 'K1' , 'K0' , 'A2' , 'B2' , 'C2' , 'D2' ] ,
22+ [ 'K2' , 'K2' , 'A3' , 'B3' , NaN , NaN ] ,
23+ [ 'K2' , 'K0' , NaN , NaN , 'C3' , 'D3' ]
24+ ] ;
25+
26+ assert . deepEqual ( merge_df . values , output_data ) ;
27+ } ) ;
28+
29+ it ( "test inner merge" , function ( ) {
30+ let data = [ [ 'K0' , 'k0' , 'A0' , 'B0' ] , [ 'k0' , 'K1' , 'A1' , 'B1' ] ,
31+ [ 'K1' , 'K0' , 'A2' , 'B2' ] , [ 'K2' , 'K2' , 'A3' , 'B3' ] ] ;
32+
33+ let data2 = [ [ 'K0' , 'k0' , 'C0' , 'D0' ] , [ 'K1' , 'K0' , 'C1' , 'D1' ] ,
34+ [ 'K1' , 'K0' , 'C2' , 'D2' ] , [ 'K2' , 'K0' , 'C3' , 'D3' ] ] ;
35+
36+ let colum1 = [ 'Key1' , 'Key2' , 'A' , 'B' ] ;
37+ let colum2 = [ 'Key1' , 'Key2' , 'A' , 'D' ] ;
38+
39+ let df1 = new dfd . DataFrame ( data , { columns : colum1 } ) ;
40+ let df2 = new dfd . DataFrame ( data2 , { columns : colum2 } ) ;
41+ let merge_df = dfd . merge ( { left : df1 , right : df2 , on : [ "Key1" , "Key2" ] , how : "inner" } ) ;
42+
43+ let output_data = [
44+ [ 'K0' , 'k0' , 'A0' , 'B0' , 'C0' , 'D0' ] ,
45+ [ 'K1' , 'K0' , 'A2' , 'B2' , 'C1' , 'D1' ] ,
46+ [ 'K1' , 'K0' , 'A2' , 'B2' , 'C2' , 'D2' ]
47+ ] ;
48+
49+ assert . deepEqual ( merge_df . values , output_data ) ;
50+ } ) ;
51+
52+ it ( "test left merge" , function ( ) {
53+ let data = [ [ 'K0' , 'k0' , 'A0' , 'B0' ] , [ 'k0' , 'K1' , 'A1' , 'B1' ] ,
54+ [ 'K1' , 'K0' , 'A2' , 'B2' ] , [ 'K2' , 'K2' , 'A3' , 'B3' ] ] ;
55+
56+ let data2 = [ [ 'K0' , 'k0' , 'C0' , 'D0' ] , [ 'K1' , 'K0' , 'C1' , 'D1' ] ,
57+ [ 'K1' , 'K0' , 'C2' , 'D2' ] , [ 'K2' , 'K0' , 'C3' , 'D3' ] ] ;
58+
59+ let colum1 = [ 'Key1' , 'Key2' , 'A' , 'B' ] ;
60+ let colum2 = [ 'Key1' , 'Key2' , 'A' , 'D' ] ;
61+
62+ let df1 = new dfd . DataFrame ( data , { columns : colum1 } ) ;
63+ let df2 = new dfd . DataFrame ( data2 , { columns : colum2 } ) ;
64+ let merge_df = dfd . merge ( { left : df1 , right : df2 , on : [ "Key1" , "Key2" ] , how : "left" } ) ;
65+
66+ let output_data = [
67+ [ 'K0' , 'k0' , 'A0' , 'B0' , 'C0' , 'D0' ] ,
68+ [ 'k0' , 'K1' , 'A1' , 'B1' , NaN , NaN ] ,
69+ [ 'K1' , 'K0' , 'A2' , 'B2' , 'C1' , 'D1' ] ,
70+ [ 'K1' , 'K0' , 'A2' , 'B2' , 'C2' , 'D2' ] ,
71+ [ 'K2' , 'K2' , 'A3' , 'B3' , NaN , NaN ]
72+ ] ;
73+
74+ assert . deepEqual ( merge_df . values , output_data ) ;
75+ } ) ;
76+
77+ it ( "test right merge" , function ( ) {
78+ let data = [ [ 'K0' , 'k0' , 'A0' , 'B0' ] , [ 'k0' , 'K1' , 'A1' , 'B1' ] ,
79+ [ 'K1' , 'K0' , 'A2' , 'B2' ] , [ 'K2' , 'K2' , 'A3' , 'B3' ] ] ;
80+
81+ let data2 = [ [ 'K0' , 'k0' , 'C0' , 'D0' ] , [ 'K1' , 'K0' , 'C1' , 'D1' ] ,
82+ [ 'K1' , 'K0' , 'C2' , 'D2' ] , [ 'K2' , 'K0' , 'C3' , 'D3' ] ] ;
83+
84+ let colum1 = [ 'Key1' , 'Key2' , 'A' , 'B' ] ;
85+ let colum2 = [ 'Key1' , 'Key2' , 'A' , 'D' ] ;
86+
87+ let df1 = new dfd . DataFrame ( data , { columns : colum1 } ) ;
88+ let df2 = new dfd . DataFrame ( data2 , { columns : colum2 } ) ;
89+ let merge_df = dfd . merge ( { left : df1 , right : df2 , on : [ "Key1" , "Key2" ] , how : "right" } ) ;
90+
91+ let output_data = [
92+ [ 'K0' , 'k0' , 'A0' , 'B0' , 'C0' , 'D0' ] ,
93+ [ 'K1' , 'K0' , 'A2' , 'B2' , 'C1' , 'D1' ] ,
94+ [ 'K1' , 'K0' , 'A2' , 'B2' , 'C2' , 'D2' ] ,
95+ [ 'K2' , 'K0' , NaN , NaN , 'C3' , 'D3' ]
96+ ] ;
97+
98+ assert . deepEqual ( merge_df . values , output_data ) ;
99+ } ) ;
100+ } )
0 commit comments