Как замаскировать данные с помощью регулярного выражения python в фреймах данных

Я хочу заменить шаблоны данных с помощью регулярных выражений

Например, у меня есть следующая таблица. Я хочу заменить цифры номера счета на N, например. если счет состоит из 5 номеров, то его следует заменить на пять N NNNNN.

Source
Account_Num,Facility Name,Address,City
10605,SAGE MEMORIAL HOSPITAL,STATE ROUTE 264 SOUTH 191,GANADO
2425,WOODRIDGE BEHAVIORAL CENTER,600 NORTH 7TH STREET,XDSDSD

Цель

Account_Num,Facility Name,Address,City
NNNNN,AAAA AAAAAAAA AAAAAAA,STATE ROUTE 264 SOUTH 191,GANADO
NNNN,WOODRIDGE BEHAVIORAL CENTER,600 NORTH 7TH STREET,XDSDSD

Я пытался со следующим кодом:

print(df.replace(to_replace=(\[re.search(r'\\d+',str(df_str))\]),value='NNNNN', regex=True))

Так только это df.replace("[0-9]{5,}", "NNNNN", regex=True)?

CJR 21.03.2022 18:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать .replace с несколькими условиями регулярного выражения:

df = df.astype(str).replace([r'[a-zA-Z]', '\d'], ['A', 'N'], regex=True)

Выход:

>>> df
  Account_Num                Facility Name                    Address    City
0       NNNNN       AAAA AAAAAAAA AAAAAAAA  AAAAA AAAAA NNN AAAAA NNN  AAAAAA
1        NNNN  AAAAAAAAA AAAAAAAAAA AAAAAA       NNN AAAAA NAA AAAAAA  AAAAAA

Спасибо за ваш ответ, но я хочу, чтобы весь фрейм данных заменил цифры на «N», а слова на «A».

Neeraja Lanka 21.03.2022 20:34

Как насчет столбца «Адрес»? Он содержит как цифры, так и буквы. В таком случае, как мне нужно решить?

Neeraja Lanka 21.03.2022 21:03

Упс, мне жаль! Я не заметил эту часть :) Один момент.

richardec 21.03.2022 21:07

Вот и все; Проверь сейчас. Он должен работать идеально :)

richardec 21.03.2022 21:15

это отлично работает. Большое спасибо

Neeraja Lanka 21.03.2022 21:28

привет один быстрый вопрос., вы можете проверить этот код

Neeraja Lanka 21.03.2022 21:52

def df_method(self,column_name): df[column_name]=df[column_name].astype(str).replace([r'[a-zA‌​-Z]', '\d'], ['A', ' N'], регулярное выражение = True) count_values=df[column_name].value_counts() count_values_dict=count_values.to_dict() return count_values_dict df_a=df.apply(df_method) print(df_a)

Neeraja Lanka 21.03.2022 21:52

@ Нираджа, конечно, в чем проблема?

richardec 21.03.2022 21:54

def df_method(self,column_name): df[column_name]=df[column_name].astype(str).replace([r'[a-zA‌​-Z]', '\d'], ['A', ' N'], регулярное выражение = True) count_values=df[column_name].value_counts() count_values_dict=count_values.to_dict() return count_values_dict df_a=df.apply(df_method) print(df_a)

Neeraja Lanka 21.03.2022 21:54

получал следующую ошибку, когда. попробуйте приведенный выше код. "TypeError: df_method() отсутствует 1 обязательный позиционный аргумент: 'column_name'"

Neeraja Lanka 21.03.2022 22:01

Хорошо, я исправил это для вас. Запустите это, чтобы напечатать новый код: print("""def df_method(df)\n new_df = df.copy().astype(str).replace([r'[a-zA-Z]', '\d'], ['A', 'N'], regex=True)\n count_values = new_df.value_counts()\n count_values_dict = count_values.to_dict()\n return count_values_dict\n\ndf_a = df.apply(df_method)\nprint(df_a)""")

richardec 21.03.2022 22:20

Другие вопросы по теме