Pandas не распознает "||" как строка для разделения - PullRequest
3 голосов
/ 19 февраля 2020

Я пытаюсь разбить DataFrame на два столбца и получить левую часть в результате, но pandas не распознает эту строку и выдает мне пустое значение.

q=['Sar || var','lol ||']
y=pd.DataFrame(q)
split_data = y[0].str.split("||", n = 1, expand = False).str[0]
print(split_data)

out

0    
1    
Name: 0, dtype: object

1 Ответ

2 голосов
/ 19 февраля 2020

Документация несколько обманчива для этого метода. Происходит следующее: для шаблонов длиннее 1 символа pandas интерпретирует разделитель как регулярное выражение . Вы можете увидеть реализацию здесь .

. Вы можете использовать "||" в качестве литерального разделителя без регулярных выражений, экранируя символ "|" (что имеет особое значение в регулярных выражениях), используя a backsla sh:

series.str.split("\\|\\|")

Обратите внимание, что python предоставляет «необработанный» синтаксис для строковых литералов, который может быть полезен для написания регулярных выражений, избавляя от необходимости избегать Сами обратные косые черты:

series.str.split(r"\|\|")

Вы можете обратиться к документации для модуля re для получения списка специальных символов, которые необходимо экранировать при использовании многосимвольных разделителей. В качестве альтернативы, просто используйте функцию re.escape:

import re
series.str.split(re.escape("||"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...