Skip to content

Commit 579af63

Browse files
committed
core/frame
1 parent 073e30d commit 579af63

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

pandas/core/frame.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3888,10 +3888,25 @@ def set_index(self, keys, drop=True, append=False, inplace=False,
38883888
-------
38893889
dataframe : DataFrame
38903890
"""
3891-
inplace = validate_bool_kwarg(inplace, 'inplace')
3891+
from pandas import Series
3892+
38923893
if not isinstance(keys, list):
38933894
keys = [keys]
38943895

3896+
col_labels = [x for x in keys
3897+
if not isinstance(x, (Series, Index, MultiIndex,
3898+
list, np.ndarray))]
3899+
if any(x not in self for x in col_labels):
3900+
missing = [x for x in col_labels if x not in self]
3901+
raise KeyError('{}'.format(missing))
3902+
elif len(set(col_labels)) < len(col_labels):
3903+
dup = Series(col_labels)
3904+
dup = list(dup.loc[dup.duplicated()])
3905+
raise ValueError('Passed duplicate column names '
3906+
'to keys: {dup}'.format(dup=dup))
3907+
3908+
inplace = validate_bool_kwarg(inplace, 'inplace')
3909+
38953910
if inplace:
38963911
frame = self
38973912
else:

0 commit comments

Comments
 (0)