У меня есть список телефонных номеров, которые поступают во многих разных форматах, но мне нужно извлечь типичный 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", которые изменяются, поэтому они не могут быть хэшированы ", но я не знаю, что это значит или как это исправить. Какие-либо предложения?
Может быть, вы можете использовать срез как:
phone['PN'] = phone['PN'].str.slice(0, 10)
или же,
phone['PN'] = phone['PN'].str[:10]
Happy Coding.