Я хочу заменить шаблоны данных с помощью регулярных выражений
Например, у меня есть следующая таблица. Я хочу заменить цифры номера счета на 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))
Вы можете использовать .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».
Как насчет столбца «Адрес»? Он содержит как цифры, так и буквы. В таком случае, как мне нужно решить?
Упс, мне жаль! Я не заметил эту часть :) Один момент.
Вот и все; Проверь сейчас. Он должен работать идеально :)
это отлично работает. Большое спасибо
привет один быстрый вопрос., вы можете проверить этот код
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)
@ Нираджа, конечно, в чем проблема?
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)
получал следующую ошибку, когда. попробуйте приведенный выше код. "TypeError: df_method() отсутствует 1 обязательный позиционный аргумент: 'column_name'"
Хорошо, я исправил это для вас. Запустите это, чтобы напечатать новый код: 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)""")
Так только это
df.replace("[0-9]{5,}", "NNNNN", regex=True)
?