Нечисловые символы — это все, кроме цифр, например буквы, знаки препинания, символы или пробелы. Удаление нечисловых символов в Pandas может оказаться полезным при очистке данных и подготовке данных для дополнительной обработки или анализа в Python.
Мы можем использовать основные методы Python, такие как replace(), Extract(), лямбда-функция, регулярное выражение и т. д., чтобы удалить все нечисловые символы из столбца фрейма данных в Python Pandas.
- Используя метод series.str.extract()
- С помощью метода re.sub() и apply()
- С помощью лямбда-функции
- С помощью функции pd.to_numeric
- Заключение
Используя метод series.str.extract()
Метод series.str.extract() используется для извлечения подстрок из серии в библиотеке Python Pandas.
Здесь мы создаем фрейм данных в Python и хотим удалить нечисловые символы в Pandas. Мы можем использовать метод str.extract(), предоставив шаблон регулярного выражения.
Пример:
import pandas as pd
Cities = {
'Name': ['New York', 'California', 'Texas', 'Florida', 'Illinois'],
'Zipcode': ['NY10001', 'CA90210', 'TX77001', 'FL33101', 'IL60601']
}
Cities_df = pd.DataFrame(Cities)
Cities_df['Zipcode'] = Cities_df['Zipcode'].str.extract('(\d+)')
print(Cities_df)
Здесь мы извлекаем числовые символы из столбца кадра данных Python Pandas.
\d — это класс сокращенных символов, используемый только для сопоставления чисел. Это то же самое, что мы используем регулярное выражение как [0-9] в Python, а + позволяет нам сопоставлять одно или несколько указанных выражений в Python.
Cities_df['Zipcode'].str.extract('(\d+)')
Выход:
Name Zipcode 0 New York 10001 1 California 90210 2 Texas 77001 3 Florida 33101 4 Illinois 60601
После выполнения кода в Pycharm результат отображается на снимке экрана ниже.

Примечание. Мы можем использовать astype() для приведения объекта Pandas к указанному типу данных, чтобы мы могли преобразовать тип столбца после удаления нечисловых символов в int в Python.
С помощью метода re.sub() и apply()
Мы можем использовать функцию re.sub() из модуля re и метод apply() для удаления нечисловых символов из Pandas в Python.
Функция re.sub() извлекает цифры из столбца набора данных Pandas.
Пример:
import pandas as pd
import re
def remove_non_numberics(s):
return re.sub('[^0-9]+', '', s)
Employee = {
'Name': ['Chandler', 'Monica', 'Rachel', 'Joey', 'Ross'],
'Zipcode': ['NY10001', 'CA90210', 'TX77001', 'FL33101', 'IL60601']
}
Employee_df = pd.DataFrame(Employee)
Employee_df['Zipcode'] = Employee_df['Zipcode'].apply(remove_non_numberics)
print(Employee_df)
Вывод: функция re.sub() в Python принимает три аргумента: первый — это шаблон, который нужно заменить, второй — строка, которой он будет заменен, а третий — строка, в которой был использован re.sub().
re.sub('[^0-9]+', '', s)
Name Zipcode 0 Chandler 10001 1 Monica 90210 2 Rachel 77001 3 Joey 33101 4 Ross 60601
На снимке экрана ниже представлен вывод после успешной реализации кода в редакторе Pycharm.

С помощью лямбда-функции
Лямбда-функция — это однострочная функция в Python, которую мы можем комбинировать с различными функциями.
В Python мы можем использовать оператор if с методом isdigit(), чтобы проверить, является ли символ цифрой. Мы можем объединить символы, если они являются цифрами, используя метод .join().
Мы будем использовать метод map() для сопоставления новых значений, возвращаемых лямбда-функцией, со старыми значениями столбца в кадре данных.
Вот пример удаления всех нечисловых символов в Pandas:
import pandas as pd
Employee = {
'Name': ['Chandler', 'Monica', 'Rachel'],
'Phone_number': ['(123) 456-7890', '(555) 987-6543', '(111) 222-3333']
}
Employee_df = pd.DataFrame(Employee)
Employee_df['Phone_number'] = Employee_df['Phone_number'].map(lambda i: ''.join([x for x in i if x.isdigit()]))
print(Employee_df)
Выход:
Name Phone_number 0 Chandler 1234567890 1 Monica 5559876543 2 Rachel 1112223333
На снимке экрана ниже показан вывод после выполнения кода редактора Pycharm.

С помощью функции pd.to_numeric
Функция pd.to_numeric из Python Pandas может преобразовывать данные строкового типа или типа объекта в числовые типы, возвращая NaN, если преобразование невозможно. Затем мы можем использовать метод dropna для фильтрации строк, содержащих NaN.
Вот пример удаления нечисловых символов из столбца в кадре данных Pandas в Python:
import pandas as pd
Sales_report = pd.DataFrame({
"Products": ["Kitkat", "Bounty", "Twix", "Mars", "Lindit"],
"sales": ["150.00", "5000", "-", "1000", "10%"]
})
Sales_report["sales"] = pd.to_numeric(Sales_report["sales"], errors="coerce")
Sales_report.dropna(subset=["sales"], inplace=True)
print(Sales_report)
Выход:
Products sales 0 Kitkat 150.0 1 Bounty 5000.0 3 Mars 1000.0
На снимке экрана ниже показан вывод после реализации кода в редакторе Pycharm.

Заключение
Каждый из упомянутых выше методов, например series.str.extract(), re.sub() с функцией Apply, лямбда-функцией и функцией pd.to_numeric() для удаления всех нечисловых символов в кадре данных Pandas в Python.