Аксессор .str в pandas: строковые операции без цикла
Аксессор .str открывает векторизованные строковые методы для колонки: .str.lower(), .str.contains(), .str.extract(), .str.split(). Они применяются сразу ко всей Series без питоновского цикла — это быстрее и чище, чем apply с обычной функцией. Аналитик использует .str для очистки и парсинга текстовых полей: email, теги, коды.
На колонках с пропусками .str.contains вернёт NaN вместо True/False, и фильтр упадёт — ставь na=False. По умолчанию contains трактует шаблон как регулярное выражение: спецсимволы (. * ( )) надо экранировать или передать regex=False. .str.extract возвращает захваченную группу (то, что в скобках), а без совпадения — NaN.
Где спрашивают на собеседовании
.str-аксессор спрашивают в задачах на парсинг и очистку строк: вытащить домен, разобрать код, отфильтровать по подстроке. На собеседовании ценят предпочтение векторных .str.* методов вместо медленного apply и знание про na=False и регулярки.
FAQ: частые вопросы про .str
Как извлечь часть строки регуляркой в pandas?
df['col'].str.extract(r'(шаблон)') вернёт захваченную группу в новую колонку. Например, .str.extract(r'@(.+)$') достаёт домен после @.
Почему str.contains даёт ошибку на пропусках?
На NaN метод возвращает NaN, а не булево, и булев фильтр ломается. Передай na=False, чтобы пропуски считались как «не содержит».
Чем .str методы лучше apply?
Они векторизованы (работают над всей колонкой в C), поэтому в разы быстрее apply с питоновской функцией и читаются чище. Для строковых операций всегда предпочитай .str.*.