pandas.Series.str.split
- Series.str.split(pat=None, *, n=-1, expand=False, regex=None)[source]
-
Разделение строк по заданному разделителю.
Разделяет строки в Series/Index с начала по указанной строке-разделителю.
- Параметры:
-
- pat:str или скомпилированный regex, необязательно
-
Строка или регулярное выражение для разделения. Если не указано, разделение происходит по пробелам.
- n:int, по умолчанию -1 (все)
-
Ограничение числа разделений в выводе.
None, 0 и -1 будут интерпретированы как возвращение всех разделений. - expand:bool, по умолчанию False
-
Разделить строки на отдельные столбцы.
Если
True, возвращается DataFrame/MultiIndex, расширяющий размерность.Если
False, возвращается Series/Index, содержащий списки строк.
- regex:bool, по умолчанию None
-
Определяет, является ли переданный шаблон регулярным выражением:
Если
True, предполагается, что переданный шаблон является регулярным выражениемЕсли
False, шаблон обрабатывается как строка.Если
Noneи длина pat равна 1, pat обрабатывается как строка.Если
Noneи длина pat не равна 1, pat обрабатывается как регулярное выражение.Не может быть установлено в False, если pat является скомпилированным regex
Добавлена в версии 1.4.0.
- Возвращаемое значение:
-
- Series, Index, DataFrame или MultiIndex
-
Тип соответствует вызывающему элементу, за исключением
expand=True(см. Примечания).
- Исключения:
-
- ValueError
-
если regex равно False, а pat — скомпилированному regex
См. также
Series.str.split-
Разделение строк по заданному разделителю.
Series.str.rsplit-
Разделение строк по заданному разделителю, начиная справа.
Series.str.join-
Объединение списков, содержащихся в качестве элементов Series/Index, с заданным разделителем.
str.split-
Стандартная библиотечная версия для split.
str.rsplit-
Стандартная библиотечная версия для rsplit.
Примечания
Обработка ключевого слова n зависит от количества найденных разделений:
Если найденных разделений > n, выполняются только первые n разделений
Если найденных разделений <= n, выполняются все разделения
Если для определенной строки число найденных разделений < n, добавляется None для заполнения до n, если
expand=True
Если используется
expand=True, Series и Index вызывающие элементы возвращают объекты DataFrame и MultiIndex соответственно.Использование regex =False со pat в виде скомпилированного regex вызовет ошибку.
Примеры
>>> 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
Параметр 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
Параметр pat может использоваться для разделения по другим символам.
>>> 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 или имён файлов. Когда pat является строкой и
regex=None(по умолчанию), заданная pat компилируется как regex только если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, pat интерпретируется как регулярное выражение>>> s.str.split(r"\.jpg", regex=True, expand=True) 0 1 0 foojpgbarСкомпилированное регулярное выражение может быть передано как pat
>>> import re >>> s.str.split(re.compile(r"\.jpg"), expand=True) 0 1 0 foojpgbarКогда
regex=False, pat интерпретируется как сама строка>>> s.str.split(r"\.jpg", regex=False, expand=True) 0 0 foojpgbar.jpg
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.Series.str.split.html