Как изменить формат числа в столбце панд? - PullRequest
1 голос
/ 07 июня 2019

У меня большой DataFrame из чисел, но каждый отдельный номер имеет свой формат.Я хочу использовать регулярное выражение для замены большого количества из них на формат 111-111-1111

numbers["numbers"].replace('^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$, "/*/*/*-/*/*/*-/*/*/*/*", regex=True')

. Оно должно принимать число, найденное выражением, и сохранять базовое число, но изменять его формат.1234567890 должно равняться 123-456-7890

1 Ответ

0 голосов
/ 07 июня 2019

Вы можете использовать

df["numbers"] = df["numbers"].str.replace('^(?:\+\d{1,2}\s)?\(?(\d{3})\)?[\s.-]?(\d{3})[\s.-]?(\d{4})$', r'\1-\2-\3')

Подробности

  • ^ - начало строки
  • (?:\+\d{1,2}\s)? - необязательнопоследовательность
  • \(? - необязательно (
  • (\d{3}) - группа 1: три цифры
  • \)? - необязательно )
  • [\s.-]? - необязательный пробел, . или -
  • (\d{3}) - Группа 2: три цифры
  • [\s.-]? - необязательный пробел, .или -
  • (\d{4}) - группа 3: четыре цифры
  • $ - конец строки.

\x в шаблоне замены(r'\1-\2-\3') являются заполнителями для значений, захваченных соответствующими группами.

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