Строки в Pandas (.str)

Для столбцов со строками в Pandas есть аксессор .str — он применяет строковые методы поэлементно. Это аналог цикла [x.method() for x in column], только написанный векторно и быстро.

Когда использовать

  • Очистка имён датчиков от лишних пробелов.

  • Парсинг ID, серийных номеров, MAC-адресов.

  • Поиск подстрок и фильтр по regex.

Пример 1. lower / upper

import pandas as pd

s = pd.Series(["Bot1", "BOT2", "bot3"])
print(s.str.lower())
print(s.str.upper())

Output:

0    bot1
1    bot2
2    bot3
dtype: object
0    BOT1
1    BOT2
2    BOT3
dtype: object

Пример 2. strip

import pandas as pd

s = pd.Series(["  temp ", " hum"])
print(s.str.strip())

Output:

0    temp
1     hum
dtype: object

Пример 3. contains

import pandas as pd

df = pd.DataFrame({"name": ["temp_sensor", "humidity", "lux_meter"]})
print(df[df["name"].str.contains("sensor")])

Output:

          name
0  temp_sensor

По умолчанию принимает regex. Для буквального совпадения — regex=False.

Пример 4. split

import pandas as pd

s = pd.Series(["bot1-temp", "bot2-hum"])
print(s.str.split("-", expand=True))

Output:

      0     1
0  bot1  temp
1  bot2   hum

expand=True разворачивает в столбцы.

Пример 5. replace с regex

import pandas as pd

s = pd.Series(["3.7V", "4.0V", "3.6V"])
print(s.str.replace("V", "", regex=False).astype(float))

Output:

0    3.7
1    4.0
2    3.6
dtype: float64

Пример 6. extract регулярки

import pandas as pd

s = pd.Series(["bot1-2026-01", "bot42-2026-02"])
print(s.str.extract(r"bot(\d+)-(\d{4})-(\d{2})"))

Output:

    0     1   2
0   1  2026  01
1  42  2026  02

Пример 7. len и startswith

import pandas as pd

s = pd.Series(["bot1", "device42", "bot999"])
print(s.str.len())
print(s.str.startswith("bot"))

Output:

0    4
1    8
2    6
dtype: int64
0     True
1    False
2     True
dtype: bool

Подводные камни

  • .str молча возвращает NaN для нестроковых значений — приведите столбец через astype(str), если ожидаете смешанные данные.

  • str.contains по умолчанию учитывает регистр; case=False отключает.

  • Регулярки в replace иногда срабатывают неожиданно — указывайте regex=False для буквальной замены.

См. также

Примечание

Лицензия и источники

Техническое описание адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.