Series.str.find()
Метод Series.str.find() ищет позицию первого вхождения подстроки в каждом элементе строкового Series. Возвращает целочисленный индекс или -1 при отсутствии. Поведение аналогично методу Python str.find.
Сигнатура
Series.str.find(sub, start=0, end=None)
Параметры
sub— искомая подстрока.start— индекс начала поиска.end— индекс конца (не включается).
Возвращаемое значение
Series с целочисленными позициями (или -1).
Примеры
Пример 1. Базовый поиск
import pandas as pd
s = pd.Series(["temp=22.5", "temp=23.0", "hum=55"])
print(s.str.find("="))
0 4
1 4
2 3
dtype: int64
Пример 2. Отсутствующая подстрока
import pandas as pd
s = pd.Series(["ok", "fail", "warning"])
print(s.str.find("err"))
0 -1
1 -1
2 -1
dtype: int64
Пример 3. С параметром start
import pandas as pd
s = pd.Series(["aa=bb=cc", "x=y=z"])
print(s.str.find("=", start=3))
0 5
1 3
dtype: int64
Пример 4. Извлечение значения после знака =
import pandas as pd
s = pd.Series(["temp=22.5", "temp=23.0"])
pos = s.str.find("=")
values = pd.Series([row[p+1:] for row, p in zip(s, pos)])
print(values)
0 22.5
1 23.0
dtype: object
Пример 5. Совместно с булевой фильтрацией
import pandas as pd
logs = pd.Series(["INFO: ok", "ERROR: fail", "INFO: done"])
mask = logs.str.find("ERROR") != -1
print(logs[mask])
1 ERROR: fail
dtype: object
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.