Skip to content

Commit 9cac5a9

Browse files
h-vetinarijreback
authored andcommitted
CLN: Use ABCs in set_index (pandas-dev#25128)
1 parent 2d8f0ab commit 9cac5a9

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

pandas/core/frame.py

+11-17
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
is_iterator,
7272
is_sequence,
7373
is_named_tuple)
74-
from pandas.core.dtypes.generic import ABCSeries, ABCIndexClass
74+
from pandas.core.dtypes.generic import ABCSeries, ABCIndexClass, ABCMultiIndex
7575
from pandas.core.dtypes.missing import isna, notna
7676

7777
from pandas.core import algorithms
@@ -4166,37 +4166,31 @@ def set_index(self, keys, drop=True, append=False, inplace=False,
41664166
names = []
41674167
if append:
41684168
names = [x for x in self.index.names]
4169-
if isinstance(self.index, MultiIndex):
4169+
if isinstance(self.index, ABCMultiIndex):
41704170
for i in range(self.index.nlevels):
41714171
arrays.append(self.index._get_level_values(i))
41724172
else:
41734173
arrays.append(self.index)
41744174

41754175
to_remove = []
41764176
for col in keys:
4177-
if isinstance(col, MultiIndex):
4178-
# append all but the last column so we don't have to modify
4179-
# the end of this loop
4180-
for n in range(col.nlevels - 1):
4177+
if isinstance(col, ABCMultiIndex):
4178+
for n in range(col.nlevels):
41814179
arrays.append(col._get_level_values(n))
4182-
4183-
level = col._get_level_values(col.nlevels - 1)
41844180
names.extend(col.names)
4185-
elif isinstance(col, Series):
4186-
level = col._values
4187-
names.append(col.name)
4188-
elif isinstance(col, Index):
4189-
level = col
4181+
elif isinstance(col, (ABCIndexClass, ABCSeries)):
4182+
# if Index then not MultiIndex (treated above)
4183+
arrays.append(col)
41904184
names.append(col.name)
4191-
elif isinstance(col, (list, np.ndarray, Index)):
4192-
level = col
4185+
elif isinstance(col, (list, np.ndarray)):
4186+
arrays.append(col)
41934187
names.append(None)
4188+
# from here, col can only be a column label
41944189
else:
4195-
level = frame[col]._values
4190+
arrays.append(frame[col]._values)
41964191
names.append(col)
41974192
if drop:
41984193
to_remove.append(col)
4199-
arrays.append(level)
42004194

42014195
index = ensure_index_from_sequences(arrays, names)
42024196

0 commit comments

Comments
 (0)