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