Skip to content

Commit

Permalink
REF: rename names -> columns + deprec warning in DataFrame.from_recor…
Browse files Browse the repository at this point in the history
…ds, GH #422
  • Loading branch information
wesm committed Dec 12, 2011
1 parent ca6adc6 commit 53ff161
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 8 deletions.
6 changes: 6 additions & 0 deletions RELEASE.rst
Expand Up @@ -27,6 +27,11 @@ pandas 0.6.1

**Release date:** Not yet released

**API Changes**

- Rename `names` argument in DataFrame.from_records to `columns`. Add
deprecation warning

**New features / modules**

- Can pass Series to DataFrame.append with ignore_index=True for appending a
Expand All @@ -44,6 +49,7 @@ pandas 0.6.1
- max_columns / max_rows options in set_printoptions (PR #453)
- Implement Series.rank and DataFrame.rank, fast versions of
scipy.stats.rankdata (GH #428)
- Implement DataFrame.from_items alternate constructor (GH #444)

**Improvements to existing features**

Expand Down
18 changes: 13 additions & 5 deletions pandas/core/frame.py
Expand Up @@ -497,7 +497,8 @@ def to_dict(self):
return dict((k, v.to_dict()) for k, v in self.iteritems())

@classmethod
def from_records(cls, data, index=None, exclude=None, names=None):
def from_records(cls, data, index=None, exclude=None, columns=None,
names=None):
"""
Convert structured or record ndarray to DataFrame
Expand All @@ -509,13 +510,21 @@ def from_records(cls, data, index=None, exclude=None, names=None):
input labels to use
exclude: sequence, default None
Columns or fields to exclude
names : sequence, default None
columns : sequence, default None
Column names to use, replacing any found in passed data
Returns
-------
df : DataFrame
"""
import warnings

if names is not None: # pragma: no cover
columns = names
warnings.warn("'names' parameter to DataFrame.from_records is "
"being renamed to 'columns', 'names' will be "
"removed in 0.8.0", FutureWarning)

if isinstance(data, (np.ndarray, DataFrame, dict)):
columns, sdict = _rec_to_dict(data)
else:
Expand All @@ -525,11 +534,10 @@ def from_records(cls, data, index=None, exclude=None, names=None):
# list of lists
content = list(lib.to_object_array(data).T)

if names is None:
if columns is None:
columns = range(len(content))
else:
assert(len(names) == len(content))
columns = names
assert(len(columns) == len(content))

sdict = dict((c, lib.maybe_convert_objects(vals))
for c, vals in zip(columns, content))
Expand Down
5 changes: 2 additions & 3 deletions pandas/tests/test_frame.py
Expand Up @@ -1302,7 +1302,6 @@ def test_constructor_from_items(self):
recons = DataFrame.from_items(row_items,
columns=self.mixed_frame.columns,
orient='index')
foo
assert_frame_equal(recons, self.mixed_frame)
self.assert_(isinstance(recons['foo'][0], tuple))

Expand Down Expand Up @@ -1381,8 +1380,8 @@ def test_from_records_tuples(self):
tuples = [tuple(x) for x in df.values]
lists = [list(x) for x in tuples]

result = DataFrame.from_records(tuples, names=df.columns)
result2 = DataFrame.from_records(lists, names=df.columns)
result = DataFrame.from_records(tuples, columns=df.columns)
result2 = DataFrame.from_records(lists, columns=df.columns)
assert_frame_equal(result, df)
assert_frame_equal(result2, df)

Expand Down

0 comments on commit 53ff161

Please sign in to comment.