Как избавиться от расширения номера телефона на Pandas DF

1

У меня есть список телефонных номеров, которые поступают во многих разных форматах, но мне нужно извлечь типичный 10-значный формат "код зоны + номер телефона".

Я успешно удалил пунктуацию, но у некоторых надоедливых телефонных номеров есть расширения. Я думал, что создам столбец длины, а затем какое-то условие, чтобы удалить только последние 4 символа, если длина номера телефона больше 10.

Ниже приведен пример моих данных. Первый номер телефона не должен терять цифры; второй должен потерять "1401",

phone = pd.DataFrame({'PN':['1234567891', '1234567891 1401'],'length':[10,16]})

Я попытался заменить эти последние четыре цифры на re.sub, но я не могу понять, что это правильно.

phone[phone['length']>10]= re.sub(r'\d{4}$', '', phone['PN'])

Это тоже не работает:

phone[phone['length']>10,'PN']=phone.loc[phone['length']>10]['PN'].str.replace('\d{4}$', '')

Я получаю объекты "Series", которые изменяются, поэтому они не могут быть хэшированы ", но я не знаю, что это значит или как это исправить. Какие-либо предложения?

Теги:
pandas
indexing

1 ответ

0

Может быть, вы можете использовать срез как:

phone['PN'] = phone['PN'].str.slice(0, 10)

или же,

phone['PN'] = phone['PN'].str[:10]

  • 0
    Это сработало! Оба ответа были "ах!" моменты для меня. Большое спасибо!
  • 0
    Большой! Happy Coding.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню