7
7
from pandas .tests .frame .common import TestData
8
8
9
9
import pandas .util .testing as tm
10
- from pandas .util .testing import (assertRaisesRegexp ,
11
- assert_frame_equal )
12
10
13
11
14
- class TestDataFrameJoin (tm . TestCase , TestData ):
12
+ class TestDataFrameJoin (TestData ):
15
13
16
14
def test_join (self ):
17
15
df1 = pd .DataFrame ({'a' : [20 , 10 , 0 ]}, index = [2 , 1 , 0 ])
18
16
df2 = pd .DataFrame ({'b' : [100 , 200 , 300 ]}, index = [1 , 2 , 3 ])
19
17
18
+ result = df1 .join (df2 )
19
+ expected = pd .DataFrame ({'a' : [20 , 10 , 0 ], 'b' : [200 , 100 , None ]},
20
+ index = [2 , 1 , 0 ])
21
+ tm .assert_frame_equal (result , expected )
22
+
23
+ result = df1 .join (df2 , how = 'left' )
24
+ expected = pd .DataFrame ({'a' : [20 , 10 , 0 ], 'b' : [200 , 100 , None ]},
25
+ index = [2 , 1 , 0 ])
26
+ tm .assert_frame_equal (result , expected )
27
+
28
+ result = df1 .join (df2 , how = 'right' )
29
+ expected = pd .DataFrame ({'a' : [10 , 20 , None ], 'b' : [100 , 200 , 300 ]},
30
+ index = [1 , 2 , 3 ])
31
+ tm .assert_frame_equal (result , expected )
32
+
20
33
result = df1 .join (df2 , how = 'inner' )
21
- expected = pd .DataFrame ({'a' : [20 , 10 ], 'b' : [200 , 100 ]}, index = [2 , 1 ])
22
- self .assert_frame_equal (result , expected )
34
+ expected = pd .DataFrame ({'a' : [20 , 10 ], 'b' : [200 , 100 ]},
35
+ index = [2 , 1 ])
36
+ tm .assert_frame_equal (result , expected )
37
+
38
+ result = df1 .join (df2 , how = 'outer' )
39
+ expected = pd .DataFrame ({'a' : [0 , 10 , 20 , None ],
40
+ 'b' : [None , 100 , 200 , 300 ]},
41
+ index = [0 , 1 , 2 , 3 ])
42
+ tm .assert_frame_equal (result , expected )
23
43
24
44
def test_join_index (self ):
25
45
# left / right
@@ -28,35 +48,35 @@ def test_join_index(self):
28
48
f2 = self .frame .loc [self .frame .index [5 :], ['C' , 'D' ]].iloc [::- 1 ]
29
49
30
50
joined = f .join (f2 )
31
- self .assert_index_equal (f .index , joined .index )
51
+ tm .assert_index_equal (f .index , joined .index )
32
52
expected_columns = pd .Index (['A' , 'B' , 'C' , 'D' ])
33
- self .assert_index_equal (joined .columns , expected_columns )
53
+ tm .assert_index_equal (joined .columns , expected_columns )
34
54
35
55
joined = f .join (f2 , how = 'left' )
36
- self .assert_index_equal (joined .index , f .index )
37
- self .assert_index_equal (joined .columns , expected_columns )
56
+ tm .assert_index_equal (joined .index , f .index )
57
+ tm .assert_index_equal (joined .columns , expected_columns )
38
58
39
59
joined = f .join (f2 , how = 'right' )
40
- self .assert_index_equal (joined .index , f2 .index )
41
- self .assert_index_equal (joined .columns , expected_columns )
60
+ tm .assert_index_equal (joined .index , f2 .index )
61
+ tm .assert_index_equal (joined .columns , expected_columns )
42
62
43
63
# inner
44
64
45
65
joined = f .join (f2 , how = 'inner' )
46
- self .assert_index_equal (joined .index , f .index [5 :10 ])
47
- self .assert_index_equal (joined .columns , expected_columns )
66
+ tm .assert_index_equal (joined .index , f .index [5 :10 ])
67
+ tm .assert_index_equal (joined .columns , expected_columns )
48
68
49
69
# outer
50
70
51
71
joined = f .join (f2 , how = 'outer' )
52
- self .assert_index_equal (joined .index , self .frame .index .sort_values ())
53
- self .assert_index_equal (joined .columns , expected_columns )
72
+ tm .assert_index_equal (joined .index , self .frame .index .sort_values ())
73
+ tm .assert_index_equal (joined .columns , expected_columns )
54
74
55
- assertRaisesRegexp (ValueError , 'join method' , f .join , f2 , how = 'foo' )
75
+ tm . assertRaisesRegexp (ValueError , 'join method' , f .join , f2 , how = 'foo' )
56
76
57
77
# corner case - overlapping columns
58
78
for how in ('outer' , 'left' , 'inner' ):
59
- with assertRaisesRegexp (ValueError , 'columns overlap but '
79
+ with tm . assertRaisesRegexp (ValueError , 'columns overlap but '
60
80
'no suffix' ):
61
81
self .frame .join (self .frame , how = how )
62
82
@@ -69,24 +89,24 @@ def test_join_index_more(self):
69
89
expected ['D' ] = self .frame ['D' ][::2 ]
70
90
71
91
result = af .join (bf )
72
- assert_frame_equal (result , expected )
92
+ tm . assert_frame_equal (result , expected )
73
93
74
94
result = af .join (bf , how = 'right' )
75
- assert_frame_equal (result , expected [::2 ])
95
+ tm . assert_frame_equal (result , expected [::2 ])
76
96
77
97
result = bf .join (af , how = 'right' )
78
- assert_frame_equal (result , expected .loc [:, result .columns ])
98
+ tm . assert_frame_equal (result , expected .loc [:, result .columns ])
79
99
80
100
def test_join_index_series (self ):
81
101
df = self .frame .copy ()
82
102
s = df .pop (self .frame .columns [- 1 ])
83
103
joined = df .join (s )
84
104
85
105
# TODO should this check_names ?
86
- assert_frame_equal (joined , self .frame , check_names = False )
106
+ tm . assert_frame_equal (joined , self .frame , check_names = False )
87
107
88
108
s .name = None
89
- assertRaisesRegexp (ValueError , 'must have a name' , df .join , s )
109
+ tm . assertRaisesRegexp (ValueError , 'must have a name' , df .join , s )
90
110
91
111
def test_join_overlap (self ):
92
112
df1 = self .frame .loc [:, ['A' , 'B' , 'C' ]]
@@ -100,4 +120,4 @@ def test_join_overlap(self):
100
120
expected = df1_suf .join (df2_suf ).join (no_overlap )
101
121
102
122
# column order not necessarily sorted
103
- assert_frame_equal (joined , expected .loc [:, joined .columns ])
123
+ tm . assert_frame_equal (joined , expected .loc [:, joined .columns ])
0 commit comments