Выбор всех столбцов в DataFrame.set_index, кроме одного - PullRequest
2 голосов
/ 08 июля 2019

Как видно из названия, я пытаюсь выбрать все столбцы, кроме одного в 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 ]

4 голосов
/ 08 июля 2019

Вы можете использовать pd.Index.difference() здесь с sort=False, если заказ важен:

df=df.set_index(df.columns.difference(['cus_name'],sort=False).tolist())
3 голосов
/ 08 июля 2019

Нахальный способ добиться этого с помощью операций над множествами:

df.set_index(list(set(df.columns) - {'cus_name'}))
2 голосов
/ 08 июля 2019

Попробуйте понимание списка

df = df.set_index([c for c in df.columns if c != 'cus_name'])
1 голос
/ 08 июля 2019

В качестве альтернативы

df = df.set_index(df.columns.drop('cus_name').tolist()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...