Как проверить несколько подстрок, чтобы получить имена столбцов в python?

У меня есть фрейм данных в python pandas. Я вытягиваю столбцы на основе приведенного ниже условия.

spike_cols = [col for col in nodes.columns if 'Num' in col]
print(spike_cols)

Но я ищу несколько подстрок, чтобы проверить столбцы, если они существуют. Я хочу вытащить все столбцы, которые соответствуют любой из подстрок.

spike_cols = [col for col in nodes.columns if ('Num'|'Lice') in col]
    print(spike_cols)

Но я получаю ошибку ниже

: unsupported operand type(s) for |: 'str' and 'str'
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
509
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

попробуй это:

spike_cols = [col for col in nodes.columns if ('Num' in col or 'Lice' in col)]
Ответ принят как подходящий

Вы можете использовать DataFrame.filter для этого в сочетании с аргументом regex:

# Create example dataframe
df = pd.DataFrame({'HelloNum': [1,2],
                  'World':[3,4],
                  'This':[5,6],
                  'ExampleLice':[7,8]})

print(df)

   HelloNum  World  This  ExampleLice
0         1      3     5            7
1         2      4     6            8

Подать заявку DataFrame.filter

print(df.filter(regex='Num|Lice'))
   HelloNum  ExampleLice
0         1            7
1         2            8

Получить имена столбцов в списке

df.filter(regex='Num|Lice').columns.tolist()

['HelloNum', 'ExampleLice']

Вы можете использовать Series.str.contains:

df[df.columns[df.columns.str.contains(r'Num|Lice')]]

Если все, что вам нужно, это сами имена столбцов:

df.columns[df.columns.str.contains(r'Num|Lice')].tolist()

это дает мне весь отфильтрованный фрейм данных, но мне нужны только столбцы

vinay karagod 26.04.2019 00:50

Другие вопросы по теме