From 04daf4d3b21919f2469f7603bbe7411aee68ee86 Mon Sep 17 00:00:00 2001 From: Erik Date: Mon, 19 Nov 2018 18:00:06 -0800 Subject: [PATCH] TST: For GH4861, Period and datetime in multiindex (#23776) --- pandas/tests/indexing/test_multiindex.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pandas/tests/indexing/test_multiindex.py b/pandas/tests/indexing/test_multiindex.py index ea17844a750332..f4caf17b60d659 100644 --- a/pandas/tests/indexing/test_multiindex.py +++ b/pandas/tests/indexing/test_multiindex.py @@ -1,3 +1,4 @@ +from datetime import datetime from warnings import catch_warnings import numpy as np @@ -7,7 +8,8 @@ import pandas as pd from pandas import ( - DataFrame, Index, MultiIndex, Panel, Series, Timestamp, date_range) + DataFrame, Index, MultiIndex, Panel, Period, Series, Timestamp, date_range, + period_range) from pandas.tests.indexing.common import _mklbl from pandas.util import testing as tm @@ -1340,3 +1342,20 @@ def test_panel_setitem_with_multiindex(self): p5.iloc[0, :, 0] = [1, 2] expected = Panel(arr, **axes) tm.assert_panel_equal(p5, expected) + + +def test_multiindex_period_datetime(): + # GH4861, using datetime in period of multiindex raises exception + + idx1 = Index(['a', 'a', 'a', 'b', 'b']) + idx2 = period_range('2012-01', periods=len(idx1), freq='M') + s = Series(np.random.randn(len(idx1)), [idx1, idx2]) + + # try Period as index + expected = s.iloc[0] + result = s.loc['a', Period('2012-01')] + assert result == expected + + # try datetime as index + result = s.loc['a', datetime(2012, 1, 1)] + assert result == expected