Skip to content

Commit d5bc9b4

Browse files
committed
Merge pull request #975 from kisielk/patch-1
BUG: Don't mutate DataFrame.from_records columns
2 parents bee3b14 + 1ed76de commit d5bc9b4

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

pandas/core/frame.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -678,6 +678,10 @@ def from_records(cls, data, index=None, exclude=None, columns=None,
678678
"""
679679
import warnings
680680

681+
# Make a copy of the input columns so we can modify it
682+
if columns is not None:
683+
columns = list(columns)
684+
681685
if names is not None: # pragma: no cover
682686
columns = names
683687
warnings.warn("'names' parameter to DataFrame.from_records is "

pandas/tests/test_frame.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1804,6 +1804,16 @@ def test_from_records_nones(self):
18041804
df = DataFrame.from_records(tuples, columns=['a', 'b', 'c', 'd'])
18051805
self.assert_(np.isnan(df['c'][0]))
18061806

1807+
def test_from_records_columns_not_modified(self):
1808+
tuples = [(1, 2, 3),
1809+
(1, 2, 3),
1810+
(2, 5, 3)]
1811+
1812+
columns = ['a', 'b', 'c']
1813+
original_columns = list(columns)
1814+
df = DataFrame.from_records(tuples, columns=columns, index='a')
1815+
self.assertEqual(columns, original_columns)
1816+
18071817
def test_from_records_decimal(self):
18081818
from decimal import Decimal
18091819

0 commit comments

Comments
 (0)