Как удалить числа из строковых терминов в фрейме данных pandas

У меня есть кадр данных, аналогичный приведенному ниже:

Name    Volume  Value
May21   23      21321
James   12      12311
Adi22   11      4435
Hello   34      32454
Girl90  56      654654

Я хочу, чтобы результат был в формате:

Name    Volume  Value
May     23      21321
James   12      12311
Adi     11      4435
Hello   34      32454
Girl    56      654654

Хотите удалить все числа из столбца Name.

Ближе всего я пришел на уровне ячейки со следующим кодом:

result = ''.join([i for i in df['Name'][1] if not i.isdigit()])

Любая идея, как сделать это лучше на уровне серии/ данных.

Ответ 1

Вы можете применить str.replace к столбцу Name в сочетании с регулярными выражениями:

import pandas as pd

# Create example DataFrame
a = pd.DataFrame.from_dict({'Name': ['May21', 'James', 'Adi22', 'Hello', 'Girl90'], 'Volume': [23, 12, 11, 34, 56], 'Value': [21321, 12311, 4435, 32454, 654654]})

a['Name'] = a['Name'].str.replace('\d+', '')

print(a)

Вывод:

    Name   Value  Volume
0    May   21321      23
1  James   12311      12
2    Adi    4435      11
3  Hello   32454      34
4   Girl  654654      56

В регулярном выражении \d означает "любая цифра", а + означает "один или несколько".

Таким образом, str.replace('\d+', '') означает: "Заменить все возникающие цифры в строках ничем".

Ответ 2

Вы можете сделать это так:

df.Name = df.Name.str.replace('\d+', '')

Проверьте здесь Демо-версию Regex онлайн: https://regex101.com/r/Y6gJny/2

Все, что соответствует шаблону \d+ то есть 1 или более цифр, будет заменено пустой строкой.