@@ -5564,27 +5564,27 @@ def test_to_csv_from_csv(self):
5564
5564
with ensure_clean(pname) as path:
5565
5565
5566
5566
self.frame['A'][:5] = nan
5567
-
5567
+
5568
5568
self.frame.to_csv(path)
5569
5569
self.frame.to_csv(path, columns=['A', 'B'])
5570
5570
self.frame.to_csv(path, header=False)
5571
5571
self.frame.to_csv(path, index=False)
5572
-
5572
+
5573
5573
# test roundtrip
5574
5574
self.tsframe.to_csv(path)
5575
5575
recons = DataFrame.from_csv(path)
5576
-
5576
+
5577
5577
assert_frame_equal(self.tsframe, recons)
5578
-
5578
+
5579
5579
self.tsframe.to_csv(path, index_label='index')
5580
5580
recons = DataFrame.from_csv(path, index_col=None)
5581
5581
assert(len(recons.columns) == len(self.tsframe.columns) + 1)
5582
-
5582
+
5583
5583
# no index
5584
5584
self.tsframe.to_csv(path, index=False)
5585
5585
recons = DataFrame.from_csv(path, index_col=None)
5586
5586
assert_almost_equal(self.tsframe.values, recons.values)
5587
-
5587
+
5588
5588
# corner case
5589
5589
dm = DataFrame({'s1': Series(lrange(3), lrange(3)),
5590
5590
's2': Series(lrange(2), lrange(2))})
@@ -5600,24 +5600,24 @@ def test_to_csv_from_csv(self):
5600
5600
df.to_csv(path)
5601
5601
result = DataFrame.from_csv(path)
5602
5602
assert_frame_equal(result, df)
5603
-
5603
+
5604
5604
midx = MultiIndex.from_tuples([('A', 1, 2), ('A', 1, 2), ('B', 1, 2)])
5605
5605
df = DataFrame(np.random.randn(3, 3), index=midx,
5606
5606
columns=['x', 'y', 'z'])
5607
5607
df.to_csv(path)
5608
5608
result = DataFrame.from_csv(path, index_col=[0, 1, 2],
5609
5609
parse_dates=False)
5610
5610
assert_frame_equal(result, df, check_names=False) # TODO from_csv names index ['Unnamed: 1', 'Unnamed: 2'] should it ?
5611
-
5611
+
5612
5612
# column aliases
5613
5613
col_aliases = Index(['AA', 'X', 'Y', 'Z'])
5614
5614
self.frame2.to_csv(path, header=col_aliases)
5615
5615
rs = DataFrame.from_csv(path)
5616
5616
xp = self.frame2.copy()
5617
5617
xp.columns = col_aliases
5618
-
5618
+
5619
5619
assert_frame_equal(xp, rs)
5620
-
5620
+
5621
5621
self.assertRaises(ValueError, self.frame2.to_csv, path,
5622
5622
header=['AA', 'X'])
5623
5623
@@ -5881,7 +5881,7 @@ def test_to_csv_from_csv_w_some_infs(self):
5881
5881
with ensure_clean() as path:
5882
5882
self.frame.to_csv(path)
5883
5883
recons = DataFrame.from_csv(path)
5884
-
5884
+
5885
5885
assert_frame_equal(self.frame, recons, check_names=False) # TODO to_csv drops column name
5886
5886
assert_frame_equal(np.isinf(self.frame), np.isinf(recons), check_names=False)
5887
5887
@@ -5940,11 +5940,11 @@ def test_to_csv_multiindex(self):
5940
5940
5941
5941
frame.to_csv(path, header=False)
5942
5942
frame.to_csv(path, columns=['A', 'B'])
5943
-
5943
+
5944
5944
# round trip
5945
5945
frame.to_csv(path)
5946
5946
df = DataFrame.from_csv(path, index_col=[0, 1], parse_dates=False)
5947
-
5947
+
5948
5948
assert_frame_equal(frame, df, check_names=False) # TODO to_csv drops column name
5949
5949
self.assertEqual(frame.index.names, df.index.names)
5950
5950
self.frame.index = old_index # needed if setUP becomes a classmethod
@@ -9155,6 +9155,28 @@ def test_where_bug(self):
9155
9155
result.where(result > 2, np.nan, inplace=True)
9156
9156
assert_frame_equal(result, expected)
9157
9157
9158
+ # transpositional issue
9159
+ # GH7506
9160
+ a = DataFrame({ 0 : [1,2], 1 : [3,4], 2 : [5,6]})
9161
+ b = DataFrame({ 0 : [np.nan,8], 1:[9,np.nan], 2:[np.nan,np.nan]})
9162
+ do_not_replace = b.isnull() | (a > b)
9163
+
9164
+ expected = a.copy()
9165
+ expected[~do_not_replace] = b
9166
+
9167
+ result = a.where(do_not_replace,b)
9168
+ assert_frame_equal(result,expected)
9169
+
9170
+ a = DataFrame({ 0 : [4,6], 1 : [1,0]})
9171
+ b = DataFrame({ 0 : [np.nan,3],1:[3,np.nan]})
9172
+ do_not_replace = b.isnull() | (a > b)
9173
+
9174
+ expected = a.copy()
9175
+ expected[~do_not_replace] = b
9176
+
9177
+ result = a.where(do_not_replace,b)
9178
+ assert_frame_equal(result,expected)
9179
+
9158
9180
def test_where_datetime(self):
9159
9181
9160
9182
# GH 3311
0 commit comments