Дешевле, быстрее и идиоматичнее: str.contains
В последних версиях pandas вы можете использовать строковые методы для индекса и столбцов. Здесь str.startswith
вроде как хорошо подходит.
Чтобы удалить все столбцы, начинающиеся с заданной подстроки:
df.columns.str.startswith('Test')
# array([ True, False, False, False])
df.loc[:,~df.columns.str.startswith('Test')]
toto test2 riri
0 x x x
1 x x x
Для сопоставления без учета регистра вы можете использовать сопоставление на основе регулярных выражений str.contains
с привязкой SOL:
df.columns.str.contains('^test', case=False)
# array([ True, False, True, False])
df.loc[:,~df.columns.str.contains('^test', case=False)]
toto riri
0 x x
1 x x
если возможны смешанные типы, также укажите na=False
.