Skip to content

Commit 66e24a1

Browse files
committed
core/frame
1 parent a7bbf67 commit 66e24a1

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

pandas/core/frame.py

+16-1
Original file line numberDiff line numberDiff line change
@@ -3973,10 +3973,25 @@ def set_index(self, keys, drop=True, append=False, inplace=False,
39733973
-------
39743974
dataframe : DataFrame
39753975
"""
3976-
inplace = validate_bool_kwarg(inplace, 'inplace')
3976+
from pandas import Series
3977+
39773978
if not isinstance(keys, list):
39783979
keys = [keys]
39793980

3981+
col_labels = [x for x in keys
3982+
if not isinstance(x, (Series, Index, MultiIndex,
3983+
list, np.ndarray))]
3984+
if any(x not in self for x in col_labels):
3985+
missing = [x for x in col_labels if x not in self]
3986+
raise KeyError('{}'.format(missing))
3987+
elif len(set(col_labels)) < len(col_labels):
3988+
dup = Series(col_labels)
3989+
dup = list(dup.loc[dup.duplicated()])
3990+
raise ValueError('Passed duplicate column names '
3991+
'to keys: {dup}'.format(dup=dup))
3992+
3993+
inplace = validate_bool_kwarg(inplace, 'inplace')
3994+
39803995
if inplace:
39813996
frame = self
39823997
else:

0 commit comments

Comments
 (0)