Skip to content

Commit

Permalink
ENH: default name assignment with regular index in reset_index, GH #476
Browse files Browse the repository at this point in the history
  • Loading branch information
wesm committed Dec 29, 2011
1 parent 6b43e41 commit dbdb6e0
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 5 deletions.
2 changes: 2 additions & 0 deletions RELEASE.rst
Expand Up @@ -74,6 +74,8 @@ pandas 0.6.2
- Friendlier error message in setup.py if NumPy not installed
- Use common set of NA-handling operations (sum, mean, etc.) in Panel class
also (GH #536)
- Default name assignment when calling ``reset_index`` on DataFrame with a
regular (non-hierarchical) index (GH #476)

**Bug fixes**

Expand Down
7 changes: 4 additions & 3 deletions pandas/core/frame.py
Expand Up @@ -1644,9 +1644,10 @@ def reset_index(self):
level_values = lib.maybe_convert_objects(level_values)
new_obj.insert(0, col_name, level_values.take(lab))
else:
if self.index.name is None:
raise Exception('Must have name set')
new_obj.insert(0, self.index.name, self.index.values)
name = self.index.name
if name is None:
name = 'index' if 'index' not in self else 'level_0'
new_obj.insert(0, name, self.index.values)
new_obj.index = np.arange(len(new_obj))
return new_obj

Expand Down
11 changes: 9 additions & 2 deletions pandas/tests/test_frame.py
Expand Up @@ -3828,8 +3828,15 @@ def test_reset_index(self):
self.assert_(np.array_equal(deleveled['second'],
deleveled2['level_1']))

# exception if no name
self.assertRaises(Exception, self.frame.reset_index)
# default name assigned
rdf = self.frame.reset_index()
self.assert_(np.array_equal(rdf['index'], self.frame.index.values))

# default name assigned, corner case
df = self.frame.copy()
df['index'] = 'foo'
rdf = df.reset_index()
self.assert_(np.array_equal(rdf['level_0'], self.frame.index.values))

# but this is ok
self.frame.index.name = 'index'
Expand Down

0 comments on commit dbdb6e0

Please sign in to comment.