Использование метода casefold() с именами столбцов фрейма данных и .contains

#python #pandas

Вопрос:

Как мне искать экземпляры во фрейме данных, где столбец «Кампания» содержит b0.

Я хотел бы не изменять значения фреймов данных, а вместо этого просто просматривать их, как если бы они были в нижнем регистре.

 df.loc.str.casefold()[df['Campaign'].str.casefold().contains('b0')]  

Недавно я поинтересовался, как это сделать в случае сопоставления определенной строки, как показано ниже, но то, о чем я спрашиваю выше, мне кажется более сложным.

 df['Record Type'].str.lower() == 'keyword'  

Комментарии:

1. df[df['Campaign'].str.casefold().contains('b0')] Работает ли это?

2. нет, это дает «Ряд», объект не имеет атрибута «содержит». — ошибка. Но это также не устраняет необходимость просмотра самого заголовка столбца, как если бы он был в нижнем регистре.

Ответ №1:

Попробуйте с

 df.loc[df['Campaign'].str.contains('b0',case=False)]  

Комментарии:

1. это работает для работы с частью «b0», но как бы я ссылался на заголовок столбца как на его экземпляр в нижнем регистре, фактически не меняя его на нижний регистр?

2. @anarchocaps вам не нужно ничего менять, так как мы делаем регистр чувствительным к ложному

3. когда я меняю код с «Кампания» на «кампания», я получаю «KeyError: «кампания»