#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:]. Это тоже не сработало