Я пытаюсь подсчитать количество точек в адресе электронной почты, используя 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('.')
Кто-нибудь может мне помочь? Заранее спасибо!
Метод .str.count(..) [pandas -doc] работает с регулярным выражением [wiki] . Это указано в документации:
.str.count(..)
Эта функция используется для подсчета количества повторений определенного шаблона регулярного выражения в каждом из строковых элементов Series.
Series
Для регулярного выражения точка означает «все символы, кроме новой строки». Вы можете использовать набор символов (заключив его в квадратные скобки):
docs["PosAt"] = docs["Email"].str.count(<b>'[.]'</b>)
pandas.Series.str.count принимает выражение регулярного выражения в качестве входных данных. Чтобы соответствовать буквальному периоду (.), вы должны экранировать его:
pandas.Series.str.count
.
docs["Email"].str.count('\.')
Простое указание . будет использовать значение периода в регулярном выражении (соответствует любому одному символу)
Здесь можно сравнить длину исходного столбца электронной почты с длиной этого столбца со всеми удаленными точками:
docs["Email"].str.len() - docs["Email"].str.replace("[.]", "").len()