Skip to content

Commit c0fb29c

Browse files
committed
BUG: fix subtle bug in maybe_convert_objects causing indexes to be mutated, test coverage, fix #766
1 parent ca41260 commit c0fb29c

File tree

4 files changed

+16
-8
lines changed

4 files changed

+16
-8
lines changed

pandas/core/frame.py

+3-7
Original file line numberDiff line numberDiff line change
@@ -2943,13 +2943,9 @@ def _apply_standard(self, func, axis, ignore_failures=False):
29432943
for k, v in series_gen:
29442944
results[k] = func(v)
29452945
except Exception, e:
2946-
try:
2947-
if hasattr(e, 'args'):
2948-
e.args = e.args + ('occurred at index %s' % str(k),)
2949-
except UnboundLocalError:
2950-
raise e
2951-
else:
2952-
raise
2946+
if hasattr(e, 'args'):
2947+
e.args = e.args + ('occurred at index %s' % str(k),)
2948+
raise
29532949

29542950
if len(results) > 0 and _is_sequence(results.values()[0]):
29552951
if not isinstance(results.values()[0], Series):

pandas/src/inference.pyx

-1
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,6 @@ def maybe_convert_objects(ndarray[object] objects, bint try_float=0):
258258

259259
if val is None:
260260
seen_null = 1
261-
objects[i] = onan
262261
floats[i] = fnan
263262
elif util.is_bool_object(val):
264263
seen_bool = 1

pandas/tests/test_frame.py

+6
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,12 @@ def test_setitem_clear_caches(self):
351351
self.assert_(df['z'] is not foo)
352352
assert_series_equal(df['z'], expected)
353353

354+
def test_setitem_None(self):
355+
# GH #766
356+
self.frame[None] = self.frame['A']
357+
assert_series_equal(self.frame[None], self.frame['A'])
358+
repr(self.frame)
359+
354360
def test_delitem_corner(self):
355361
f = self.frame.copy()
356362
del f['D']

pandas/tests/test_index.py

+7
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,13 @@ def test_format_datetime_with_time(self):
301301
self.assert_(len(result) == 2)
302302
self.assertEquals(result, expected)
303303

304+
def test_format_none(self):
305+
values = ['a', 'b', 'c', None]
306+
307+
idx = Index(values)
308+
idx.format()
309+
self.assert_(idx[3] is None)
310+
304311
def test_take(self):
305312
indexer = [4, 3, 0, 2]
306313
result = self.dateIndex.take(indexer)

0 commit comments

Comments
 (0)