Pandas: количество точек в строке - такое же, как длина? - PullRequest
2 голосов
/ 12 января 2020

Я пытаюсь подсчитать количество точек в адресе электронной почты, используя Python + Pandas.

Первая запись - "addison. shepherd@gmail.com". Стоит считать 2 точки. Вместо этого он возвращает 26, длину строки.

import pandas as pd

url = "http://profalibania.com.br/python/EmailsDoctors.xlsx"
docs = pd.read_excel(url)

docs["PosAt"] = docs["Email"].str.count('.')

Кто-нибудь может мне помочь? Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 12 января 2020

Метод .str.count(..) [pandas -doc] работает с регулярным выражением [wiki] . Это указано в документации:

Эта функция используется для подсчета количества повторений определенного шаблона регулярного выражения в каждом из строковых элементов Series.

Для регулярного выражения точка означает «все символы, кроме новой строки». Вы можете использовать набор символов (заключив его в квадратные скобки):

docs["PosAt"] = docs["Email"].str.count(<b>'[.]'</b>)
3 голосов
/ 12 января 2020

pandas.Series.str.count принимает выражение регулярного выражения в качестве входных данных. Чтобы соответствовать буквальному периоду (.), вы должны экранировать его:

docs["Email"].str.count('\.')

Простое указание . будет использовать значение периода в регулярном выражении (соответствует любому одному символу)

2 голосов
/ 12 января 2020

Здесь можно сравнить длину исходного столбца электронной почты с длиной этого столбца со всеми удаленными точками:

docs["Email"].str.len() - docs["Email"].str.replace("[.]", "").len()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...