Skip to content

Commit a75c89e

Browse files
committed
BUG: workaround for pandas-dev#18485
1 parent 04fb7a2 commit a75c89e

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

pandas/core/series.py

+19-2
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,14 @@ def __init__(self, data=None, index=None, dtype=None, name=None,
200200
elif isinstance(data, dict):
201201
if data:
202202
keys, values = zip(*compat.iteritems(data))
203-
keys = Index(list(keys), tupleize_cols=True)
203+
# Workaround for #18485 - part 1/3
204+
maybe_mi_keys = Index(list(keys), tupleize_cols=True)
205+
if isinstance(maybe_mi_keys, MultiIndex):
206+
remap_to_mi = True
207+
keys = Index(list(keys), tupleize_cols=False)
208+
else:
209+
remap_to_mi = False
210+
keys = maybe_mi_keys
204211
values = np.asarray(values, dtype='object')
205212
try:
206213
values = lib.maybe_convert_objects(values)
@@ -216,7 +223,14 @@ def __init__(self, data=None, index=None, dtype=None, name=None,
216223
order = np.arange(len(keys))
217224
index = keys[order]
218225
else:
219-
locs = index.get_indexer(keys)
226+
# Workaround for #18485 - part 2/3
227+
remap_to_mi = False
228+
229+
def _flatten(idx):
230+
if isinstance(idx, MultiIndex):
231+
return Index(list(idx), tupleize_cols=False)
232+
return idx
233+
locs = _flatten(index).get_indexer(keys)
220234
order = - np.ones(len(index), dtype=int)
221235
order[locs] = np.arange(len(keys))
222236
data = values[order]
@@ -225,6 +239,9 @@ def __init__(self, data=None, index=None, dtype=None, name=None,
225239
if is_integer_dtype(data):
226240
data = data.astype(float)
227241
data[nan_idxs] = np.nan
242+
# Workaround for #18485 - part 3/3
243+
if remap_to_mi:
244+
index = Index(list(index), tupleize_cols=True)
228245
else:
229246
if index is None:
230247
index = Index([])

0 commit comments

Comments
 (0)