Skip to content

Commit 61793b6

Browse files
committed
REF: DataFrame inplace methods return None also. #1893
1 parent 36043e8 commit 61793b6

File tree

3 files changed

+59
-42
lines changed

3 files changed

+59
-42
lines changed

pandas/core/frame.py

+14-19
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,8 @@ def __unicode__(self):
643643
"""
644644
Return a string representation for a particular DataFrame
645645
646-
Invoked by unicode(df) in py2 only. Yields a Unicode String in both py2/py3.
646+
Invoked by unicode(df) in py2 only. Yields a Unicode String in both
647+
py2/py3.
647648
"""
648649
buf = StringIO(u"")
649650
if self._need_info_repr_():
@@ -2717,7 +2718,7 @@ def set_index(self, keys, drop=True, append=False, inplace=False,
27172718
index._cleanup()
27182719

27192720
frame.index = index
2720-
return frame
2721+
return frame if not inplace else None
27212722

27222723
def reset_index(self, level=None, drop=False, inplace=False, col_level=0,
27232724
col_fill=''):
@@ -2813,7 +2814,7 @@ def _maybe_cast(values):
28132814
new_obj.insert(0, name, _maybe_cast(values))
28142815

28152816
new_obj.index = new_index
2816-
return new_obj
2817+
return new_obj if not inplace else None
28172818

28182819
delevel = deprecate('delevel', reset_index)
28192820

@@ -2971,7 +2972,6 @@ def drop_duplicates(self, cols=None, take_last=False, inplace=False):
29712972
inds, = (-duplicated).nonzero()
29722973
self._data = self._data.take(inds)
29732974
self._clear_item_cache()
2974-
return self
29752975
else:
29762976
return self[-duplicated]
29772977

@@ -3113,7 +3113,6 @@ def sort_index(self, axis=0, by=None, ascending=True, inplace=False):
31133113
self._data = self._data.take(indexer)
31143114

31153115
self._clear_item_cache()
3116-
return self
31173116
else:
31183117
return self.take(indexer, axis=axis)
31193118

@@ -3155,7 +3154,6 @@ def sortlevel(self, level=0, axis=0, ascending=True, inplace=False):
31553154
self._data = self._data.take(indexer)
31563155

31573156
self._clear_item_cache()
3158-
return self
31593157
else:
31603158
return self.take(indexer, axis=axis)
31613159

@@ -3283,7 +3281,6 @@ def fillna(self, value=None, method=None, axis=0, inplace=False,
32833281

32843282
if inplace:
32853283
self._data = new_data
3286-
return self
32873284
else:
32883285
return self._constructor(new_data)
32893286

@@ -3363,7 +3360,7 @@ def replace(self, to_replace, value=None, method='pad', axis=0,
33633360

33643361
if inplace:
33653362
self._data = new_data
3366-
return self
3363+
return None
33673364
else:
33683365
return self._constructor(new_data)
33693366
else:
@@ -3374,7 +3371,7 @@ def replace(self, to_replace, value=None, method='pad', axis=0,
33743371
inplace=inplace)
33753372
if inplace:
33763373
self._data = new_data
3377-
return self
3374+
return None
33783375
else:
33793376
return self._constructor(new_data)
33803377

@@ -3397,7 +3394,7 @@ def _interpolate(self, to_replace, method, axis, inplace, limit):
33973394
if k in rs:
33983395
rs[k].replace(v, method=method, limit=limit,
33993396
inplace=True)
3400-
return rs
3397+
return rs if not inplace else None
34013398

34023399
else:
34033400
new_blocks = []
@@ -3410,7 +3407,6 @@ def _interpolate(self, to_replace, method, axis, inplace, limit):
34103407

34113408
if inplace:
34123409
self._data = new_data
3413-
return self
34143410
else:
34153411
return self._constructor(new_data)
34163412

@@ -3419,21 +3415,21 @@ def _replace_dest_dict(self, to_replace, value, inplace):
34193415
for k, v in value.iteritems():
34203416
if k in rs:
34213417
rs[k].replace(to_replace, v, inplace=True)
3422-
return rs
3418+
return rs if not inplace else None
34233419

34243420
def _replace_src_dict(self, to_replace, value, inplace):
34253421
rs = self if inplace else self.copy()
34263422
for k, src in to_replace.iteritems():
34273423
if k in rs:
34283424
rs[k].replace(src, value, inplace=True)
3429-
return rs
3425+
return rs if not inplace else None
34303426

34313427
def _replace_both_dict(self, to_replace, value, inplace):
34323428
rs = self if inplace else self.copy()
34333429
for c, src in to_replace.iteritems():
34343430
if c in value and c in rs:
34353431
rs[c].replace(src, value[c], inplace=True)
3436-
return rs
3432+
return rs if not inplace else None
34373433

34383434
#----------------------------------------------------------------------
34393435
# Rename
@@ -3482,7 +3478,7 @@ def rename(self, index=None, columns=None, copy=True, inplace=False):
34823478
if columns is not None:
34833479
result._rename_columns_inplace(columns_f)
34843480

3485-
return result
3481+
return result if not inplace else None
34863482

34873483
def _rename_index_inplace(self, mapper):
34883484
self._data = self._data.rename_axis(mapper, axis=1)
@@ -5142,10 +5138,9 @@ def where(self, cond, other=NA, inplace=False):
51425138

51435139
if inplace:
51445140
np.putmask(self.values, cond, other)
5145-
return self
5146-
5147-
rs = np.where(cond, self, other)
5148-
return self._constructor(rs, self.index, self.columns)
5141+
else:
5142+
rs = np.where(cond, self, other)
5143+
return self._constructor(rs, self.index, self.columns)
51495144

51505145
def mask(self, cond):
51515146
"""

pandas/core/generic.py

-1
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,6 @@ def consolidate(self, inplace=False):
623623
"""
624624
if inplace:
625625
self._consolidate_inplace()
626-
return self
627626
else:
628627
cons_data = self._data.consolidate()
629628
if cons_data is self._data:

pandas/tests/test_frame.py

+45-22
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,9 @@ def test_ix_frame_align(self):
771771
out = b.ix[:3]
772772
assert_frame_equal(out, b)
773773

774-
b.sort_index(inplace=True)
774+
res = b.sort_index(inplace=True)
775+
self.assertTrue(res is None)
776+
775777
df = df_orig.copy()
776778
df.ix[[0, 1, 2]] = b
777779
out = df.ix[[0, 1, 2]].reindex(b.index)
@@ -1580,11 +1582,16 @@ def test_set_index2(self):
15801582

15811583
# inplace, single
15821584
df2 = df.copy()
1583-
df2.set_index('C', inplace=True)
1585+
1586+
res = df2.set_index('C', inplace=True)
1587+
self.assertTrue(res is None)
1588+
15841589
assert_frame_equal(df2, expected)
15851590

15861591
df3 = df.copy()
1587-
df3.set_index('C', drop=False, inplace=True)
1592+
res = df3.set_index('C', drop=False, inplace=True)
1593+
self.assertTrue(res is None)
1594+
15881595
assert_frame_equal(df3, expected_nodrop)
15891596

15901597
# create new object, multi-column
@@ -4478,7 +4485,9 @@ def test_drop_duplicates_inplace(self):
44784485

44794486
# single column
44804487
df = orig.copy()
4481-
df.drop_duplicates('A', inplace=True)
4488+
res = df.drop_duplicates('A', inplace=True)
4489+
self.assertTrue(res is None)
4490+
44824491
expected = orig[:2]
44834492
result = df
44844493
assert_frame_equal(result, expected)
@@ -4491,7 +4500,8 @@ def test_drop_duplicates_inplace(self):
44914500

44924501
# multi column
44934502
df = orig.copy()
4494-
df.drop_duplicates(['A', 'B'], inplace=True)
4503+
res = df.drop_duplicates(['A', 'B'], inplace=True)
4504+
self.assertTrue(res is None)
44954505
expected = orig.ix[[0, 1, 2, 3]]
44964506
result = df
44974507
assert_frame_equal(result, expected)
@@ -4581,18 +4591,18 @@ def test_fillna_inplace(self):
45814591
expected = df.fillna(value=0)
45824592
self.assert_(expected is not df)
45834593

4584-
df2 = df.fillna(value=0, inplace=True)
4585-
self.assert_(df2 is df)
4586-
assert_frame_equal(df2, expected)
4594+
res = df.fillna(value=0, inplace=True)
4595+
self.assert_(res is None)
4596+
assert_frame_equal(df, expected)
45874597

45884598
df[1][:4] = np.nan
45894599
df[3][-4:] = np.nan
45904600
expected = df.fillna(method='ffill')
45914601
self.assert_(expected is not df)
45924602

4593-
df2 = df.fillna(method='ffill', inplace=True)
4594-
self.assert_(df2 is df)
4595-
assert_frame_equal(df2, expected)
4603+
res = df.fillna(method='ffill', inplace=True)
4604+
self.assert_(res is None)
4605+
assert_frame_equal(df, expected)
45964606

45974607
def test_fillna_dict_series(self):
45984608
df = DataFrame({'a': [nan, 1, 2, nan, nan],
@@ -4641,11 +4651,13 @@ def test_replace_inplace(self):
46414651
self.tsframe['A'][-5:] = nan
46424652

46434653
tsframe = self.tsframe.copy()
4644-
tsframe.replace(nan, 0, inplace=True)
4654+
res = tsframe.replace(nan, 0, inplace=True)
4655+
self.assertTrue(res is None)
46454656
assert_frame_equal(tsframe, self.tsframe.fillna(0))
46464657

46474658
tsframe = self.tsframe.copy()
4648-
tsframe.replace(nan, method='pad', inplace=True)
4659+
res = tsframe.replace(nan, method='pad', inplace=True)
4660+
self.assertTrue(res is None)
46494661
assert_frame_equal(tsframe, self.tsframe.fillna(method='pad'))
46504662

46514663
# mixed type
@@ -4657,7 +4669,8 @@ def test_replace_inplace(self):
46574669
assert_frame_equal(result, expected)
46584670

46594671
tsframe = self.tsframe.copy()
4660-
tsframe.replace([nan], [0], inplace=True)
4672+
res = tsframe.replace([nan], [0], inplace=True)
4673+
self.assertTrue(res is None)
46614674
assert_frame_equal(tsframe, self.tsframe.fillna(0))
46624675

46634676
def test_replace(self):
@@ -5336,7 +5349,8 @@ def test_where(self):
53365349
df = DataFrame(np.random.randn(5, 3))
53375350

53385351
expected = df.mask(df < 0)
5339-
df.where(df >= 0, np.nan, inplace=True)
5352+
res = df.where(df >= 0, np.nan, inplace=True)
5353+
self.assertTrue(res is None)
53405354
assert_frame_equal(df, expected)
53415355

53425356
def test_mask(self):
@@ -5430,7 +5444,10 @@ def test_rename_inplace(self):
54305444

54315445
c_id = id(self.frame['C'])
54325446
frame = self.frame.copy()
5433-
frame.rename(columns={'C' : 'foo'}, inplace=True)
5447+
res = frame.rename(columns={'C' : 'foo'}, inplace=True)
5448+
5449+
self.assertTrue(res is None)
5450+
54345451
self.assert_('C' not in frame)
54355452
self.assert_('foo' in frame)
54365453
self.assert_(id(frame['foo']) != c_id)
@@ -5990,7 +6007,8 @@ def test_sort_index_inplace(self):
59906007
unordered = frame.ix[[3, 2, 4, 1]]
59916008
a_id = id(unordered['A'])
59926009
df = unordered.copy()
5993-
df.sort_index(inplace=True)
6010+
res = df.sort_index(inplace=True)
6011+
self.assertTrue(res is None)
59946012
expected = frame
59956013
assert_frame_equal(df, expected)
59966014
self.assert_(a_id != id(df['A']))
@@ -6008,7 +6026,8 @@ def test_sort_index_inplace(self):
60086026
assert_frame_equal(df, expected)
60096027

60106028
df = unordered.copy()
6011-
df.sort_index(axis=1, ascending=False, inplace=True)
6029+
res = df.sort_index(axis=1, ascending=False, inplace=True)
6030+
self.assertTrue(res is None)
60126031
expected = frame.ix[:, ::-1]
60136032
assert_frame_equal(df, expected)
60146033

@@ -6046,7 +6065,8 @@ def test_sort_inplace(self):
60466065
columns=['A', 'B', 'C', 'D'])
60476066

60486067
sorted_df = frame.copy()
6049-
sorted_df.sort(columns='A', inplace=True)
6068+
res = sorted_df.sort(columns='A', inplace=True)
6069+
self.assertTrue(res is None)
60506070
expected = frame.sort_index(by='A')
60516071
assert_frame_equal(sorted_df, expected)
60526072

@@ -6056,7 +6076,8 @@ def test_sort_inplace(self):
60566076
assert_frame_equal(sorted_df, expected)
60576077

60586078
sorted_df = frame.copy()
6059-
sorted_df.sort(columns=['A', 'B'], ascending=False, inplace=True)
6079+
res = sorted_df.sort(columns=['A', 'B'], ascending=False, inplace=True)
6080+
self.assertTrue(res is None)
60606081
expected = frame.sort_index(by=['A', 'B'], ascending=False)
60616082
assert_frame_equal(sorted_df, expected)
60626083

@@ -7126,7 +7147,8 @@ def test_reset_index(self):
71267147
#test resetting in place
71277148
df = self.frame.copy()
71287149
resetted = self.frame.reset_index()
7129-
df.reset_index(inplace=True)
7150+
res = df.reset_index(inplace=True)
7151+
self.assertTrue(res is None)
71307152
assert_frame_equal(df, resetted)
71317153

71327154
frame = self.frame.reset_index().set_index(['index', 'A', 'B'])
@@ -7251,7 +7273,8 @@ def test_consolidate(self):
72517273

72527274
self.frame['F'] = 8.
72537275
self.assert_(len(self.frame._data.blocks) == 3)
7254-
self.frame.consolidate(inplace=True)
7276+
res = self.frame.consolidate(inplace=True)
7277+
self.assertTrue(res is None)
72557278
self.assert_(len(self.frame._data.blocks) == 1)
72567279

72577280
def test_consolidate_inplace(self):

0 commit comments

Comments
 (0)