Skip to content

Commit 1ed76de

Browse files
committed
BUG: Don't mutate DataFrame.from_records columns
1 parent d4382cb commit 1ed76de

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
@@ -1798,6 +1798,16 @@ def test_from_records_nones(self):
17981798
df = DataFrame.from_records(tuples, columns=['a', 'b', 'c', 'd'])
17991799
self.assert_(np.isnan(df['c'][0]))
18001800

1801+
def test_from_records_columns_not_modified(self):
1802+
tuples = [(1, 2, 3),
1803+
(1, 2, 3),
1804+
(2, 5, 3)]
1805+
1806+
columns = ['a', 'b', 'c']
1807+
original_columns = list(columns)
1808+
df = DataFrame.from_records(tuples, columns=columns, index='a')
1809+
self.assertEqual(columns, original_columns)
1810+
18011811
def test_from_records_decimal(self):
18021812
from decimal import Decimal
18031813

0 commit comments

Comments
 (0)