У меня есть фреймворк pandas со следующими именами столбцов:
Результат1, Тест1, Результат2, Тест2, Результат3, Тест3 и т. Д.
Я хочу удалить все столбцы, в названии которых есть слово «Тест». Количество таких столбцов не является статическим, а зависит от предыдущей функции.
Как я могу это сделать?
Вот один из способов сделать это:
источник
df.drop(list(df.filter(regex = 'Test')), axis = 1, inplace = True)
list(df.filter(regex='Test'))
чтобы лучше показать, что делает строка. Я бы также предпочелdf.filter(regex='Test').columns
преобразование списковregex
ключевое слово, когдаlike
ключевое слово кажется более подходящим.filter
том, что он возвращает копию ВСЕХ данных в виде столбцов, которые вы хотите удалить. Было бы расточительно, если бы вы только передавали этот результатdrop
(который снова возвращает копию) ... лучшим решением было быstr.startswith
(я добавил ответ с этим здесь).Дешевле, быстрее и идиоматичнее:
str.contains
В последних версиях pandas вы можете использовать строковые методы для индекса и столбцов. Здесь
str.startswith
вроде как хорошо подходит.Чтобы удалить все столбцы, начинающиеся с заданной подстроки:
Для сопоставления без учета регистра вы можете использовать сопоставление на основе регулярных выражений
str.contains
с привязкой SOL:если возможны смешанные типы, также укажите
na=False
.источник
Вы можете отфильтровать нужные столбцы с помощью фильтра
Теперь фильтровать
Получить..
источник
not like='result'
Это можно сделать аккуратно в одной строке с:
источник
df.drop(df.filter(regex='Test').columns, axis=1, inplace=True)
Используйте
DataFrame.select
метод:источник
FutureWarning: 'select' is deprecated and will be removed in a future release. You can use .loc[labels.map(crit)] as a replacement
import re
заранее.Этот метод делает все на месте. Многие другие ответы создают копии и не так эффективны:
df.drop(df.columns[df.columns.str.contains('Test')], axis=1, inplace=True)
источник
Не роняйте. Поймайте противоположное тому, что хотите.
источник
Самый короткий способ сделать это:
источник
Решение при удалении списка имен столбцов, содержащих регулярное выражение. Я предпочитаю этот подход, потому что я часто редактирую выпадающий список. Использует регулярное выражение отрицательного фильтра для выпадающего списка.
источник