pandas.Series.str.split#

Series.str.split(шаблон=None, *, n=-1, развернуть=False, regex=None)[источник]#

Разделить строки по заданному разделителю/разделителю.

Разделяет строку в Series/Index с начала, по указанной строке-разделителю.

Параметры:
шаблонstr или скомпилированное регулярное выражение, опционально

Строка или регулярное выражение для разделения. Если не указано, разделение происходит по пробельным символам.

nint, по умолчанию -1 (все)

Ограничить количество разделов в выводе. None, 0 и -1 будут интерпретироваться как возврат всех разделений.

развернутьbool, по умолчанию False

Развернуть разделенные строки в отдельные столбцы.

  • Если True, возвращает DataFrame/MultiIndex, расширяя размерность.

  • Если False, возвращает Series/Index, содержащие списки строк.

regexbool, по умолчанию None

Определяет, является ли переданный шаблон регулярным выражением:

  • Если Trueпредполагает, что переданный шаблон является регулярным выражением

  • Если False, рассматривает шаблон как буквальную строку.

  • Если None и шаблон длина равна 1, обрабатывает шаблон как строковый литерал.

  • Если None и шаблон длина не равна 1, рассматривает шаблон как регулярное выражение.

  • Не может быть установлено в False, если шаблон является скомпилированным регулярным выражением

Добавлено в версии 1.4.0.

Возвращает:
Series, Index, DataFrame или MultiIndex

Тип соответствует вызывающему объекту, если не указано иное expand=True (см. Примечания).

Вызывает:
ValueError
  • if regex равно False и шаблон является скомпилированным регулярным выражением

Смотрите также

Series.str.split

Разделить строки по заданному разделителю/разделителю.

Series.str.rsplit

Разделяет строку вокруг заданного разделителя, начиная справа.

Series.str.join

Объединение списков, содержащихся как элементы в Series/Index, с заданным разделителем.

str.split

Версия стандартной библиотеки для split.

str.rsplit

Версия стандартной библиотеки для rsplit.

Примечания

Обработка n ключевое слово зависит от количества найденных разделений:

  • Если найдено разбиений > n, сделать первый n только разделяет

  • Если найдено разбиений <= n, сделать все разделения

  • Если для определенной строки количество найденных разделов < n, добавить None для заполнения до n if expand=True

Если используется expand=True, Series и Index возвращают DataFrame и MultiIndex объекты соответственно.

Использование regex =False с шаблон использование скомпилированного регулярного выражения вызовет ошибку.

Примеры

>>> s = pd.Series(
...     [
...         "this is a regular sentence",
...         "https://docs.python.org/3/tutorial/index.html",
...         np.nan
...     ]
... )
>>> s
0                       this is a regular sentence
1    https://docs.python.org/3/tutorial/index.html
2                                              NaN
dtype: object

В настройках по умолчанию строка разделяется пробелами.

>>> s.str.split()
0                   [this, is, a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype: object

Без n параметр, выходные данные rsplit и split идентичны.

>>> s.str.rsplit()
0                   [this, is, a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype: object

The n параметр может использоваться для ограничения количества разделений по разделителю. Результаты split и rsplit различаются.

>>> s.str.split(n=2)
0                     [this, is, a regular sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype: object
>>> s.str.rsplit(n=2)
0                     [this is a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype: object

The шаблон параметр может использоваться для разделения по другим символам.

>>> s.str.split(pat="/")
0                         [this is a regular sentence]
1    [https:, , docs.python.org, 3, tutorial, index...
2                                                  NaN
dtype: object

При использовании expand=True, разделённые элементы будут расширяться в отдельные столбцы. Если присутствует NaN, он распространяется по всем столбцам во время разделения.

>>> s.str.split(expand=True)
                                               0     1     2        3         4
0                                           this    is     a  regular  sentence
1  https://docs.python.org/3/tutorial/index.html  None  None     None      None
2                                            NaN   NaN   NaN      NaN       NaN

Для немного более сложных случаев использования, таких как разделение имени html-документа из URL, можно использовать комбинацию настроек параметров.

>>> s.str.rsplit("/", n=1, expand=True)
                                    0           1
0          this is a regular sentence        None
1  https://docs.python.org/3/tutorial  index.html
2                                 NaN         NaN

Не забудьте экранировать специальные символы при явном использовании регулярных выражений.

>>> s = pd.Series(["foo and bar plus baz"])
>>> s.str.split(r"and|plus", expand=True)
    0   1   2
0 foo bar baz

Регулярные выражения можно использовать для обработки URL-адресов или имен файлов. Когда шаблон является строкой и regex=None (по умолчанию), заданный шаблон компилируется как регулярное выражение только если len(pat) != 1.

>>> s = pd.Series(['foojpgbar.jpg'])
>>> s.str.split(r".", expand=True)
           0    1
0  foojpgbar  jpg
>>> s.str.split(r"\.jpg", expand=True)
           0 1
0  foojpgbar

Когда regex=True, шаблон интерпретируется как регулярное выражение

>>> s.str.split(r"\.jpg", regex=True, expand=True)
           0 1
0  foojpgbar

Скомпилированное регулярное выражение может быть передано как шаблон

>>> import re
>>> s.str.split(re.compile(r"\.jpg"), expand=True)
           0 1
0  foojpgbar

Когда regex=False, шаблон интерпретируется как сама строка

>>> s.str.split(r"\.jpg", regex=False, expand=True)
               0
0  foojpgbar.jpg