Eu tenho um quadro de dados com nomes de colunas e quero encontrar o que contém uma determinada sequência de caracteres, mas não corresponde exatamente a ela. Estou procurando 'spike'
em nomes de coluna como 'spike-2'
, 'hey spike'
, 'spiked-in'
(o'spike'
parte é sempre contínua).
Desejo que o nome da coluna seja retornado como uma sequência ou variável, para acessar a coluna posteriormente com df['name']
ou df[name]
normalmente. Eu tentei encontrar maneiras de fazer isso, sem sucesso. Alguma dica?
DataFrame.filter
faz FYI (e você pode fornecer uma regex se você quiser)df[df.columns.drop(spike_cols)]
, pois você obtém umDataFrame
sem as colunas na listaspike_cols
que você pode obter usando seu regex indesejado.df[[col for col in df.columns if "spike" in col]]
Esta resposta usa o método DataFrame.filter para fazer isso sem compreensão da lista:
Produzirá apenas 'spike-2'. Você também pode usar regex, como algumas pessoas sugeriram nos comentários acima:
Produzirá as duas colunas: ['spike-2', 'hey spke']
fonte
Você também pode usar
df.columns[df.columns.str.contains(pat = 'spike')]
Isso exibirá os nomes das colunas:
'spike-2', 'spiked-in'
Mais sobre pandas.Series.str.contains .
fonte
Você também pode selecionar por nome, expressão regular. Consulte: pandas.DataFrame.filter
fonte
fonte
Você também pode usar este código:
fonte
Obtendo nome e subconjunto com base em Iniciar, Contém e Termina:
fonte