Skip to content

Commit 442b7ee

Browse files
committed
Merge pull request #4460 from Komnomnomnom/frame-dupe-cols
BUG: values array for non-unique, interleaved cols incorrect
2 parents 5d922b7 + c73909e commit 442b7ee

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

pandas/core/internals.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1546,15 +1546,16 @@ def _interleave(self, items):
15461546
result[indexer] = block.get_values(dtype)
15471547
itemmask[indexer] = 1
15481548

1549-
if not itemmask.all():
1550-
raise AssertionError('Some items were not contained in blocks')
1551-
15521549
else:
15531550

15541551
# non-unique, must use ref_locs
15551552
rl = self._set_ref_locs()
15561553
for i, (block, idx) in enumerate(rl):
1557-
result[i] = block.iget(idx)
1554+
result[i] = block.get_values(dtype)[idx]
1555+
itemmask[i] = 1
1556+
1557+
if not itemmask.all():
1558+
raise AssertionError('Some items were not contained in blocks')
15581559

15591560
return result
15601561

pandas/tests/test_internals.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,17 @@ def test_xs(self):
457457
def test_interleave(self):
458458
pass
459459

460+
def test_interleave_non_unique_cols(self):
461+
df = DataFrame([
462+
[Timestamp('20130101'), 3.5],
463+
[Timestamp('20130102'), 4.5]],
464+
columns=['x', 'x'],
465+
index=[1, 2])
466+
467+
df_unique = df.copy()
468+
df_unique.columns = ['x', 'y']
469+
np.testing.assert_array_equal(df_unique.values, df.values)
470+
460471
def test_consolidate(self):
461472
pass
462473

0 commit comments

Comments
 (0)