Я хочу установить индекс столбца фрейма данных, сохранив все столбцы, которые НЕ начинаются с определенной строки. Прямо сейчас я могу отфильтровать индекс столбцов для столбцов, которые начинаются с определенной строки, но я бы хотел сделать обратное и исключить имена столбцов, которые соответствуют определенному критерию.

Если пытаться сохранить столбцы

Если я пытаюсь сохранить имена столбцов, начинающиеся с FR, я использую этот код, который работает.

factor_list = df2.filter(like = 'FR_', axis=1).columns

Пытаясь исключить столбцы, начинающиеся с «FR», я пробовал много вещей, включая следующие:

factor_list = df2.filter(like != 'FR_', axis=1).columns
factor_list = ~df2.filter(like = 'FR_', axis=1).columns
0
WON_Eric 10 Июл 2019 в 00:21

3 ответа

Лучший ответ

Вы были довольно близки с df.filter. В этом случае проще использовать регулярное выражение, отфильтровывая все столбцы, которые не начинаются (?!^) с FR_:

df.filter(regex='^(?!FR_)')

   Col1  Col3
0     2     8
1     0     7
2     4     1
3     2     6
4     4     8
# Example dataframe
df = pd.DataFrame({'Col1':np.random.randint(0,10,5),
                   'FR_Col2':np.random.randint(0,10,5),
                   'Col3':np.random.randint(0,10,5),
                   'FR_Col4':np.random.randint(0,10,5)})

   Col1  FR_Col2  Col3  FR_Col4
0     2        1     8        5
1     0        7     7        9
2     4        8     1        9
3     2        2     6        9
4     4        9     8        3
0
Erfan 9 Июл 2019 в 21:35

Это должно работать для вас. Пожалуйста, проверьте вышеуказанную ссылку для более подробной информации.

factor_list = df2.loc[:,~df.columns.str.startswith('FR')]
0
Vishwas 9 Июл 2019 в 21:36

Ты можешь сделать

factor_list = df2.filter(regex = '^(?!FR_).*', axis=1).columns
0
Akaisteph7 9 Июл 2019 в 21:37