У меня есть фрейм данных с именами столбцов, и я хочу найти тот, который содержит определенную строку, но не совсем соответствует ей. Я ищу 'spike'
в именах столбцов нравятся 'spike-2'
, 'hey spike'
, 'spiked-in'
( 'spike'
часть всегда непрерывна).
Я хочу, чтобы имя столбца возвращалось в виде строки или переменной, поэтому я обращусь к столбцу позже с помощью df['name']
или df[name]
как обычно. Я пытался найти способы сделать это, но безуспешно. Какие-нибудь советы?
DataFrame.filter
что FYI (и вы можете указать регулярное выражение, если хотите)df[df.columns.drop(spike_cols)]
, там вы получитеDataFrame
без столбцов в списке,spike_cols
который вы можете получить с помощью нежелательного регулярного выражения.df[[col for col in df.columns if "spike" in col]]
В этом ответе для этого используется метод DataFrame.filter без понимания списка:
Будет выводиться только «спайк-2». Вы также можете использовать регулярное выражение, как некоторые люди предложили в комментариях выше:
Выведет оба столбца: ['spike-2', 'hey spke']
источник
Вы также можете использовать
df.columns[df.columns.str.contains(pat = 'spike')]
Это выведет имена столбцов:
'spike-2', 'spiked-in'
Подробнее о пандах . Series.str.contains .
источник
Также можно выбрать по имени, регулярному выражению. Обратитесь к: pandas.DataFrame.filter
источник
источник
Вы также можете использовать этот код:
источник
Получение имени и подмножества на основе Start, Contains и Ends:
источник