Skip to content

Commit f1a10df

Browse files
committed
BUG: workaround for pandas-dev#18485
1 parent cd13cb0 commit f1a10df

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
a_values = np.empty(len(values), dtype='object')
205212
# Avoid interpreting list-like elements as 2nd dimension:
206213
for idx, v in enumerate(values):
@@ -219,7 +226,14 @@ def __init__(self, data=None, index=None, dtype=None, name=None,
219226
order = np.arange(len(keys))
220227
index = keys[order]
221228
else:
222-
locs = index.get_indexer(keys)
229+
# Workaround for #18485 - part 2/3
230+
remap_to_mi = False
231+
232+
def _flatten(idx):
233+
if isinstance(idx, MultiIndex):
234+
return Index(list(idx), tupleize_cols=False)
235+
return idx
236+
locs = _flatten(index).get_indexer(keys)
223237
order = - np.ones(len(index), dtype=int)
224238
order[locs] = np.arange(len(keys))
225239
data = values[order]
@@ -228,6 +242,9 @@ def __init__(self, data=None, index=None, dtype=None, name=None,
228242
if is_integer_dtype(data):
229243
data = data.astype(float)
230244
data[nan_idxs] = np.nan
245+
# Workaround for #18485 - part 3/3
246+
if remap_to_mi:
247+
index = Index(list(index), tupleize_cols=True)
231248
if any([is_list_like(item) for item in data]):
232249
data = list(data)
233250
else:

0 commit comments

Comments
 (0)