Mais barato, mais rápido e idiomático: str.contains
Em versões recentes do pandas, você pode usar métodos de string no índice e nas colunas. Aqui, str.startswith
parece um bom ajuste.
Para remover todas as colunas começando com uma determinada substring:
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
Para correspondência que não diferencia maiúsculas de minúsculas, você pode usar a correspondência baseada em regex str.contains
com uma âncora 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
se os tipos mistos forem uma possibilidade, especifique na=False
também.