Как удалить числа из строковых терминов в фрейме данных 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 или более цифр, будет заменено пустой строкой.