pandas.Series.str.split
- Series.str.split(pat=None, n=- 1, expand=False, *, regex=None)[source]
-
Разделение строк вокруг заданного разделителя.
Разделяет строку в Series/Index с начала по заданной строке-разделителю.
- Параметры
-
- pat:строка или скомпилированный regex, необязательно
-
Строка или регулярное выражение для разделения. Если не указано, разделение происходит по пробелам.
- n:целое число, по умолчанию -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Скомпилированный regex может быть передан как 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/1.5.0/reference/api/pandas.Series.str.split.html