Удалите определенные символы из строк в определенном столбце

#python #lambda #str-replace

Вопрос:

Это вопрос для начинающих. Я попытался удалить дефисы и первые два символа личных номеров в столбце личные номера. Дефисы все еще есть в моем df, и я получаю сообщение об ошибке для замены, которую я пытаюсь выполнить с регулярным выражением (см. Рисунок).

Это 12 пронумерованных личных номеров, из которых я хочу удалить » 19 » лет.

Я думал, что это может быть связано с тем, что мой dtype является объектом, и я попытался изменить его на строку, но это тоже не применимо, даже если я не получу синтаксической ошибки, как в случае дефисов. Чтобы изменить объекты на строки, которые я использовал:

 app_df_new.astype({'personalnumber': str}).dtypes
 

введите описание изображения здесь

И когда я добавляю отсутствующее » » в регулярное выражение, оно выдает мне это сообщение об ошибке:

введите описание изображения здесь

Комментарии:

1. Это не очень полезно, когда вы говорите о данных, которые вы размыли

2. Извините, это потому, что это SSN. Но важно то, что один из форматов личных номеров, который является: YYMMDD-XXXX. И я пытаюсь избавиться от дефисов в [70]. В остальной части набора данных формат довольно YYYYMMDDXXXX, и в [71] я пытаюсь избавиться от первых двух символов. Тогда результатом будет YYMMDDXXXX.

3. Вы могли бы показать пример человека с данными

4. Выучил свой урок! 🙂

5. Если вы чувствуете, что мой ответ помог, вы можете принять его

Ответ №1:

Ошибка, вероятно, связана с отсутствием одинарной кавычки ' в выражении регулярного выражения.

Вам не хватает ' цитаты перед закрывающей скобкой.

app_df_new['personalnumber'] = app_df_new['personalnumber'].str.replace(r'^.{1,2}')

Ответ №2:

Вы забыли одну цитату:

 app_df_new['personalnumber'] = app_df_new['personalnumber'].str.replace(r'^.{1,2}','')
 

Комментарии:

1. Ах, спасибо. Я получил это сообщение об ошибке, когда исправлял это. Не уверен, что я это понимаю. Может быть, он не понимает моего регулярного выражения: ошибка типа: заменить() отсутствует 1 требуемый позиционный аргумент: ‘repl’ ?

2. Какое сообщение об ошибке? Это сообщение об ошибке было вызвано тем, что вы пропустили » в своем выражении

3. Я добавил еще одну картинку. Первым сообщением об ошибке было «EOL при сканировании строкового литерала». Когда я добавил r’, он выдал мне сообщение «заменить() отсутствует 1 требуемый позиционный аргумент: ‘repl'».

4. @SevgiCamuz Замена принимает два аргумента, теперь я изменил свой ответ.

5. Большое спасибо! Странно, но я не делаю ни замены, ни полосы, чтобы «прилипнуть» к моему df. У вас есть какие-нибудь идеи, может ли это быть из-за того, что это объекты, а не строки? Я также попытался: app_df_new = app_df_new[‘личный номер’] = app_df_new.личный номер[2:]. Это тоже не сработало