Skip to content

Commit 7708804

Browse files
committed
BUG: closes issue #7212 - side effect on passed columns list
1 parent 9b04bd0 commit 7708804

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

pandas/io/pytables.py

+4
Original file line numberDiff line numberDiff line change
@@ -3453,6 +3453,10 @@ def get_blk_items(mgr, blocks):
34533453
def process_axes(self, obj, columns=None):
34543454
""" process axes filters """
34553455

3456+
# make a copy to avoid side effects
3457+
if columns is not None:
3458+
columns = list(columns)
3459+
34563460
# make sure to include levels if we have them
34573461
if columns is not None and self.is_multi_index:
34583462
for n in self.levels:

pandas/io/tests/test_pytables.py

+19
Original file line numberDiff line numberDiff line change
@@ -4617,6 +4617,25 @@ def test_preserve_timedeltaindex_type(self):
46174617
store['df'] = df
46184618
assert_frame_equal(store['df'], df)
46194619

4620+
def test_colums_multiindex_modified(self):
4621+
df = DataFrame(np.random.rand(4, 5),
4622+
index=list('abcd'),
4623+
columns=list('ABCDE'))
4624+
df.index.name = 'letters'
4625+
df = df.set_index(keys='E', append=True)
4626+
4627+
data_columns = df.index.names+df.columns.tolist()
4628+
with ensure_clean_path(self.path) as path:
4629+
df.to_hdf(path, 'df',
4630+
mode='a',
4631+
append=True,
4632+
data_columns=data_columns,
4633+
index=False)
4634+
cols2load = list('BCD')
4635+
cols2load_original = list(cols2load)
4636+
df_loaded = read_hdf(path, 'df', columns=cols2load)
4637+
self.assertTrue(cols2load_original == cols2load)
4638+
46204639

46214640
def _test_sort(obj):
46224641
if isinstance(obj, DataFrame):

0 commit comments

Comments
 (0)