Panda - строчные значения, если следующий символ пуст - PullRequest
0 голосов
/ 11 октября 2018

Впервые в Panda и Python, так что все еще учатся веревки.Однако я смотрел на то, как я могу отформатировать импортированную информацию Excel.

У меня есть несколько адресов, которые имеют следующий формат "St Street'S" из моей адресной колонки.Поэтому в конце этого есть эта неуклюжая заглавная буква.Первоначально я думал, что это может быть решено с помощью простого форматирования с чем-либо, имеющим «перед тем, как идти в нижнем регистре.Однако я больше посмотрел на свою информацию и понял, что не могу, потому что после некоторых адресов требуется заглавная буква.

Поэтому мне было интересно, какой код мне нужно написать, чтобы следующий символ после не был пустым значением?(St Street'S)?

Надеюсь, что это объясняет проблему, попробую опубликовать часть моего кода сейчас, но, будучи новичком, я сомневаюсь, что он где-то близко.Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

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

Найдите шаблон "(\ w +? \ '?) S" и затем замените его следующим образом:

re.sub(r'(\w+?\'?)S', r'\1s', input)

шаблон выглядит следующим образом:

\ w +?- любое количество символов слова от 1 до бесконечности, выбирая наименьшее возможное для соответствия шаблону

\ '?- попытка сопоставить одиночную кавычку, если она существует или ее можно игнорировать

S - сопоставление символа с чувствительностью к регистру.

тогда все, что вы замените, - это ваш последний S с s

0 голосов
/ 11 октября 2018

В питоне строка - это список символов.Зная tat, вы можете найти индекс апострофа ', проверить, следует ли за ним верхний регистр S, и проверить, следует ли за ним пустое значение.так что-то вроде этого:

street = "St Street'S"
index = street.index('\'')
if street[index + 1] == 'S' and street[index + 2] == empty_value:
    street = street[:-1] + street[-1].lower()

Единственное, что я не понимаю в вашем вопросе, что вы подразумеваете под "empty_value"?

0 голосов
/ 11 октября 2018

Не уверен, что я понял 100%, но я думаю, что вы можете использовать регулярные выражения, чтобы сделать это в любом случае.Например:

df['Address'].str.replace("\'S", "'s", regex=True)

Обновление:

Если вам нужно сохранить его в df ['Address'], вам нужно добавить inplace = True, как это:

df.Address.replace(r"\'S", "'s", regex=True, inplace=True)

Это приводит к следующим результатам:

Address
0   Some Street'S

df.Address.replace(r"\'S", "'s", regex=True)
0    Some Street's
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...