选择DataFrame.set_index中的所有列,除了其中一列

时间:2019-07-08 11:55:53

标签: python pandas

正如标题所述,我正在尝试选择DataFrame.set_index中除一列以外的所有列。

我尝试了以下方法:

df = df.set_index(list(df.columns != 'cus_name'))

cus_name系列是我要排除的系列。上面的代码引发KeyError: True

list(df.columns != 'cus_name')是布尔值[True, True, False, True, True, True, True, True, True, True, True, True]的列表,而我需要的是cus_name以外的列名称的列表。

我知道我可以在set_index方法中显式输入我想要的列的完整列表,但是我在徘徊是否有更有效的方法来做到这一点。

4 个答案:

答案 0 :(得分:4)

如果顺序很重要,您可以在此处将sort=Falsepd.Index.difference()一起使用:

df=df.set_index(df.columns.difference(['cus_name'],sort=False).tolist())

答案 1 :(得分:3)

通过设置操作实现此目的的一种轻松方式:

df.set_index(list(set(df.columns) - {'cus_name'}))

答案 2 :(得分:2)

尝试列表理解

df = df.set_index([c for c in df.columns if c != 'cus_name'])

答案 3 :(得分:1)

或者,

df = df.set_index(df.columns.drop('cus_name').tolist()))
相关问题