Skip to content

Commit 3e7292c

Browse files
author
Tom Augspurger
committed
Merge pull request #8043 from TomAugspurger/stack-datetime
BUG: stack with datetimes
2 parents 14ac5df + 9c44192 commit 3e7292c

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

doc/source/v0.15.0.txt

+1-2
Original file line numberDiff line numberDiff line change
@@ -549,8 +549,7 @@ Bug Fixes
549549
- Bug in ``read_html`` where ``bytes`` objects were not tested for in
550550
``_read`` (:issue:`7927`).
551551

552-
553-
552+
- Bug in ``DataFrame.stack()`` when one of the column levels was a datelike (:issue: `8039`)
554553

555554

556555

pandas/core/reshape.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ def _stack_multi_columns(frame, level=-1, dropna=True):
601601
# tuple list excluding level for grouping columns
602602
if len(frame.columns.levels) > 2:
603603
tuples = list(zip(*[
604-
lev.values.take(lab) for lev, lab in
604+
lev.take(lab) for lev, lab in
605605
zip(this.columns.levels[:-1], this.columns.labels[:-1])
606606
]))
607607
unique_groups = [key for key, _ in itertools.groupby(tuples)]

pandas/tests/test_frame.py

+11
Original file line numberDiff line numberDiff line change
@@ -11857,6 +11857,17 @@ def test_unstack_non_unique_index_names(self):
1185711857
with tm.assertRaises(ValueError):
1185811858
df.T.stack('c1')
1185911859

11860+
def test_stack_datetime_column_multiIndex(self):
11861+
# GH 8039
11862+
t = datetime(2014, 1, 1)
11863+
df = DataFrame([1, 2, 3, 4], columns=MultiIndex.from_tuples([(t, 'A', 'B')]))
11864+
result = df.stack()
11865+
11866+
eidx = MultiIndex.from_product([(0, 1, 2, 3), ('B',)])
11867+
ecols = MultiIndex.from_tuples([(t, 'A')])
11868+
expected = DataFrame([1, 2, 3, 4], index=eidx, columns=ecols)
11869+
assert_frame_equal(result, expected)
11870+
1186011871
def test_repr_with_mi_nat(self):
1186111872
df = DataFrame({'X': [1, 2]},
1186211873
index=[[pd.NaT, pd.Timestamp('20130101')], ['a', 'b']])

0 commit comments

Comments
 (0)