Как убрать пробелы между символами, не удаляя ВСЕ пробелы в кадре данных? - PullRequest
0 голосов
/ 21 ноября 2018

Допустим, у меня есть такой фрейм данных:

ID    Name       Description
0     Manny      V e  r y calm
1     Joey       Keen and a n a l y t i c a l
2     Lisa       R a s h and careless
3     Ash        Always joyful

Я хочу удалить все пробелы между буквами в столбце Description, не удаляя при этом все необходимые пробелы между словами.

Есть ли простой способ сделать это в Пандах?

1 Ответ

0 голосов
/ 22 ноября 2018

Это сложная проблема, но один из подходов, который может помочь вам в этом, заключается в использовании негативных и позитивных lookbehinds / lookaheads для кодирования нескольких основных правил.

Следующий пример, вероятно, будет работать хорошодостаточно, учитывая то, что вы описали.Он будет неправильно объединять символы из последовательных «настоящих» слов, которые были разбиты на отдельные символы, но если это случится редко, это, вероятно, будет хорошо.Вы можете добавить дополнительные правила, чтобы охватить больше краевых случаев.

import re
import pandas as pd

s = pd.Series(['V e  r y calm', 'Keen and a n a l y t i c a l',
'R a s h and careless', 'Always joyful'])

regex = re.compile('(?<![a-zA-Z]{2})(?<=[a-zA-Z]{1}) +(?=[a-zA-Z] |.$)')
s.str.replace(regex, '')

0              Very calm
1    Keen and analytical
2      Rash and careless
3          Always joyful
dtype: object

Это регулярное выражение эффективно говорит:

Ищите последовательности пробелов и заменяйте пробелы, но только если перед ними одна буква.Если есть две буквы, ничего не делайте (т.е. двухбуквенное слово).Но, в частности, фактически заменяйте пробел только в том случае, если после последнего пробела в последовательности есть буква или любой символ, заканчивающий строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...